You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by wt...@apache.org on 2009/03/04 21:38:44 UTC
svn commit: r750147 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/spring/
test/java/org/apache/camel/component/cxf/
test/resources/org/apache/camel/component/cxf/
Author: wtam
Date: Wed Mar 4 20:38:44 2009
New Revision: 750147
URL: http://svn.apache.org/viewvc?rev=750147&view=rev
Log:
[CAMEL-1421] Cxf Endpoint String bean properites are not merged
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceClassRefTest.java
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/ServiceClassRefTest-context.xml
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java?rev=750147&r1=750146&r2=750147&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java Wed Mar 4 20:38:44 2009
@@ -55,11 +55,17 @@
}
}
+ @SuppressWarnings("unchecked")
@Override
protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) {
if ("properties".equals(name)) {
- Map<?, ?> map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
+ Map map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
+ Map props = getPropertyMap(bean, false);
+ if (props != null) {
+ map.putAll(props);
+ }
bean.addPropertyValue("properties", map);
+
} else if ("binding".equals(name)) {
setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
} else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
@@ -86,7 +92,7 @@
if (org.springframework.util.StringUtils.hasText(val)) {
if (val.startsWith("#")) {
- Map<String, Object> map = getPropertyMap(bean);
+ Map<String, Object> map = getPropertyMap(bean, true);
map.put(propertyName, val);
} else {
bean.addPropertyValue(propertyName, val);
@@ -101,7 +107,7 @@
bean.setLazyInit(false);
// put the bean id into the property map
- Map<String, Object> map = getPropertyMap(bean);
+ Map<String, Object> map = getPropertyMap(bean, true);
map.put("beanId", resolveId(element, bean.getBeanDefinition(), ctx));
}
@@ -124,14 +130,16 @@
}
@SuppressWarnings("unchecked")
- private Map<String, Object> getPropertyMap(BeanDefinitionBuilder bean) {
+ private Map<String, Object> getPropertyMap(BeanDefinitionBuilder bean, boolean lazyInstantiation) {
PropertyValue propertyValue = (PropertyValue)bean.getBeanDefinition().getPropertyValues()
.getPropertyValue("properties");
Map<String, Object> map = null;
if (propertyValue == null) {
- map = new HashMap<String, Object>();
- bean.addPropertyValue("properties", map);
+ if (lazyInstantiation) {
+ map = new HashMap<String, Object>();
+ bean.addPropertyValue("properties", map);
+ }
} else {
map = (Map<String, Object>)propertyValue.getValue();
}
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceClassRefTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceClassRefTest.java?rev=750147&r1=750146&r2=750147&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceClassRefTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceClassRefTest.java Wed Mar 4 20:38:44 2009
@@ -33,8 +33,15 @@
protected CamelContext context;
public void testServiceClassNameCreatedByRefNotation() throws Exception {
+ // verify the '#' notation works
CxfEndpoint endpoint = context.getEndpoint("cxf:bean:fromEndpoint", CxfEndpoint.class);
assertEquals("org.apache.camel.component.cxf.HelloServiceImpl", endpoint.getServiceClass());
+ assertEquals(DataFormat.POJO, endpoint.getDataFormat());
+
+ // verify values in bean properties are ok
+ endpoint = context.getEndpoint("cxf:bean:fromEndpointWithProps", CxfEndpoint.class);
+ assertEquals(DataFormat.PAYLOAD, endpoint.getDataFormat());
}
+
}
Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/ServiceClassRefTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/ServiceClassRefTest-context.xml?rev=750147&r1=750146&r2=750147&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/ServiceClassRefTest-context.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/ServiceClassRefTest-context.xml Wed Mar 4 20:38:44 2009
@@ -14,29 +14,36 @@
License.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://camel.apache.org/schema/cxfEndpoint"
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxfEndpoint"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://camel.apache.org/schema/cxfEndpoint http://camel.apache.org/schema/cxf/camel-cxf.xsd
">
- <bean id="myServiceClass" class="org.apache.camel.component.cxf.HelloServiceImpl"/>
-
- <cxf:cxfEndpoint id="fromEndpoint" address="http://localhost:9000/helloworld"
+ <bean id="myServiceClass" class="org.apache.camel.component.cxf.HelloServiceImpl" />
+
+ <cxf:cxfEndpoint id="fromEndpointWithProps" address="http://localhost:9004/helloworld"
+ serviceClass="#myServiceClass">
+ <cxf:properties>
+ <entry key="dataFormat" value="PAYLOAD" />
+ </cxf:properties>
+ </cxf:cxfEndpoint>
+
+ <cxf:cxfEndpoint id="fromEndpoint" address="http://localhost:9003/helloworld"
serviceClass="#myServiceClass" />
-
+
<cxf:cxfEndpoint id="toEndpoint" address="http://localhost:9002/helloworld"
serviceClass="org.apache.camel.component.cxf.HelloService" />
-
- <camelContext id="camelContext"
- xmlns="http://camel.apache.org/schema/spring">
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
<route>
- <from uri="cxf:bean:fromEndpoint"/>
- <to uri="cxf:bean:toEndpoint"/>
+ <from uri="cxf:bean:fromEndpoint" />
+ <to uri="cxf:bean:toEndpoint" />
+ </route>
+ <route>
+ <from uri="cxf:bean:fromEndpointWithProps" />
+ <to uri="cxf:bean:toEndpoint?dataFormat=PAYLOAD" />
</route>
</camelContext>
-
</beans>
\ No newline at end of file