Repository: cxf
Updated Branches:
  refs/heads/master f563a0576 -> aecc29f4d


[CXF-6003] Trying to create the beans from discovered classes with the auto 
wire support, the patch from Hesam Talebi applied


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/aecc29f4
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/aecc29f4
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/aecc29f4

Branch: refs/heads/master
Commit: aecc29f4d1bde9a50c91f3612f2c0049ed594f03
Parents: f563a05
Author: Sergey Beryozkin <sberyoz...@talend.com>
Authored: Mon Sep 15 18:07:36 2014 +0100
Committer: Sergey Beryozkin <sberyoz...@talend.com>
Committed: Mon Sep 15 18:07:36 2014 +0100

----------------------------------------------------------------------
 .../spring/JAXRSServerFactoryBeanDefinitionParser.java | 10 +++++++++-
 .../spring/JAXRSClientFactoryBeanDefinitionParser.java | 13 +++++++++++--
 2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/aecc29f4/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
index ee68a61..40b6286 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
@@ -44,6 +44,7 @@ import org.apache.cxf.jaxrs.utils.ResourceUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
@@ -208,9 +209,16 @@ public class JAXRSServerFactoryBeanDefinitionParser 
extends AbstractBeanDefiniti
             }
         }        
         private List<Object> createBeans(Collection<Class<?>> classes) {
+            AutowireCapableBeanFactory beanFactory = 
context.getAutowireCapableBeanFactory();
             final List< Object > providers = new ArrayList< Object >();
             for (final Class< ? > clazz: classes) {
-                
providers.add(context.getAutowireCapableBeanFactory().createBean(clazz));
+                Object bean = null;
+                try {
+                    bean = beanFactory.createBean(clazz, 
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
+                } catch (Exception ex) {
+                    bean = beanFactory.createBean(clazz);
+                }
+                providers.add(bean);
             }
             return providers;
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/aecc29f4/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/JAXRSClientFactoryBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/JAXRSClientFactoryBeanDefinitionParser.java
 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/JAXRSClientFactoryBeanDefinitionParser.java
index 14b7678..661d621 100644
--- 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/JAXRSClientFactoryBeanDefinitionParser.java
+++ 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spring/JAXRSClientFactoryBeanDefinitionParser.java
@@ -40,6 +40,7 @@ import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.springframework.context.ApplicationContext;
@@ -130,9 +131,17 @@ public class JAXRSClientFactoryBeanDefinitionParser 
extends AbstractFactoryBeanD
                     if (classes.get(Path.class).size() > 1) {
                         throw new NoUniqueBeanDefinitionException(Path.class, 
classes.get(Path.class).size(), 
                             "More than one service class (@Path) has been 
discovered");
-                    } else {                      
+                    } else {
+                        AutowireCapableBeanFactory beanFactory = 
ctx.getAutowireCapableBeanFactory();
                         for (final Class< ? > providerClass: 
classes.get(Provider.class)) {
-                            
setProvider(ctx.getAutowireCapableBeanFactory().createBean(providerClass));
+                            Object bean = null;
+                            try {
+                                bean = beanFactory.createBean(providerClass, 
+                                                       
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
+                            } catch (Exception ex) {
+                                bean = beanFactory.createBean(providerClass);
+                            }
+                            setProvider(bean);
                         }
                         
                         for (final Class< ? > serviceClass: 
classes.get(Path.class)) {                        

Reply via email to