You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/12/01 21:04:42 UTC

svn commit: r1209216 - in /cxf/branches/2.4.x-fixes: ./ common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java

Author: dkulp
Date: Thu Dec  1 20:04:42 2011
New Revision: 1209216

URL: http://svn.apache.org/viewvc?rev=1209216&view=rev
Log:
Merged revisions 1209212 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1209212 | dkulp | 2011-12-01 14:48:09 -0500 (Thu, 01 Dec 2011) | 2 lines
  
  [CXF-3947] Make sure the bus names aren't lost when parsing beans with
  bus properties
........

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
    cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java?rev=1209216&r1=1209215&r2=1209216&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java (original)
+++ cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java Thu Dec  1 20:04:42 2011
@@ -40,6 +40,7 @@ import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.jaxb.JAXBContextCache;
 import org.apache.cxf.jaxb.JAXBContextCache.CachedContextAndSchemas;
@@ -51,12 +52,13 @@ import org.springframework.beans.factory
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.BeanDefinitionParserDelegate;
 import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.util.StringUtils;
 
 public abstract class AbstractBeanDefinitionParser 
     extends org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser {
     public static final String WIRE_BUS_ATTRIBUTE = AbstractBeanDefinitionParser.class.getName() + ".wireBus";
     public static final String WIRE_BUS_NAME = AbstractBeanDefinitionParser.class.getName() + ".wireBusName";
+    public static final String WIRE_BUS_HANDLER 
+        = "org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor";
     private static final Logger LOG = LogUtils.getL7dLogger(AbstractBeanDefinitionParser.class);
     
     private Class beanClass;
@@ -95,9 +97,13 @@ public abstract class AbstractBeanDefini
                 bean.addDependsOn(val);
             } else if (!"id".equals(name) && !"name".equals(name) && isAttribute(pre, name)) {
                 if ("bus".equals(name)) {                                     
-                    if (val != null && val.trim().length() > 0 
-                        && ctx.getRegistry().containsBeanDefinition(val)) {
-                        bean.addPropertyReference(name, val);
+                    if (val != null && val.trim().length() > 0) {
+                        if (ctx.getRegistry().containsBeanDefinition(val)) {
+                            bean.addPropertyReference(name, val);
+                        } else {
+                            addBusWiringAttribute(bean, BusWiringType.PROPERTY,
+                                                  val, ctx);
+                        }
                         setBus = true;                         
                     }
                 } else {
@@ -214,17 +220,28 @@ public abstract class AbstractBeanDefini
 
     protected void addBusWiringAttribute(BeanDefinitionBuilder bean, 
                                          BusWiringType type) {
-        addBusWiringAttribute(bean, type, null);
+        addBusWiringAttribute(bean, type, null, null);
     }
                                          
     protected void addBusWiringAttribute(BeanDefinitionBuilder bean, 
                                          BusWiringType type,
-                                         String busName) {
+                                         String busName,
+                                         ParserContext ctx) {
         LOG.fine("Adding " + WIRE_BUS_ATTRIBUTE + " attribute " + type + " to bean " + bean);
         bean.getRawBeanDefinition().setAttribute(WIRE_BUS_ATTRIBUTE, type);
-        if (busName != null) {
+        if (!StringUtils.isEmpty(busName)) {
+            if (busName.charAt(0) == '#') {
+                busName = busName.substring(1);
+            }
             bean.getRawBeanDefinition().setAttribute(WIRE_BUS_NAME, busName); 
         }
+        
+        if (ctx != null 
+            && !ctx.getRegistry().containsBeanDefinition(WIRE_BUS_HANDLER)) {
+            BeanDefinitionBuilder b 
+                = BeanDefinitionBuilder.rootBeanDefinition(WIRE_BUS_HANDLER);
+            ctx.getRegistry().registerBeanDefinition(WIRE_BUS_HANDLER, b.getBeanDefinition());
+        }
     }
     
     protected void mapElementToJaxbProperty(Element parent, 
@@ -406,7 +423,7 @@ public abstract class AbstractBeanDefini
             return;
         }
         
-        if (StringUtils.hasText(val)) {
+        if (!StringUtils.isEmpty(val)) {
             if (val.startsWith("#")) {
                 bean.addPropertyReference(propertyName, val.substring(1));
             } else {

Modified: cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java?rev=1209216&r1=1209215&r2=1209216&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java (original)
+++ cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java Thu Dec  1 20:04:42 2011
@@ -60,9 +60,9 @@ public class BusDefinitionParser extends
         }
         element.removeAttribute("name");
         if (StringUtils.isEmpty(bus)) {
-            addBusWiringAttribute(bean, BusWiringType.PROPERTY);
+            addBusWiringAttribute(bean, BusWiringType.PROPERTY, null, ctx);
         } else {
-            addBusWiringAttribute(bean, BusWiringType.PROPERTY, bus);
+            addBusWiringAttribute(bean, BusWiringType.PROPERTY, bus, ctx);
         }
         String id = element.getAttribute("id");
         if (!StringUtils.isEmpty(id)) {