下面列出了javax.ws.rs.RuntimeType#CLIENT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Test
public void testInvalidConstraintOnProvider() {
TestHandler handler = new TestHandler();
LogUtils.getL7dLogger(ConfigurableImpl.class).addHandler(handler);
try (ConfigurableImpl<Client> configurable
= new ConfigurableImpl<>(createClientProxy(), RuntimeType.CLIENT)) {
Configuration config = configurable.getConfiguration();
configurable.register(ClientFilterConstrainedToServer.class);
assertEquals(0, config.getInstances().size());
for (String message : handler.messages) {
if (message.startsWith("WARN") && message.contains("cannot be registered in ")) {
return; // success
}
}
}
fail("did not log expected message");
}
@Test
public void testChecksConstrainedToAnnotationDuringRegistration() {
TestHandler handler = new TestHandler();
LogUtils.getL7dLogger(ConfigurableImpl.class).addHandler(handler);
try (ConfigurableImpl<Client> configurable
= new ConfigurableImpl<>(createClientProxy(), RuntimeType.CLIENT)) {
Configuration config = configurable.getConfiguration();
configurable.register(ContainerResponseFilterImpl.class);
assertEquals(0, config.getInstances().size());
for (String message : handler.messages) {
if (message.startsWith("WARN") && message.contains("Null, empty or invalid contracts specified")) {
return; // success
}
}
}
fail("did not log expected message");
}
public void initializeResteasyProviderFactory(RuntimeValue<InjectorFactory> ifc, boolean useBuiltIn,
Set<String> providersToRegister,
Set<String> contributedProviders) {
ResteasyProviderFactory clientProviderFactory = new ResteasyProviderFactoryImpl(RuntimeType.CLIENT,
new ResteasyProviderFactoryImpl()) {
@Override
public RuntimeType getRuntimeType() {
return RuntimeType.CLIENT;
}
@Override
public InjectorFactory getInjectorFactory() {
return ifc.getValue();
}
};
if (useBuiltIn) {
RegisterBuiltin.register(clientProviderFactory);
registerProviders(clientProviderFactory, contributedProviders, false);
} else {
providersToRegister.removeAll(contributedProviders);
registerProviders(clientProviderFactory, providersToRegister, true);
registerProviders(clientProviderFactory, contributedProviders, false);
}
RestClientBuilderImpl.setProviderFactory(clientProviderFactory);
providerFactory = clientProviderFactory;
}
private boolean checkConstraints(Object provider) {
Class<?> providerClass = provider.getClass();
ConstrainedTo providerConstraint = providerClass.getAnnotation(ConstrainedTo.class);
if (providerConstraint != null) {
RuntimeType currentRuntime = config.getRuntimeType();
RuntimeType providerRuntime = providerConstraint.value();
// need to check (1) whether the registration is occurring in the specified runtime type
// and (2) does the provider implement an invalid interface based on the constrained runtime type
if (!providerRuntime.equals(currentRuntime)) {
LOG.warning("Provider " + provider + " cannot be registered in this " + currentRuntime
+ " runtime because it is constrained to " + providerRuntime + " runtimes.");
return false;
}
Class<?>[] restrictedInterfaces = RuntimeType.CLIENT.equals(providerRuntime) ? RESTRICTED_CLASSES_IN_CLIENT
: RESTRICTED_CLASSES_IN_SERVER;
for (Class<?> restrictedContract : restrictedInterfaces) {
if (restrictedContract.isAssignableFrom(providerClass)) {
RuntimeType opposite = RuntimeType.CLIENT.equals(providerRuntime) ? RuntimeType.SERVER
: RuntimeType.CLIENT;
LOG.warning("Provider " + providerClass.getName() + " is invalid - it is constrained to "
+ providerRuntime + " runtimes but implements a " + opposite + " interface ");
return false;
}
}
}
return true;
}
@Test
public void testServerFilterContractsOnClientIsRejected() {
try (ConfigurableImpl<Client> configurable
= new ConfigurableImpl<>(createClientProxy(), RuntimeType.CLIENT)) {
Configuration config = configurable.getConfiguration();
configurable.register(TestFilter.class);
Map<Class<?>, Integer> contracts = config.getContracts(TestFilter.class);
assertTrue(contracts.containsKey(ClientRequestFilter.class));
assertTrue(contracts.containsKey(ClientResponseFilter.class));
assertFalse(contracts.containsKey(ContainerRequestFilter.class));
assertFalse(contracts.containsKey(ContainerResponseFilter.class));
}
}
@Test
public void testClientFilterWithNestedInterfacesIsAccepted() {
try (ConfigurableImpl<Client> configurable
= new ConfigurableImpl<>(createClientProxy(), RuntimeType.CLIENT)) {
Configuration config = configurable.getConfiguration();
configurable.register(NestedInterfaceTestFilter.class);
Map<Class<?>, Integer> contracts = config.getContracts(NestedInterfaceTestFilter.class);
assertTrue(contracts.containsKey(ClientRequestFilter.class));
assertTrue(contracts.containsKey(ClientResponseFilter.class));
}
}
@Override
public ClientBuilder withConfig(Configuration cfg) {
if (cfg.getRuntimeType() != RuntimeType.CLIENT) {
throw new IllegalArgumentException();
}
configImpl = new ClientConfigurableImpl<>(this, cfg);
return this;
}
public MicroProfileClientConfigurableImpl(C configurable, Configuration config) {
super(configurable, config == null ? new ConfigurationImpl(RuntimeType.CLIENT)
: new ConfigurationImpl(config));
}
public ClientConfigurableImpl(C configurable, Configuration config) {
super(configurable,
config == null ? new ConfigurationImpl(RuntimeType.CLIENT)
: new ConfigurationImpl(config));
}