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)) {