You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2016/07/11 00:14:18 UTC
[13/33] cxf git commit: Updating the jaxrs scan server to optionally
look for non-component classes and updated the client enablers to scan for
component providers
Updating the jaxrs scan server to optionally look for non-component classes and updated the client enablers to scan for component providers
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3358e04e
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3358e04e
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3358e04e
Branch: refs/heads/master-jaxrs-2.1
Commit: 3358e04e0e74d29386ba177b410b40a909b9fff7
Parents: 120f997
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Thu Jul 7 13:59:38 2016 +0100
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Thu Jul 7 13:59:38 2016 +0100
----------------------------------------------------------------------
.../rs/service/SampleRestApplication.java | 2 +-
.../src/main/resources/application.properties | 1 +
.../rs/service/SampleScanRestApplication.java | 4 ---
.../src/main/resources/application.yml | 1 +
.../AbstractSpringComponentScanServer.java | 37 ++++++++++++++++++--
.../AbstractJaxRsClientConfiguration.java | 20 ++++++++++-
.../client/spring/WebClientConfiguration.java | 17 ++++++++-
7 files changed, 73 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java b/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java
index 8839c1b..2bc20df 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java
@@ -63,7 +63,7 @@ public class SampleRestApplication {
@Override
public void run(String... runArgs) throws Exception {
- System.out.println(webClient.accept("text/plain").path("sayHello/ApacheCxfWebClientUser").get(String.class));
+ System.out.println(webClient.path("sayHello/ApacheCxfWebClientUser").get(String.class));
}
};
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/resources/application.properties
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/resources/application.properties b/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/resources/application.properties
index 955d403..90e32e8 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/resources/application.properties
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/resources/application.properties
@@ -1,3 +1,4 @@
cxf.path=/services/helloservice
cxf.jaxrs.client.address=http://localhost:8080/services/helloservice
+cxf.jaxrs.client.headers.accept=text/plain
cxf.jaxrs.client.classes-scan-packages=sample.rs.service
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/service/SampleScanRestApplication.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/service/SampleScanRestApplication.java b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/service/SampleScanRestApplication.java
index 2cc9e80..e23ab95 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/service/SampleScanRestApplication.java
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/service/SampleScanRestApplication.java
@@ -36,10 +36,6 @@ public class SampleScanRestApplication {
}
@Bean
- public Swagger2Feature swaggerFeature(ApplicationContext context) {
- return new Swagger2Feature();
- }
- @Bean
@ExportMetricWriter
public MetricWriter metricWriter() {
return new MetricWriter() {
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
index 3643f09..b9582e6 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
@@ -8,6 +8,7 @@ cxf:
service-list-path: /info
jaxrs:
component-scan: true
+ classes-scan-packages: org.apache.cxf.jaxrs.swagger
eureka:
client:
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/AbstractSpringComponentScanServer.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/AbstractSpringComponentScanServer.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/AbstractSpringComponentScanServer.java
index 927c5e2..e1e6e21 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/AbstractSpringComponentScanServer.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/AbstractSpringComponentScanServer.java
@@ -19,18 +19,24 @@
package org.apache.cxf.jaxrs.spring;
import java.lang.annotation.Annotation;
+import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import javax.ws.rs.Path;
import javax.ws.rs.ext.Provider;
import org.apache.cxf.annotations.Provider.Scope;
+import org.apache.cxf.common.util.ClasspathScanner;
+import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.feature.Feature;
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
import org.apache.cxf.message.Message;
+import org.apache.cxf.service.factory.ServiceConstructionException;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;
@@ -42,12 +48,16 @@ import org.springframework.context.annotation.FilterType;
)
public abstract class AbstractSpringComponentScanServer extends AbstractSpringConfigurationFactory {
+ @Value("${cxf.jaxrs.classes-scan-packages:''}")
+ private String classesScanPackages;
+
private List<ResourceProvider> resourceProviders = new LinkedList<ResourceProvider>();
private List<Object> jaxrsProviders = new LinkedList<Object>();
private List<Feature> cxfFeatures = new LinkedList<Feature>();
private List<Interceptor<? extends Message>> cxfInInterceptors = new LinkedList<Interceptor<?>>();
private List<Interceptor<? extends Message>> cxfOutInterceptors = new LinkedList<Interceptor<?>>();
private Class<? extends Annotation> serviceAnnotation;
+
protected AbstractSpringComponentScanServer() {
}
@@ -67,13 +77,33 @@ public abstract class AbstractSpringComponentScanServer extends AbstractSpringCo
resourceProviders.add(resourceFactory);
} else if (checkJaxrsProviders && isAnnotationAvailable(beanName, Provider.class)
&& matchesServiceAnnotation(beanName)) {
- jaxrsProviders.add(applicationContext.getBean(beanName));
+ jaxrsProviders.add(getProviderBean(beanName));
} else if (checkCxfProviders && isAnnotationAvailable(beanName,
org.apache.cxf.annotations.Provider.class) && matchesServiceAnnotation(beanName)) {
- addCxfProvider(applicationContext.getBean(beanName));
+ addCxfProvider(getProviderBean(beanName));
}
}
+ if (!StringUtils.isEmpty(classesScanPackages)) {
+ try {
+ final Map< Class< ? extends Annotation >, Collection< Class< ? > > > classes =
+ ClasspathScanner.findClasses(classesScanPackages, Provider.class,
+ org.apache.cxf.annotations.Provider.class);
+
+ jaxrsProviders.addAll(JAXRSServerFactoryBeanDefinitionParser
+ .createBeansFromDiscoveredClasses(super.applicationContext, classes.get(Provider.class), null));
+ List<Object> cxfProviders = JAXRSServerFactoryBeanDefinitionParser
+ .createBeansFromDiscoveredClasses(super.applicationContext,
+ classes.get(org.apache.cxf.annotations.Provider.class),
+ null);
+ for (Object cxfProvider : cxfProviders) {
+ addCxfProvider(cxfProvider);
+ }
+ } catch (Exception ex) {
+ throw new ServiceConstructionException(ex);
+ }
+ }
+
factory.setResourceProviders(getResourceProviders());
factory.setProviders(getJaxrsProviders());
factory.setFeatures(getFeatures());
@@ -82,6 +112,9 @@ public abstract class AbstractSpringComponentScanServer extends AbstractSpringCo
}
+ private Object getProviderBean(String beanName) {
+ return applicationContext.getBean(beanName);
+ }
protected void addCxfProvider(Object bean) {
org.apache.cxf.annotations.Provider ann =
bean.getClass().getAnnotation(org.apache.cxf.annotations.Provider.class);
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/AbstractJaxRsClientConfiguration.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/AbstractJaxRsClientConfiguration.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/AbstractJaxRsClientConfiguration.java
index 87931f8..560d45e 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/AbstractJaxRsClientConfiguration.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/AbstractJaxRsClientConfiguration.java
@@ -18,6 +18,8 @@
*/
package org.apache.cxf.jaxrs.client.spring;
+import javax.ws.rs.ext.Provider;
+
import org.apache.cxf.Bus;
import org.apache.cxf.jaxrs.client.Client;
import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
@@ -27,9 +29,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.Import;
@Import(JaxRsConfig.class)
+@ComponentScan(
+ includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,
+ value = {Provider.class})
+ )
public abstract class AbstractJaxRsClientConfiguration implements ApplicationContextAware {
protected ApplicationContext context;
@@ -37,17 +45,27 @@ public abstract class AbstractJaxRsClientConfiguration implements ApplicationCon
private Bus bus;
@Value("${cxf.jaxrs.client.address}")
private String address;
+ @Value("${cxf.jaxrs.client.thread-safe:false}")
+ private Boolean threadSafe;
+
protected Client createClient() {
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setBus(bus);
bean.setAddress(address);
+ bean.setThreadSafe(threadSafe);
setJaxrsResources(bean);
+
+ for (String beanName : context.getBeanDefinitionNames()) {
+ if (context.findAnnotationOnBean(beanName, Provider.class) != null) {
+ bean.setProvider(context.getBean(beanName));
+ }
+ }
+
return bean.create();
}
protected abstract void setJaxrsResources(JAXRSClientFactoryBean factory);
-
@Override
public void setApplicationContext(ApplicationContext ac) throws BeansException {
http://git-wip-us.apache.org/repos/asf/cxf/blob/3358e04e/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/WebClientConfiguration.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/WebClientConfiguration.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/WebClientConfiguration.java
index 72a5164..ccac861 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/WebClientConfiguration.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/WebClientConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.cxf.jaxrs.client.spring;
import java.lang.annotation.Annotation;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.ext.Provider;
@@ -35,8 +36,12 @@ import org.springframework.context.annotation.Bean;
public class WebClientConfiguration extends AbstractJaxRsClientConfiguration {
- @Value("${cxf.jaxrs.client.classes-scan-packages:''")
+ @Value("${cxf.jaxrs.client.classes-scan-packages:''}")
private String scanPackages;
+ @Value("${cxf.jaxrs.client.headers.accept:''}")
+ private String accept;
+ @Value("${cxf.jaxrs.client.headers.content-type:''}")
+ private String contentType;
@Bean
protected Client jaxRsWebClient() {
@@ -58,6 +63,16 @@ public class WebClientConfiguration extends AbstractJaxRsClientConfiguration {
throw new ServiceConstructionException(ex);
}
}
+ Map<String, String> extraHeaders = new HashMap<String, String>();
+ if (!StringUtils.isEmpty(accept)) {
+ extraHeaders.put("Accept", accept);
+ }
+ if (!StringUtils.isEmpty(contentType)) {
+ extraHeaders.put("Content-Type", contentType);
+ }
+ if (!extraHeaders.isEmpty()) {
+ factory.setHeaders(extraHeaders);
+ }
}