You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2007/06/05 22:26:30 UTC
svn commit: r544620 - in /incubator/cxf/trunk:
common/common/src/main/java/org/apache/cxf/configuration/spring/
rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/ rt...
Author: dandiep
Date: Tue Jun 5 13:26:27 2007
New Revision: 544620
URL: http://svn.apache.org/viewvc?view=rev&rev=544620
Log:
Simplify some of the Spring parsing code by moving common code
into AbstractBeanDefinitionParser.
Add a SimpleBeanDefinitionParser for code which doesn't need any
custom configuration.
Add parsers for the simple frontend.
Added:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java (with props)
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java (with props)
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java (with props)
incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/
incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers (with props)
incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas (with props)
incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/
incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd (with props)
incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/
incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java (with props)
incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml (with props)
incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml (with props)
Removed:
incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/ObjectBindingConfigBeanDefinintionParser.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/ServerBeanDefinitionParser.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/resources/org/
Modified:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/NamespaceHandler.java
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/SoapBindingInfoConfigBeanDefinitionParser.java
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/spring/FailoverBeanDefinitionParser.java
incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/ListenerBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/spring/BeanDefinitionParsersTest.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSConduitBeanDefinitionParser.java
incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java
incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java
Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -26,8 +26,9 @@
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
-
+import org.w3c.dom.Attr;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -42,9 +43,53 @@
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.util.StringUtils;
-
public abstract class AbstractBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
+ private Class beanClass;
+
+ @Override
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
+ NamedNodeMap atts = element.getAttributes();
+ boolean setBus = false;
+ for (int i = 0; i < atts.getLength(); i++) {
+ Attr node = (Attr) atts.item(i);
+ String val = node.getValue();
+ String name = node.getLocalName();
+
+ if ("createdFromAPI".equals(name)) {
+ bean.setAbstract(true);
+ } else if ("abstract".equals(name)) {
+ bean.setAbstract(true);
+ } else if (!"id".equals(name)) {
+ if ("bus".equals(name)) {
+ setBus = true;
+ }
+ mapAttribute(bean, name, val);
+ }
+ }
+
+ if (!setBus && ctx.getRegistry().containsBeanDefinition("cxf") && hasBusProperty()) {
+ bean.addPropertyReference("bus", "cxf");
+ }
+
+ NodeList children = element.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node n = children.item(i);
+ if (n.getNodeType() == Node.ELEMENT_NODE) {
+ String name = n.getLocalName();
+
+ mapElement(ctx, bean, (Element) n, name);
+ }
+ }
+ }
+
+ protected void mapAttribute(BeanDefinitionBuilder bean, String name, String val) {
+ mapToProperty(bean, name, val);
+ }
+
+ protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element e, String name) {
+ }
+
@Override
protected String resolveId(Element elem, AbstractBeanDefinition definition,
ParserContext ctx) throws BeanDefinitionStoreException {
@@ -64,6 +109,10 @@
return id;
}
+ protected boolean hasBusProperty() {
+ return false;
+ }
+
protected String getSuffix() {
return "";
}
@@ -186,12 +235,6 @@
return "";
}
- protected void mapAttributeToProperty(Element element, BeanDefinitionBuilder bean, String attrName,
- String propertyName) {
- String val = element.getAttribute(attrName);
- mapToProperty(bean, propertyName, val);
- }
-
protected void mapToProperty(BeanDefinitionBuilder bean, String propertyName, String val) {
if (ID_ATTRIBUTE.equals(propertyName)) {
return;
@@ -242,25 +285,18 @@
return new QName(ns, local, pre);
}
- /*
- protected final void doParseCommon(Element elem, ParserContext ctx, BeanDefinitionBuilder builder) {
- NamedNodeMap atts = elem.getAttributes();
-
- for (int i = 0; i < atts.getLength(); i++) {
- Attr node = (Attr) atts.item(i);
- String uri = node.getNamespaceURI();
- String name = node.getLocalName();
-
- if (BeanConstants.NAMESPACE_URI.equals(uri)) {
- if (BeanConstants.CREATED_FROM_API_ATTR.equals(name)) {
- builder.setAbstract(true);
- } else if (BeanConstants.ABSTRACT_ATTR.equals(name)) {
- builder.setAbstract(true);
- }
- }
- }
- }
- */
+ public Class getBeanClass() {
+ return beanClass;
+ }
+
+ public void setBeanClass(Class beanClass) {
+ this.beanClass = beanClass;
+ }
+
+ @Override
+ protected Class getBeanClass(Element arg0) {
+ return getBeanClass();
+ }
protected final String getIdOrName(Element elem) {
String id = elem.getAttribute(BeanDefinitionParserDelegate.ID_ATTRIBUTE);
Modified: incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/NamespaceHandler.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/NamespaceHandler.java (original)
+++ incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/spring/NamespaceHandler.java Tue Jun 5 13:26:27 2007
@@ -18,10 +18,13 @@
*/
package org.apache.cxf.binding.object.spring;
+import org.apache.cxf.binding.object.ObjectBindingConfiguration;
+import org.apache.cxf.configuration.spring.SimpleBeanDefinitionParser;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
public class NamespaceHandler extends NamespaceHandlerSupport {
public void init() {
- registerBeanDefinitionParser("soapBinding", new ObjectBindingConfigBeanDefinintionParser());
+ registerBeanDefinitionParser("objectBinding",
+ new SimpleBeanDefinitionParser(ObjectBindingConfiguration.class));
}
}
Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/SoapBindingInfoConfigBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/SoapBindingInfoConfigBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/SoapBindingInfoConfigBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/spring/SoapBindingInfoConfigBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -18,26 +18,12 @@
*/
package org.apache.cxf.binding.soap.spring;
-import org.w3c.dom.Attr;
import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
import org.apache.cxf.binding.soap.SoapBindingConfiguration;
import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.ParserContext;
public class SoapBindingInfoConfigBeanDefinitionParser extends AbstractBeanDefinitionParser {
-
- @Override
- protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
- NamedNodeMap atts = element.getAttributes();
- for (int i = 0; i < atts.getLength(); i++) {
- Attr node = (Attr) atts.item(i);
-
- mapToProperty(bean, node.getLocalName(), node.getValue());
- }
- }
@Override
protected Class getBeanClass(Element arg0) {
Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/spring/FailoverBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/spring/FailoverBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/spring/FailoverBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/spring/FailoverBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -19,12 +19,9 @@
package org.apache.cxf.clustering.spring;
import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
import org.apache.cxf.clustering.FailoverFeature;
import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
-
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
@@ -36,13 +33,7 @@
}
@Override
- protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
- NodeList children = element.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node n = children.item(i);
- if (n.getNodeType() == Node.ELEMENT_NODE) {
- setFirstChildAsProperty((Element) n, ctx, bean, n.getLocalName());
- }
- }
+ protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element e, String name) {
+ setFirstChildAsProperty(e, ctx, bean, name);
}
}
Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java Tue Jun 5 13:26:27 2007
@@ -55,6 +55,7 @@
import org.apache.cxf.Bus;
import org.apache.cxf.bus.CXFBusFactory;
import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.ClientImpl;
import org.apache.cxf.helpers.FileUtils;
@@ -141,10 +142,13 @@
}
public Client createClient(String wsdlUrl, QName service, QName port) {
- return createClient(wsdlUrl, service, Thread.currentThread().getContextClassLoader(), port);
+ return createClient(wsdlUrl, service, null, port);
}
public Client createClient(String wsdlUrl, QName service, ClassLoader classLoader, QName port) {
+ if (classLoader == null) {
+ classLoader = Thread.currentThread().getContextClassLoader();
+ }
URL u = composeUrl(wsdlUrl);
LOG.log(Level.FINE, "Creating client from URL " + u.toString());
ClientImpl client = new ClientImpl(bus, u, service, port);
@@ -222,7 +226,11 @@
JAXBContext context;
try {
- context = JAXBContext.newInstance(packageList, cl);
+ if (StringUtils.isEmpty(packageList)) {
+ context = JAXBContext.newInstance(new Class[0]);
+ } else {
+ context = JAXBContext.newInstance(packageList, cl);
+ }
} catch (JAXBException jbe) {
throw new IllegalStateException("Unable to create JAXBContext for generated packages: "
+ jbe.getMessage(), jbe);
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/JaxWsProxyFactoryBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -18,98 +18,17 @@
*/
package org.apache.cxf.jaxws.spring;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
+import org.apache.cxf.frontend.spring.ClientProxyFactoryBeanDefinitionParser;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.xml.ParserContext;
-public class JaxWsProxyFactoryBeanDefinitionParser extends AbstractBeanDefinitionParser {
+public class JaxWsProxyFactoryBeanDefinitionParser extends ClientProxyFactoryBeanDefinitionParser {
@Override
protected String getSuffix() {
return ".jaxws-client";
}
-
- @Override
- protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder clientBean) {
-
- BeanDefinitionBuilder bean = BeanDefinitionBuilder.rootBeanDefinition(JaxWsProxyFactoryBean.class);
-
- NamedNodeMap atts = element.getAttributes();
- boolean createdFromAPI = false;
- boolean setBus = false;
- for (int i = 0; i < atts.getLength(); i++) {
- Attr node = (Attr) atts.item(i);
- String val = node.getValue();
- String pre = node.getPrefix();
- String name = node.getLocalName();
-
- if ("createdFromAPI".equals(name)) {
- bean.setAbstract(true);
- clientBean.setAbstract(true);
- createdFromAPI = true;
- } else if (!"id".equals(name) && isAttribute(pre, name)) {
- if ("endpointName".equals(name) || "serviceName".equals(name)) {
- QName q = parseQName(element, val);
- bean.addPropertyValue(name, q);
- } else if (!"name".equals(name)) {
- if ("bus".equals(name)) {
- setBus = true;
- }
- mapToProperty(bean, name, val);
- }
- } else if ("abstract".equals(name)) {
- bean.setAbstract(true);
- clientBean.setAbstract(true);
- }
- }
-
- if (!setBus && ctx.getRegistry().containsBeanDefinition("cxf")) {
- bean.addPropertyReference("bus", "cxf");
- }
-
- NodeList children = element.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node n = children.item(i);
- if (n.getNodeType() == Node.ELEMENT_NODE) {
- String name = n.getLocalName();
- if ("properties".equals(n.getLocalName())) {
- Map map = ctx.getDelegate().parseMapElement((Element) n, bean.getBeanDefinition());
- bean.addPropertyValue("properties", map);
- } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
- || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)
- || "features".equals(name)) {
- List list = ctx.getDelegate().parseListElement((Element) n, bean.getBeanDefinition());
- bean.addPropertyValue(n.getLocalName(), list);
- } else {
- setFirstChildAsProperty((Element) n, ctx, bean, n.getLocalName());
- }
- }
- }
- String id = getIdOrName(element);
- if (createdFromAPI) {
- id = id + getSuffix();
- }
- String factoryId = id + ".proxyFactory";
-
- ctx.getRegistry().registerBeanDefinition(factoryId, bean.getBeanDefinition());
- clientBean.getBeanDefinition().setAttribute("id", id);
- clientBean.setFactoryBean(factoryId, "create");
- }
-
- @Override
- protected Class getBeanClass(Element arg0) {
- return Object.class;
+
+ protected Class getProxyFactoryClass() {
+ return JaxWsProxyFactoryBean.class;
}
}
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java Tue Jun 5 13:26:27 2007
@@ -18,12 +18,17 @@
*/
package org.apache.cxf.jaxws.spring;
+import org.apache.cxf.frontend.spring.ServerFactoryBeanDefinitionParser;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
public class NamespaceHandler extends NamespaceHandlerSupport {
public void init() {
registerBeanDefinitionParser("client", new JaxWsProxyFactoryBeanDefinitionParser());
- registerBeanDefinitionParser("endpoint", new EndpointDefinitionParser());
- registerBeanDefinitionParser("server", new ServerBeanDefinitionParser());
+ registerBeanDefinitionParser("endpoint", new EndpointDefinitionParser());
+
+ ServerFactoryBeanDefinitionParser parser = new ServerFactoryBeanDefinitionParser();
+ parser.setBeanClass(JaxWsServerFactoryBean.class);
+ registerBeanDefinitionParser("server", parser);
}
}
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.frontend.spring;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
+
+public class ClientProxyFactoryBeanDefinitionParser extends AbstractBeanDefinitionParser {
+
+ public ClientProxyFactoryBeanDefinitionParser() {
+ super();
+ setBeanClass(Object.class);
+ }
+
+ @Override
+ protected String getSuffix() {
+ return ".simple-client";
+ }
+
+ @Override
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder clientBean) {
+
+ BeanDefinitionBuilder bean = BeanDefinitionBuilder.rootBeanDefinition(getProxyFactoryClass());
+
+ NamedNodeMap atts = element.getAttributes();
+ boolean createdFromAPI = false;
+ boolean setBus = false;
+ for (int i = 0; i < atts.getLength(); i++) {
+ Attr node = (Attr) atts.item(i);
+ String val = node.getValue();
+ String pre = node.getPrefix();
+ String name = node.getLocalName();
+
+ if ("createdFromAPI".equals(name)) {
+ bean.setAbstract(true);
+ clientBean.setAbstract(true);
+ createdFromAPI = true;
+ } else if (!"id".equals(name) && isAttribute(pre, name)) {
+ if ("endpointName".equals(name) || "serviceName".equals(name)) {
+ QName q = parseQName(element, val);
+ bean.addPropertyValue(name, q);
+ } else if (!"name".equals(name)) {
+ if ("bus".equals(name)) {
+ setBus = true;
+ }
+ mapToProperty(bean, name, val);
+ }
+ } else if ("abstract".equals(name)) {
+ bean.setAbstract(true);
+ clientBean.setAbstract(true);
+ }
+ }
+
+ if (!setBus && ctx.getRegistry().containsBeanDefinition("cxf")) {
+ bean.addPropertyReference("bus", "cxf");
+ }
+
+ NodeList children = element.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node n = children.item(i);
+ if (n.getNodeType() == Node.ELEMENT_NODE) {
+ String name = n.getLocalName();
+ if ("properties".equals(n.getLocalName())) {
+ Map map = ctx.getDelegate().parseMapElement((Element) n, bean.getBeanDefinition());
+ bean.addPropertyValue("properties", map);
+ } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
+ || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)
+ || "features".equals(name)) {
+ List list = ctx.getDelegate().parseListElement((Element) n, bean.getBeanDefinition());
+ bean.addPropertyValue(n.getLocalName(), list);
+ } else {
+ setFirstChildAsProperty((Element) n, ctx, bean, n.getLocalName());
+ }
+ }
+ }
+ String id = getIdOrName(element);
+ if (createdFromAPI) {
+ id = id + getSuffix();
+ }
+ String factoryId = id + ".proxyFactory";
+
+ ctx.getRegistry().registerBeanDefinition(factoryId, bean.getBeanDefinition());
+ clientBean.getBeanDefinition().setAttribute("id", id);
+ clientBean.setFactoryBean(factoryId, "create");
+ }
+
+ protected Class getProxyFactoryClass() {
+ return ClientProxyFactoryBean.class;
+ }
+
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java Tue Jun 5 13:26:27 2007
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.frontend.spring;
+
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class NamespaceHandler extends NamespaceHandlerSupport {
+ public void init() {
+ registerBeanDefinitionParser("client", new ClientProxyFactoryBeanDefinitionParser());
+ registerBeanDefinitionParser("server", new ServerFactoryBeanDefinitionParser());
+ }
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.frontend.spring;
+
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Element;
+
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.springframework.beans.FatalBeanException;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.StringUtils;
+
+public class ServerFactoryBeanDefinitionParser extends AbstractBeanDefinitionParser {
+ private static final String IMPLEMENTOR = "implementor";
+
+ public ServerFactoryBeanDefinitionParser() {
+ super();
+ setBeanClass(ServerFactoryBean.class);
+ }
+
+ @Override
+ protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) {
+ if ("properties".equals(name)) {
+ Map map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
+ bean.addPropertyValue("properties", map);
+ } else if ("executor".equals(name)) {
+ setFirstChildAsProperty(el, ctx, bean, "serviceFactory.executor");
+ } else if ("invoker".equals(name)) {
+ setFirstChildAsProperty(el, ctx, bean, "serviceFactory.invoker");
+ } else if ("binding".equals(name)) {
+ setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
+ } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
+ || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)
+ || "features".equals(name)) {
+ List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+ bean.addPropertyValue(name, list);
+ } else {
+ setFirstChildAsProperty(el, ctx, bean, name);
+ }
+ }
+
+ @Override
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
+ super.doParse(element, ctx, bean);
+
+ bean.setInitMethodName("create");
+
+ // We don't really want to delay the registration of our Server
+ bean.setLazyInit(false);
+ }
+
+ @Override
+ protected void mapAttribute(BeanDefinitionBuilder bean, String name, String val) {
+ if (name.equals(IMPLEMENTOR)) {
+ loadImplementor(bean, val);
+ } else {
+ super.mapAttribute(bean, name, val);
+ }
+ }
+
+ private void loadImplementor(BeanDefinitionBuilder bean, String val) {
+ if (StringUtils.hasText(val)) {
+ if (val.startsWith("#")) {
+ bean.addPropertyReference(IMPLEMENTOR, val.substring(1));
+ } else {
+ try {
+ bean.addPropertyValue(IMPLEMENTOR,
+ ClassLoaderUtils.loadClass(val, getClass()).newInstance());
+ } catch (Exception e) {
+ throw new FatalBeanException("Could not load class: " + val, e);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected boolean hasBusProperty() {
+ return true;
+ }
+
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers Tue Jun 5 13:26:27 2007
@@ -0,0 +1 @@
+http\://cxf.apache.org/simple=org.apache.cxf.frontend.spring.NamespaceHandler
\ No newline at end of file
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.handlers
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas Tue Jun 5 13:26:27 2007
@@ -0,0 +1 @@
+http\://cxf.apache.org/schema/simple.xsd=schemas/simple.xsd
\ No newline at end of file
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/META-INF/spring.schemas
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd Tue Jun 5 13:26:27 2007
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://cxf.apache.org/simple"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:beans="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
+ targetNamespace="http://cxf.apache.org/simple"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified" >
+
+ <xsd:import namespace="http://www.springframework.org/schema/beans" />
+
+ <xsd:element name="server" type="serverType"/>
+
+ <xsd:complexType name="serverType">
+ <xsd:complexContent>
+ <xsd:extension base="beans:identifiedType">
+ <xsd:all>
+ <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="implementor" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="invoker" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
+ <xsd:element name="serviceBean" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
+ </xsd:all>
+ <xsd:attribute name="abstract" type="xsd:boolean" />
+ <xsd:attribute name="address" type="xsd:string" />
+ <xsd:attribute name="bus" type="xsd:string" />
+ <xsd:attribute name="createdFromAPI" type="xsd:string" />
+ <xsd:attribute name="serviceClass" type="xsd:string"/>
+ <xsd:attribute name="serviceBean" type="xsd:string"/>
+ <xsd:attribute name="start" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="transportId" type="xsd:string"/>
+ <xsd:attribute name="wsdlLocation" type="xsd:string" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="client" type="clientType"/>
+
+ <xsd:complexType name="clientType">
+ <xsd:complexContent>
+ <xsd:extension base="beans:identifiedType">
+ <xsd:all>
+ <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="conduitSelector" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
+ </xsd:all>
+ <xsd:attribute name="abstract" type="xsd:boolean" />
+ <xsd:attribute name="address" type="xsd:string" />
+ <xsd:attribute name="bindingUri" type="xsd:string" />
+ <xsd:attribute name="bus" type="xsd:string" />
+ <xsd:attribute name="createdFromAPI" type="xsd:string" />
+ <xsd:attribute name="endpointName" type="xsd:QName" />
+ <xsd:attribute name="password" type="xsd:string" />
+ <xsd:attribute name="serviceClass" type="xsd:QName" />
+ <xsd:attribute name="serviceName" type="xsd:QName" />
+ <xsd:attribute name="username" type="xsd:string" />
+ <xsd:attribute name="wsdlLocation" type="xsd:string" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+</xsd:schema>
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/main/resources/schemas/simple.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java Tue Jun 5 13:26:27 2007
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.frontend.spring;
+
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.cxf.binding.BindingConfiguration;
+import org.apache.cxf.binding.soap.Soap12;
+import org.apache.cxf.binding.soap.SoapBindingConfiguration;
+import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
+import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.NullConduitSelector;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.service.factory.HelloService;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringBeansTest extends Assert {
+
+ @Test
+ public void testServers() throws Exception {
+ ClassPathXmlApplicationContext ctx =
+ new ClassPathXmlApplicationContext(new String[] {"/org/apache/cxf/frontend/spring/servers.xml"});
+
+ ServerFactoryBean bean = (ServerFactoryBean) ctx.getBean("simple");
+ assertNotNull(bean);
+
+ bean = (ServerFactoryBean) ctx.getBean("inlineSoapBinding");
+ assertNotNull(bean);
+
+ BindingConfiguration bc = bean.getBindingConfig();
+ assertTrue(bc instanceof SoapBindingConfiguration);
+ SoapBindingConfiguration sbc = (SoapBindingConfiguration) bc;
+ assertTrue(sbc.getVersion() instanceof Soap12);
+ }
+
+
+ @Test
+ public void testClients() throws Exception {
+ ClassPathXmlApplicationContext ctx =
+ new ClassPathXmlApplicationContext(new String[] {"/org/apache/cxf/frontend/spring/clients.xml"});
+
+ Object bean = ctx.getBean("client1.proxyFactory");
+ assertNotNull(bean);
+
+ HelloService greeter = (HelloService) ctx.getBean("client1");
+ assertNotNull(greeter);
+
+ Client client = ClientProxy.getClient(greeter);
+ assertNotNull("expected ConduitSelector", client.getConduitSelector());
+ assertTrue("unexpected ConduitSelector",
+ client.getConduitSelector() instanceof NullConduitSelector);
+
+ List<Interceptor> inInterceptors = client.getInInterceptors();
+ boolean saaj = false;
+ boolean logging = false;
+ for (Interceptor<?> i : inInterceptors) {
+ if (i instanceof SAAJInInterceptor) {
+ saaj = true;
+ } else if (i instanceof LoggingInInterceptor) {
+ logging = true;
+ }
+ }
+ assertTrue(saaj);
+ assertTrue(logging);
+
+ saaj = false;
+ logging = false;
+ for (Interceptor<?> i : client.getOutInterceptors()) {
+ if (i instanceof SAAJOutInterceptor) {
+ saaj = true;
+ } else if (i instanceof LoggingOutInterceptor) {
+ logging = true;
+ }
+ }
+ assertTrue(saaj);
+ assertTrue(logging);
+ }
+}
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/SpringBeansTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml Tue Jun 5 13:26:27 2007
@@ -0,0 +1,63 @@
+<?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:simple="http://cxf.apache.org/simple"
+ xmlns:soap="http://cxf.apache.org/bindings/soap"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+http://cxf.apache.org/bindings/soap http://cxf.apache.org/schema/bindings/soap.xsd
+http://cxf.apache.org/simple http://cxf.apache.org/schema/simple.xsd">
+
+ <import resource="classpath:META-INF/cxf/cxf.xml"/>
+ <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
+
+ <bean class="org.apache.cxf.transport.local.LocalTransportFactory" lazy-init="false">
+ <property name="transportIds">
+ <list>
+ <value>http://cxf.apache.org/transports/local</value>
+ <value>http://schemas.xmlsoap.org/soap/http</value>
+ <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
+ </list>
+ </property>
+ </bean>
+
+ <bean id="saajIn" class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ <bean id="saajOut" class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+
+ <simple:client id="client1"
+ serviceClass="org.apache.cxf.service.factory.HelloService"
+ address="http://localhost:9000/foo"
+ serviceName="s:SOAPService"
+ xmlns:s="http://apache.org/hello_world_soap_http">
+ <simple:inInterceptors>
+ <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+ <ref bean="saajIn"/>
+ </simple:inInterceptors>
+ <simple:outInterceptors>
+ <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+ <ref bean="saajOut"/>
+ </simple:outInterceptors>
+ <simple:conduitSelector>
+ <bean class="org.apache.cxf.endpoint.NullConduitSelector"/>
+ </simple:conduitSelector>
+ </simple:client>
+
+</beans>
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/clients.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml?view=auto&rev=544620
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml (added)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml Tue Jun 5 13:26:27 2007
@@ -0,0 +1,75 @@
+<?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:simple="http://cxf.apache.org/simple"
+ xmlns:soap="http://cxf.apache.org/bindings/soap"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+http://cxf.apache.org/bindings/soap http://cxf.apache.org/schema/bindings/soap.xsd
+http://cxf.apache.org/simple http://cxf.apache.org/schema/simple.xsd">
+
+ <import resource="classpath:META-INF/cxf/cxf.xml"/>
+ <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
+
+ <bean class="org.apache.cxf.transport.local.LocalTransportFactory" lazy-init="false">
+ <property name="transportIds">
+ <list>
+ <value>http://cxf.apache.org/transports/local</value>
+ <value>http://schemas.xmlsoap.org/soap/http</value>
+ <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
+ </list>
+ </property>
+ </bean>
+
+ <simple:server id="simple" serviceBean="#greeter"/>
+
+ <bean id="greeter" class="org.apache.cxf.service.factory.HelloServiceImpl"/>
+
+ <simple:server id="simpleWithAddress"
+ serviceBean="#greeter" address="http://localhost:8080/simpleWithAddress"/>
+
+ <simple:server id="inlineImplementor" address="http://localhost:8080/simpleWithAddress">
+ <simple:serviceBean>
+ <bean class="org.apache.cxf.service.factory.HelloServiceImpl"/>
+ </simple:serviceBean>
+ </simple:server>
+
+ <simple:server id="inlineInvoker"
+ serviceClass="org.apache.cxf.service.factory.HelloServiceImpl"
+ address="http://localhost:8080/simpleWithAddress">
+ <simple:invoker>
+ <bean class="org.apache.cxf.service.invoker.BeanInvoker">
+ <constructor-arg>
+ <bean class="org.apache.cxf.service.factory.HelloServiceImpl"/>
+ </constructor-arg>
+ </bean>
+ </simple:invoker>
+
+ </simple:server>
+
+ <simple:server id="inlineSoapBinding"
+ serviceClass="org.apache.cxf.service.factory.HelloService"
+ address="http://localhost:8080/test">
+ <simple:binding>
+ <soap:soapBinding mtomEnabled="true" version="1.2"/>
+ </simple:binding>
+ </simple:server>
+</beans>
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/spring/servers.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/ListenerBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/ListenerBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/ListenerBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/ListenerBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -28,6 +28,7 @@
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
import org.apache.cxf.transports.http.configuration.HTTPListenerPolicy;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
public class ListenerBeanDefinitionParser extends AbstractBeanDefinitionParser {
@@ -39,7 +40,7 @@
}
@Override
- public void doParse(Element element, BeanDefinitionBuilder bean) {
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
bean.setAbstract(true);
mapElementToJaxbProperty(element, bean, new QName(LISTENER_NS, "listener"), "listener",
HTTPListenerPolicy.class);
Modified: incubator/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/spring/BeanDefinitionParsersTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/spring/BeanDefinitionParsersTest.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/spring/BeanDefinitionParsersTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/spring/BeanDefinitionParsersTest.java Tue Jun 5 13:26:27 2007
@@ -39,7 +39,7 @@
HttpDestinationBeanDefinitionParser parser = new HttpDestinationBeanDefinitionParser();
Document d = DOMUtils.readXml(getClass().getResourceAsStream("destination.xml"));
- parser.doParse(d.getDocumentElement(), bd);
+ parser.doParse(d.getDocumentElement(), null, bd);
PropertyValue[] pvs = bd.getRawBeanDefinition().getPropertyValues().getPropertyValues();
assertEquals(2, pvs.length);
@@ -54,7 +54,7 @@
HttpConduitBeanDefinitionParser parser = new HttpConduitBeanDefinitionParser();
Document d = DOMUtils.readXml(getClass().getResourceAsStream("conduit.xml"));
- parser.doParse(d.getDocumentElement(), bd);
+ parser.doParse(d.getDocumentElement(), null, bd);
PropertyValue[] pvs = bd.getRawBeanDefinition().getPropertyValues().getPropertyValues();
assertEquals(1, pvs.length);
@@ -68,7 +68,7 @@
ListenerBeanDefinitionParser parser = new ListenerBeanDefinitionParser();
Document d = DOMUtils.readXml(getClass().getResourceAsStream("listener.xml"));
- parser.doParse(d.getDocumentElement(), bd);
+ parser.doParse(d.getDocumentElement(), null, bd);
PropertyValue[] pvs = bd.getRawBeanDefinition().getPropertyValues().getPropertyValues();
assertEquals(1, pvs.length);
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -40,6 +40,7 @@
import org.apache.cxf.transport.http.MessageTrustDecider;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
public class HttpConduitBeanDefinitionParser
@@ -49,7 +50,7 @@
"http://cxf.apache.org/transports/http/configuration";
@Override
- public void doParse(Element element, BeanDefinitionBuilder bean) {
+ public void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
bean.setAbstract(true);
mapElementToJaxbProperty(element, bean,
new QName(HTTP_NS, "client"), "client",
Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpDestinationBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -37,13 +37,14 @@
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
public class HttpDestinationBeanDefinitionParser extends AbstractBeanDefinitionParser {
private static final String HTTP_NS = "http://cxf.apache.org/transports/http/configuration";
@Override
- public void doParse(Element element, BeanDefinitionBuilder bean) {
+ public void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
bean.setAbstract(true);
mapElementToJaxbProperty(element, bean, new QName(HTTP_NS, "server"), "server",
HTTPServerPolicy.class);
Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSConduitBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSConduitBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSConduitBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSConduitBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -29,13 +29,14 @@
import org.apache.cxf.transport.jms.JMSConduit;
import org.apache.cxf.transport.jms.SessionPoolType;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
public class JMSConduitBeanDefinitionParser extends AbstractBeanDefinitionParser {
private static final String JMS_NS = "http://cxf.apache.org/transports/jms";
@Override
- protected void doParse(Element element, BeanDefinitionBuilder bean) {
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
bean.setAbstract(true);
mapElementToJaxbProperty(element, bean, new QName(JMS_NS, "clientConfig"), "clientConfig",
ClientConfig.class);
Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/spring/JMSDestinationBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -29,13 +29,14 @@
import org.apache.cxf.transport.jms.ServerConfig;
import org.apache.cxf.transport.jms.SessionPoolType;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.xml.ParserContext;
public class JMSDestinationBeanDefinitionParser extends AbstractBeanDefinitionParser {
private static final String JMS_NS = "http://cxf.apache.org/transports/jms";
@Override
- protected void doParse(Element element, BeanDefinitionBuilder bean) {
+ protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
bean.setAbstract(true);
mapElementToJaxbProperty(element, bean, new QName(JMS_NS, "serverConfig"), "serverConfig",
ServerConfig.class);
Modified: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java (original)
+++ incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java Tue Jun 5 13:26:27 2007
@@ -57,6 +57,11 @@
}
@Override
+ protected boolean hasBusProperty() {
+ return true;
+ }
+
+ @Override
protected Class getBeanClass(Element element) {
return RMManager.class;
}
Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java Tue Jun 5 13:26:27 2007
@@ -78,7 +78,7 @@
addNamespace("h", "http://apache.org/hello_world_soap_http/types");
assertValid("/s:Envelope/s:Body", doc);
- assertValid("//h:sayHiResponse", doc);
+ assertValid("//h:sayHiResponse", doc);
}
@Test
@@ -98,6 +98,9 @@
assertEquals("There should get one link for service", 1, links.length);
assertEquals(CONTEXT_URL + "/services/greeter?wsdl", links[0].getURLString());
assertEquals("text/html", res.getContentType());
+
+ // Ensure that the Bus is available for people doing an Endpoint.publish() or similar.
+ assertNotNull(BusFactory.getDefaultBus(false));
}
@Test
Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java?view=diff&rev=544620&r1=544619&r2=544620
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ProcessorTestBase.java Tue Jun 5 13:26:27 2007
@@ -86,7 +86,8 @@
protected void assertFileEquals(File location1, File location2) {
String str1 = getStringFromFile(location1);
String str2 = getStringFromFile(location2);
-
+ System.out.println(str1);
+ System.out.println(str2);
StringTokenizer st1 = new StringTokenizer(str1, " \t\n\r\f(),");
StringTokenizer st2 = new StringTokenizer(str2, " \t\n\r\f(),");