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/02 20:59:45 UTC
svn commit: r1209672 - in /cxf/trunk:
common/common/src/main/java/org/apache/cxf/configuration/spring/
rt/core/src/main/java/org/apache/cxf/bus/spring/
rt/core/src/main/java/org/apache/cxf/configuration/blueprint/
rt/frontend/jaxws/src/test/java/org/ap...
Author: dkulp
Date: Fri Dec 2 19:59:44 2011
New Revision: 1209672
URL: http://svn.apache.org/viewvc?rev=1209672&view=rev
Log:
[CXF-3951] If the bus attibute points to an undefined bus, make sure
spring or blueprint throws an exception.
Added:
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml (with props)
Modified:
cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusWiringBeanFactoryPostProcessor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java?rev=1209672&r1=1209671&r2=1209672&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java Fri Dec 2 19:59:44 2011
@@ -57,6 +57,8 @@ public abstract class AbstractBeanDefini
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_CREATE
+ = AbstractBeanDefinitionParser.class.getName() + ".wireBusCreate";
public static final String WIRE_BUS_HANDLER
= "org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor";
private static final Logger LOG = LogUtils.getL7dLogger(AbstractBeanDefinitionParser.class);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java?rev=1209672&r1=1209671&r2=1209672&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusDefinitionParser.java Fri Dec 2 19:59:44 2011
@@ -63,6 +63,7 @@ public class BusDefinitionParser extends
addBusWiringAttribute(bean, BusWiringType.PROPERTY, null, ctx);
} else {
addBusWiringAttribute(bean, BusWiringType.PROPERTY, bus, ctx);
+ bean.getRawBeanDefinition().setAttribute(WIRE_BUS_CREATE, Boolean.TRUE);
}
String id = element.getAttribute("id");
if (!StringUtils.isEmpty(id)) {
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusWiringBeanFactoryPostProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusWiringBeanFactoryPostProcessor.java?rev=1209672&r1=1209671&r2=1209672&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusWiringBeanFactoryPostProcessor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/bus/spring/BusWiringBeanFactoryPostProcessor.java Fri Dec 2 19:59:44 2011
@@ -66,8 +66,9 @@ public class BusWiringBeanFactoryPostPro
busName = n;
}
private static Bus getBusForName(String name,
- ApplicationContext context) {
- if (!context.containsBean(name)) {
+ ApplicationContext context,
+ boolean create) {
+ if (!context.containsBean(name) && (create || Bus.DEFAULT_BUS_ID.equals(name))) {
SpringBus b = new SpringBus();
b.setApplicationContext(context);
ConfigurableApplicationContext cctx = (ConfigurableApplicationContext)context;
@@ -76,8 +77,9 @@ public class BusWiringBeanFactoryPostPro
return context.getBean(name, Bus.class);
}
private Object getBusForName(String name,
- ConfigurableListableBeanFactory factory) {
- if (!factory.containsBeanDefinition(name)) {
+ ConfigurableListableBeanFactory factory,
+ boolean create) {
+ if (!factory.containsBeanDefinition(name) && (create || Bus.DEFAULT_BUS_ID.equals(name))) {
DefaultListableBeanFactory df = (DefaultListableBeanFactory)factory;
df.registerBeanDefinition(name,
new RootBeanDefinition(SpringBus.class));
@@ -88,7 +90,7 @@ public class BusWiringBeanFactoryPostPro
public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
Object inject = bus;
if (inject == null) {
- inject = getBusForName(Bus.DEFAULT_BUS_ID, factory);
+ inject = getBusForName(Bus.DEFAULT_BUS_ID, factory, true);
} else {
if (!factory.containsBeanDefinition(Bus.DEFAULT_BUS_ID)
&& !factory.containsSingleton(Bus.DEFAULT_BUS_ID)) {
@@ -103,15 +105,18 @@ public class BusWiringBeanFactoryPostPro
continue;
}
String busname = (String)beanDefinition.getAttribute(AbstractBeanDefinitionParser.WIRE_BUS_NAME);
+ Boolean create = (Boolean)beanDefinition
+ .getAttribute(AbstractBeanDefinitionParser.WIRE_BUS_CREATE);
Object inj = inject;
if (busname != null) {
if (bus != null) {
continue;
}
- inj = getBusForName(busname, factory);
+ inj = getBusForName(busname, factory, create == null ? false : create);
}
beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_BUS_NAME);
beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_BUS_ATTRIBUTE);
+ beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_BUS_CREATE);
if (BusWiringType.PROPERTY == type) {
beanDefinition.getPropertyValues()
.addPropertyValue("bus", inj);
@@ -172,7 +177,7 @@ public class BusWiringBeanFactoryPostPro
public static Bus addDefaultBus(ApplicationContext ctx) {
if (!ctx.containsBean(Bus.DEFAULT_BUS_ID)) {
- Bus b = getBusForName(Bus.DEFAULT_BUS_ID, ctx);
+ Bus b = getBusForName(Bus.DEFAULT_BUS_ID, ctx, true);
if (ctx instanceof ConfigurableApplicationContext) {
ConfigurableApplicationContext cctx = (ConfigurableApplicationContext)ctx;
new BusWiringBeanFactoryPostProcessor(b).postProcessBeanFactory(cctx.getBeanFactory());
@@ -181,6 +186,6 @@ public class BusWiringBeanFactoryPostPro
return ctx.getBean(Bus.DEFAULT_BUS_ID, Bus.class);
}
public static Bus addBus(ApplicationContext ctx, String name) {
- return getBusForName(name, ctx);
+ return getBusForName(name, ctx, true);
}
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java?rev=1209672&r1=1209671&r2=1209672&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java Fri Dec 2 19:59:44 2011
@@ -268,8 +268,9 @@ public abstract class AbstractBPBeanDefi
}
protected RefMetadata getBusRef(ParserContext context, String name) {
-
- getBus(context, name);
+ if ("cxf".equals(name)) {
+ getBus(context, name);
+ }
return createRef(context, name);
}
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java?rev=1209672&r1=1209671&r2=1209672&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/SpringBeansTest.java Fri Dec 2 19:59:44 2011
@@ -58,6 +58,8 @@ import org.apache.cxf.message.Message;
import org.apache.hello_world_soap_http.Greeter;
import org.junit.After;
import org.junit.Test;
+
+import org.springframework.beans.factory.BeanCreationException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -431,5 +433,15 @@ public class SpringBeansTest extends Ass
}
}
}
+ @Test
+ public void testEndpointWithUndefinedBus() throws Exception {
+ try {
+ new ClassPathXmlApplicationContext("/org/apache/cxf/jaxws/spring/endpoints3.xml");
+ fail("Should have thrown an exception");
+ } catch (BeanCreationException ex) {
+ assertEquals("ep2", ex.getBeanName());
+ assertTrue(ex.getMessage().contains("cxf1"));
+ }
+ }
}
Added: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml?rev=1209672&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml (added)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml Fri Dec 2 19:59:44 2011
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://cxf.apache.org/core"
+ xmlns:jaxws="http://cxf.apache.org/jaxws"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
+
+ <import resource="classpath:META-INF/cxf/cxf.xml" />
+
+
+ <jaxws:endpoint id="ep1" address="/path/one"
+ implementor="org.apache.hello_world_soap_http.GreeterImpl"
+ bus="cxf"/>
+
+ <jaxws:endpoint id="ep2" address="/path/two"
+ implementor="org.apache.hello_world_soap_http.GreeterImpl"
+ bus="cxf1"/>
+
+</beans>
\ No newline at end of file
Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/spring/endpoints3.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml