This is an automated email from the ASF dual-hosted git repository. johndament pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 09dad95fd591d52b8ee69aff21ff65b4d8e0c2f5 Author: John D. Ament <[email protected]> AuthorDate: Sat Dec 16 15:26:29 2017 -0500 [CXF-7579] Adding handling for disabling mapper. Re-enable unit tests since this is working again. --- .../microprofile/client/CxfTypeSafeClientBuilder.java | 2 +- .../client/MicroProfileClientConfigurableImpl.java | 19 +++++++++++++++++++ .../client/MicroProfileClientFactoryBean.java | 10 +++++++--- .../client/CxfTypeSafeClientBuilderTest.java | 4 ++-- systests/microprofile/client/weld/pom.xml | 3 ++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilder.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilder.java index 40f5cc9..d895586 100644 --- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilder.java +++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilder.java @@ -55,7 +55,7 @@ public class CxfTypeSafeClientBuilder implements RestClientBuilder, Configurable } } } - MicroProfileClientFactoryBean bean = new MicroProfileClientFactoryBean(getConfiguration(), + MicroProfileClientFactoryBean bean = new MicroProfileClientFactoryBean(configImpl, baseUri, aClass); return bean.create(aClass); } diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientConfigurableImpl.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientConfigurableImpl.java index 9a6ccbc..ec28479 100644 --- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientConfigurableImpl.java +++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientConfigurableImpl.java @@ -18,6 +18,7 @@ */ package org.apache.cxf.microprofile.client; +import java.util.Optional; import javax.ws.rs.RuntimeType; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.ClientResponseFilter; @@ -29,6 +30,8 @@ import javax.ws.rs.ext.ReaderInterceptor; import javax.ws.rs.ext.WriterInterceptor; import org.apache.cxf.jaxrs.impl.ConfigurableImpl; import org.apache.cxf.jaxrs.impl.ConfigurationImpl; +import org.eclipse.microprofile.config.Config; +import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper; public class MicroProfileClientConfigurableImpl<C extends Configurable<C>> @@ -37,6 +40,7 @@ public class MicroProfileClientConfigurableImpl<C extends Configurable<C>> static final Class<?>[] CONTRACTS = new Class<?>[] {ClientRequestFilter.class, ClientResponseFilter.class, ReaderInterceptor.class, WriterInterceptor.class, MessageBodyWriter.class, MessageBodyReader.class, ResponseExceptionMapper.class}; + private static final String CONFIG_KEY_DISABLE_MAPPER = "microprofile.rest.client.disable.default.mapper"; public MicroProfileClientConfigurableImpl(C configurable) { this(configurable, null); @@ -47,4 +51,19 @@ public class MicroProfileClientConfigurableImpl<C extends Configurable<C>> CONTRACTS, config == null ? new ConfigurationImpl(RuntimeType.CLIENT) : new ConfigurationImpl(config, CONTRACTS)); } + + boolean isDefaultExceptionMapperDisabled() { + Object prop = getConfiguration().getProperty(CONFIG_KEY_DISABLE_MAPPER); + if (prop instanceof Boolean) { + return (Boolean)prop; + } else { + Config config = ConfigProvider.getConfig(); + Optional<Boolean> optionalValue = config.getOptionalValue(CONFIG_KEY_DISABLE_MAPPER, + Boolean.class); + if (optionalValue.isPresent()) { + return optionalValue.get(); + } + } + return false; + } } diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java index f01fea8..58cdfb3 100644 --- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java +++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java @@ -36,6 +36,7 @@ import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean; import org.apache.cxf.jaxrs.model.ClassResourceInfo; import org.apache.cxf.jaxrs.model.FilterProviderInfo; import org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl; +import org.eclipse.microprofile.rest.client.RestClientBuilder; public class MicroProfileClientFactoryBean extends JAXRSClientFactoryBean { private final ContractComparator comparator; @@ -44,16 +45,19 @@ public class MicroProfileClientFactoryBean extends JAXRSClientFactoryBean { private ClassLoader proxyLoader; private boolean inheritHeaders; - public MicroProfileClientFactoryBean(Configuration configuration, String baseUri, Class<?> aClass) { + public MicroProfileClientFactoryBean(MicroProfileClientConfigurableImpl<RestClientBuilder> configuration, + String baseUri, Class<?> aClass) { super(); - this.configuration = configuration; + this.configuration = configuration.getConfiguration(); this.comparator = new ContractComparator(this); super.setAddress(baseUri); super.setServiceClass(aClass); super.setProviderComparator(comparator); registeredProviders = new ArrayList<>(); registeredProviders.addAll(processProviders()); - registeredProviders.add(new DefaultResponseExceptionMapper()); + if (!configuration.isDefaultExceptionMapperDisabled()) { + registeredProviders.add(new DefaultResponseExceptionMapper()); + } super.setProviders(registeredProviders); } diff --git a/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilderTest.java b/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilderTest.java index be37b73..5ac4b79 100644 --- a/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilderTest.java +++ b/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/CxfTypeSafeClientBuilderTest.java @@ -34,10 +34,8 @@ import org.eclipse.microprofile.rest.client.tck.providers.TestParamConverterProv import org.eclipse.microprofile.rest.client.tck.providers.TestReaderInterceptor; import org.eclipse.microprofile.rest.client.tck.providers.TestWriterInterceptor; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; -@Ignore public class CxfTypeSafeClientBuilderTest extends Assert { @Test @@ -56,6 +54,7 @@ public class CxfTypeSafeClientBuilderTest extends Assert { @Test public void testConfigPriorityOverrides() throws Exception { RestClientBuilder builder = RestClientBuilder.newBuilder(); + builder.property("microprofile.rest.client.disable.default.mapper", true); builder.register(HighPriorityClientReqFilter.class); // annotation priority of 10 builder.register(LowPriorityClientReqFilter.class, 5); // overriding priority to be 5 (preferred) @@ -78,6 +77,7 @@ public class CxfTypeSafeClientBuilderTest extends Assert { .register(TestParamConverterProvider.class) .register(TestReaderInterceptor.class) .register(TestWriterInterceptor.class) + .property("microprofile.rest.client.disable.default.mapper", true) .baseUrl(new URL("http://localhost/null")) .build(InterfaceWithoutProvidersDefined.class); diff --git a/systests/microprofile/client/weld/pom.xml b/systests/microprofile/client/weld/pom.xml index 04c7c56..dff4f0d 100644 --- a/systests/microprofile/client/weld/pom.xml +++ b/systests/microprofile/client/weld/pom.xml @@ -53,7 +53,7 @@ <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-weld-embedded</artifactId> - <version>2.0.0.Beta5</version> + <version>2.0.0.Final</version> <scope>test</scope> </dependency> <dependency> @@ -120,6 +120,7 @@ <dependency>org.eclipse.microprofile.rest.client:microprofile-rest-client-tck</dependency> </dependenciesToScan> <excludes> + <exclude>org.eclipse.microprofile.rest.client.tck.CustomHttpMethodTest</exclude> <exclude>org.eclipse.microprofile.rest.client.tck.InvokeWithJsonPProviderTest</exclude> <exclude>org.eclipse.microprofile.rest.client.tck.InvalidInterfaceTest</exclude> </excludes> -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
