Author: joed
Date: Fri Apr 29 20:12:54 2011
New Revision: 1097936
URL: http://svn.apache.org/viewvc?rev=1097936&view=rev
Log:
Camel CXF, blueprint support for endpoint.
CAMEL-3452
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/camel-cxf.xml
camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/
camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
Modified:
camel/trunk/components/camel-cxf/pom.xml
Modified: camel/trunk/components/camel-cxf/pom.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/pom.xml?rev=1097936&r1=1097935&r2=1097936&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/pom.xml (original)
+++ camel/trunk/components/camel-cxf/pom.xml Fri Apr 29 20:12:54 2011
@@ -15,7 +15,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -32,9 +33,9 @@
<description>Camel CXF support</description>
<properties>
- <camel.osgi.import>
+ <camel.osgi.import>
!org.apache.camel.component.cxf.*,
- !META-INF.cxf.camel,
+ !META-INF.cxf.camel,
javax.activation*;version="[0.0,2)",
javax.annotation*;version="[0.0,2)",
javax.jws*;version="[0.0,3)",
@@ -44,16 +45,26 @@
org.apache.camel.*;${camel.osgi.import.camel.version},
${camel.osgi.import.defaults},
${camel.osgi.import.additional},
+ org.osgi.service.blueprint;resolution:=optional,
+ org.osgi.service.blueprint.container;resolution:=optional,
+ org.osgi.service.blueprint.reflect;resolution:=optional,
+ org.apache.aries.blueprint;resolution:=optional,
+ org.apache.aries.blueprint.reflect ;resolution:=optional,
+ org.apache.aries.blueprint.mutable;resolution:=optional,
+ org.apache.camel.blueprint;resolution:=optional,
+ org.osgi.framework;resolution:=optional,
*
- </camel.osgi.import>
- <camel.osgi.export>
-
org.apache.camel.component.cxf.*;${camel.osgi.version};-split-package:=merge-first,
- '=META-INF.cxf.camel'
- </camel.osgi.export>
- <camel.osgi.failok>true</camel.osgi.failok>
+ </camel.osgi.import>
+
+ <camel.osgi.export>
+
org.apache.camel.component.cxf.*;${camel.osgi.version};-split-package:=merge-first,
+ '=META-INF.cxf.camel'
+ </camel.osgi.export>
+ <camel.osgi.failok>true</camel.osgi.failok>
+
</properties>
- <dependencies>
+ <dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
@@ -61,33 +72,53 @@
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
- </dependency>
-
+ </dependency>
+
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>${cxf-version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf-version}</version>
</dependency>
-
+
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+
+ <!-- OSGi, BLueprint -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-blueprint</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>org.apache.aries.blueprint</artifactId>
</dependency>
<!-- Test Dependencies -->
@@ -96,33 +127,33 @@
<artifactId>camel-core-xml</artifactId>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test</artifactId>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http</artifactId>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-jbi</artifactId>
<version>${cxf-version}</version>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf-version}</version>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
@@ -135,13 +166,13 @@
<version>${httpclient4-version}</version>
<scope>test</scope>
</dependency>
-
- <dependency>
+
+ <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
@@ -154,23 +185,23 @@
<version>${cxf-version}</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
@@ -226,52 +257,52 @@
</executions>
</plugin>
<plugin>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-codegen-plugin</artifactId>
- <version>${cxf-version}</version>
- <executions>
- <execution>
- <id>generate-test-sources</id>
- <phase>generate-sources</phase>
- <configuration>
-
<sourceRoot>${basedir}/target/generated</sourceRoot>
- <wsdlOptions>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/mtom.wsdl</wsdl>
- </wsdlOption>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/MultiPartTest.wsdl</wsdl>
- </wsdlOption>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/person.wsdl</wsdl>
- </wsdlOption>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/person-non-wrapper.wsdl</wsdl>
- <extraargs>
- <extraarg>-b</extraarg>
-
<extraarg>${basedir}/src/test/resources/person-non-wrapper-binding.xml</extraarg>
- </extraargs>
- </wsdlOption>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/soap_header.wsdl</wsdl>
- <extraargs>
-
<extraarg>-verbose</extraarg>
- </extraargs>
- </wsdlOption>
- <wsdlOption>
-
<wsdl>${basedir}/src/test/resources/pizza_service.wsdl</wsdl>
- <extraargs>
-
<extraarg>-exsh</extraarg>
-
<extraarg>true</extraarg>
- </extraargs>
- </wsdlOption>
- </wsdlOptions>
- </configuration>
- <goals>
- <goal>wsdl2java</goal>
- </goals>
- </execution>
- </executions>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-codegen-plugin</artifactId>
+ <version>${cxf-version}</version>
+ <executions>
+ <execution>
+ <id>generate-test-sources</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <sourceRoot>${basedir}/target/generated</sourceRoot>
+ <wsdlOptions>
+ <wsdlOption>
+ <wsdl>${basedir}/src/test/resources/mtom.wsdl</wsdl>
+ </wsdlOption>
+ <wsdlOption>
+ <wsdl>${basedir}/src/test/resources/MultiPartTest.wsdl</wsdl>
+ </wsdlOption>
+ <wsdlOption>
+ <wsdl>${basedir}/src/test/resources/person.wsdl</wsdl>
+ </wsdlOption>
+ <wsdlOption>
+
<wsdl>${basedir}/src/test/resources/person-non-wrapper.wsdl</wsdl>
+ <extraargs>
+ <extraarg>-b</extraarg>
+
<extraarg>${basedir}/src/test/resources/person-non-wrapper-binding.xml</extraarg>
+ </extraargs>
+ </wsdlOption>
+ <wsdlOption>
+ <wsdl>${basedir}/src/test/resources/soap_header.wsdl</wsdl>
+ <extraargs>
+ <extraarg>-verbose</extraarg>
+ </extraargs>
+ </wsdlOption>
+ <wsdlOption>
+ <wsdl>${basedir}/src/test/resources/pizza_service.wsdl</wsdl>
+ <extraargs>
+ <extraarg>-exsh</extraarg>
+ <extraarg>true</extraarg>
+ </extraargs>
+ </wsdlOption>
+ </wsdlOptions>
+ </configuration>
+ <goals>
+ <goal>wsdl2java</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
</plugins>
</build>
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBlueprintEndpoint.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,198 @@
+/**
+ * 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.camel.component.cxf;
+
+import java.lang.reflect.Proxy;
+import java.util.List;
+import java.util.Map;
+import javax.xml.ws.handler.Handler;
+
+import org.apache.camel.blueprint.BlueprintCamelContext;
+import org.apache.camel.component.cxf.util.CxfEndpointUtils;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.frontend.ClientFactoryBean;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CxfBlueprintEndpoint extends CxfEndpoint {
+
+ private static final Logger LOG =
LoggerFactory.getLogger(CxfBlueprintEndpoint.class);
+
+ protected Map<String, Object> properties;
+
+ private List<Handler> handlers;
+ private List<String> schemaLocations;
+
+ private BlueprintContainer blueprintContainer;
+ private BundleContext bundleContext;
+ private BlueprintCamelContext blueprintCamelContext;
+
+ public CxfBlueprintEndpoint(String address, BlueprintCamelContext context)
{
+ super(address, context);
+ this.blueprintCamelContext = context;
+ }
+
+ public List<Handler> getHandlers() {
+ return handlers;
+ }
+
+ public void setHandlers(List<Handler> handlers) {
+ this.handlers = handlers;
+ }
+
+ public void destroy() {
+ // Clean up the BusFactory's defaultBus
+ // This method is not called magically, blueprint
+ // needs you to set the destroy-method.
+ BusFactory.setDefaultBus(null);
+ BusFactory.setThreadDefaultBus(null);
+ }
+
+ // Package private methods
+ //
-------------------------------------------------------------------------
+
+ /**
+ * Create a CXF client object
+ */
+ Client createClient() throws Exception {
+
+ // get service class
+ if (getDataFormat().equals(DataFormat.POJO)) {
+ ObjectHelper.notEmpty(getServiceClass(),
CxfConstants.SERVICE_CLASS);
+ }
+
+ if (getWsdlURL() == null && getServiceClass() == null) {
+ // no WSDL and serviceClass specified, set our default serviceClass
+
setServiceClass(org.apache.camel.component.cxf.DefaultSEI.class.getName());
+ setDefaultOperationNamespace(CxfConstants.DISPATCH_NAMESPACE);
+
setDefaultOperationName(CxfConstants.DISPATCH_DEFAULT_OPERATION_NAMESPACE);
+ if (getDataFormat().equals(DataFormat.PAYLOAD)) {
+ setSkipPayloadMessagePartCheck(true);
+ }
+ }
+
+ Class<?> cls = null;
+ if (getServiceClass() != null) {
+ //Fool CXF classes to load their settings and bindings from the
CXF bundle
+ cls = bundleContext.getBundle().loadClass(getServiceClass());
+ // create client factory bean
+ ClientProxyFactoryBean factoryBean = createClientFactoryBean(cls);
+ // setup client factory bean
+ setupClientFactoryBean(factoryBean, cls);
+ return ((ClientProxy)
Proxy.getInvocationHandler(factoryBean.create())).getClient();
+ } else {
+ checkName(getPortName(), "endpoint/port name");
+ checkName(getServiceName(), "service name");
+
+ ClientFactoryBean factoryBean = createClientFactoryBean();
+ // setup client factory bean
+ setupClientFactoryBean(factoryBean);
+ return factoryBean.create();
+ }
+ }
+
+ protected void checkName(Object value, String name) {
+ if (ObjectHelper.isEmpty(value)) {
+ LOG.warn("The " + name + " of " + this.getEndpointUri() + " is
empty, cxf will try to load the first one in wsdl for you.");
+ }
+ }
+
+ /**
+ * Create a CXF server factory bean
+ */
+ ServerFactoryBean createServerFactoryBean() throws Exception {
+
+ Class<?> cls = null;
+ if (getDataFormat() == DataFormat.POJO || getServiceClass() != null) {
+ // get service class
+ ObjectHelper.notEmpty(getServiceClass(),
CxfConstants.SERVICE_CLASS);
+ cls = bundleContext.getBundle().loadClass(getServiceClass());
+ }
+
+ // create server factory bean
+ // Shouldn't use CxfEndpointUtils.getServerFactoryBean(cls) as it is
for
+ // CxfSoapComponent
+ ServerFactoryBean answer = null;
+
+ if (cls == null) {
+ checkName(getPortName(), " endpoint/port name");
+ checkName(getServiceName(), " service name");
+ answer = new ServerFactoryBean(new WSDLServiceFactoryBean());
+ } else if (CxfEndpointUtils.hasWebServiceAnnotation(cls)) {
+ answer = new JaxWsServerFactoryBean();
+ } else {
+ answer = new ServerFactoryBean();
+ }
+ // setup server factory bean
+ setupServerFactoryBean(answer, cls);
+
+ return answer;
+ }
+
+ public void setSchemaLocations(List<String> schemaLocations) {
+ this.schemaLocations = schemaLocations;
+ }
+
+ public List<String> getSchemaLocations() {
+ return schemaLocations;
+ }
+
+ public BlueprintContainer getBlueprintContainer() {
+ return blueprintContainer;
+ }
+
+ public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+ this.blueprintContainer = blueprintContainer;
+ }
+
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public BlueprintCamelContext getBlueprintCamelContext() {
+ return blueprintCamelContext;
+ }
+
+ public void setBlueprintCamelContext(BlueprintCamelContext
blueprintCamelContext) {
+ this.blueprintCamelContext = blueprintCamelContext;
+ }
+
+ public Map<String, Object> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Map<String, Object> properties) {
+ this.properties = properties;
+ }
+
+ public CxfBlueprintEndpoint getBean() {
+ return this;
+ }
+}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,24 @@
+/**
+ * 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.camel.component.cxf.blueprint;
+
+import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
+
+public class AbstractBeanDefinitionParser extends
AbstractBPBeanDefinitionParser {
+
+}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,60 @@
+/**
+ * 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.camel.component.cxf.blueprint;
+
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.apache.aries.blueprint.NamespaceHandler;
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.cxf.bus.blueprint.BlueprintBus;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.blueprint.reflect.Metadata;
+
+public class CxfNamespaceHandler implements NamespaceHandler {
+
+ public URL getSchemaLocation(String s) {
+ return
getClass().getClassLoader().getResource("schema/blueprint/camel-cxf.xsd");
+ }
+
+ public Set<Class> getManagedClasses() {
+ return new HashSet<Class>(Arrays.asList(CxfNamespaceHandler.class));
+ }
+
+ public Metadata parse(Element element, ParserContext context) {
+
Thread.currentThread().setContextClassLoader(BlueprintBus.class.getClassLoader());
+ String s = element.getLocalName();
+ if ("cxfEndpoint".equals(s)) {
+ return new EndpointDefinitionParser().parse(element, context);
+ } else if ("server".equals(s)) {
+ //return new
RsServerDefinitionParser(JaxWsServerFactoryBean.class).parse(element, context);
+ } else if ("client".equals(s)) {
+ //return new
RsClientDefinitionParser(JaxWsProxyFactoryBean.class).parse(element, context);
+ }
+ return null;
+ }
+
+ public ComponentMetadata decorate(Node node, ComponentMetadata
componentMetadata, ParserContext parserContext) {
+ System.out.println("Decorate the node " + node + " " +
componentMetadata);
+ return null;
+ }
+}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,213 @@
+/**
+ * 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.camel.component.cxf.blueprint;
+
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.concurrent.Callable;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.blueprint.ComponentDefinitionRegistryProcessor;
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.PassThroughMetadata;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
+import org.apache.aries.blueprint.reflect.BeanMetadataImpl;
+import org.apache.camel.blueprint.BlueprintCamelContext;
+import org.apache.camel.component.cxf.CxfBlueprintEndpoint;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
+import org.apache.cxf.helpers.DOMUtils;
+import org.osgi.framework.Bundle;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.blueprint.reflect.Metadata;
+
+public class EndpointDefinitionParser extends AbstractBPBeanDefinitionParser {
+
+ public static String getIdOrName(Element elem) {
+ String id = elem.getAttribute("id");
+
+ if (null == id || "".equals(id)) {
+ String names = elem.getAttribute("name");
+ if (null != names) {
+ StringTokenizer st = new StringTokenizer(names, ",");
+ if (st.countTokens() > 0) {
+ id = st.nextToken();
+ }
+ }
+ }
+ return id;
+ }
+
+ public Metadata parse(Element element, ParserContext context) {
+ MutableBeanMetadata endpointConfig =
context.createMetadata(MutableBeanMetadata.class);
+ endpointConfig.setRuntimeClass(CxfBlueprintEndpoint.class);
+ endpointConfig.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
+ endpointConfig.addProperty("bundleContext", createRef(context,
"blueprintBundleContext"));
+
+ if (!StringUtils.isEmpty(getIdOrName(element))) {
+ endpointConfig.setId(getIdOrName(element));
+ } else {
+ endpointConfig.setId("camel.cxf.endpoint." + context.generateId());
+ }
+
+ boolean isAbstract = false;
+ boolean publish = true;
+ NamedNodeMap atts = element.getAttributes();
+
+ String bus = null;
+ Metadata impl = null;
+ String address = null;
+
+ 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) || "abstract".equals(name)) {
+ endpointConfig.setScope(MutableBeanMetadata.SCOPE_PROTOTYPE);
+ isAbstract = true;
+ } else if ("publish".equals(name)) {
+ publish = Boolean.parseBoolean(val);
+ } else if ("bus".equals(name)) {
+ bus = val;
+ } else if ("address".equals(name)) {
+ address = val;
+ } else if (isAttribute(pre, name)) {
+ if ("endpointName".equals(name) || "serviceName".equals(name))
{
+ QName q = parseQName(element, val);
+ endpointConfig.addProperty(name, createValue(context, q));
+ } else if ("depends-on".equals(name)) {
+ endpointConfig.addDependsOn(val);
+ } else if ("implementor".equals(name)) {
+ if (val.startsWith("#")) {
+ impl = createRef(context, val.substring(1));
+ } else {
+ impl = createObjectOfClass(context, val);
+ }
+ } else if (!"name".equals(name)) {
+ endpointConfig.addProperty(name,
AbstractBPBeanDefinitionParser.createValue(context, val));
+ }
+ }
+ }
+
+ Element elem = DOMUtils.getFirstElement(element);
+ while (elem != null) {
+ String name = elem.getLocalName();
+ if ("properties".equals(name)) {
+ Metadata map = parseMapData(context, endpointConfig, elem);
+ endpointConfig.addProperty(name, map);
+ } else if ("binding".equals(name)) {
+ setFirstChildAsProperty(element, context, endpointConfig,
"bindingConfig");
+ } else if ("inInterceptors".equals(name) ||
"inFaultInterceptors".equals(name) || "outInterceptors".equals(name)
+ || "outFaultInterceptors".equals(name) ||
"features".equals(name) || "schemaLocations".equals(name) ||
"handlers".equals(name)) {
+ Metadata list = parseListData(context, endpointConfig, elem);
+ endpointConfig.addProperty(name, list);
+ } else {
+ setFirstChildAsProperty(element, context, endpointConfig,
name);
+ }
+
+ elem = DOMUtils.getNextElement(elem);
+ }
+ if (StringUtils.isEmpty(bus)) {
+ bus = "cxf";
+ }
+ //Will create a bus if needed...
+
+ endpointConfig.addProperty("bus", getBusRef(context, bus));
+ endpointConfig.setDestroyMethod("destroy");
+
endpointConfig.addArgument(AbstractBPBeanDefinitionParser.createValue(context,
address), String.class.getName(), 0);
+
+ //Register a bean that will post-process and pick the first available
camelContext to attach our endpoint to.
+ MutablePassThroughMetadata regProcessorFactory =
context.createMetadata(MutablePassThroughMetadata.class);
+ regProcessorFactory.setId(context.generateId());
+ regProcessorFactory.setObject(new PassThroughCallable<Object>(new
CxfCamelContextFinder(endpointConfig.getId(), context)));
+
+ MutableBeanMetadata regProcessor =
context.createMetadata(MutableBeanMetadata.class);
+ regProcessor.setId(context.generateId());
+ regProcessor.setRuntimeClass(CxfCamelContextFinder.class);
+ regProcessor.setFactoryComponent(regProcessorFactory);
+ regProcessor.setFactoryMethod("call");
+ regProcessor.setProcessor(true);
+ regProcessor.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
+
context.getComponentDefinitionRegistry().registerComponentDefinition(regProcessor);
+
+ return endpointConfig;
+ }
+
+ private Bundle getBlueprintBundle(ParserContext context) {
+ PassThroughMetadata metadata = (PassThroughMetadata)
context.getComponentDefinitionRegistry().getComponentDefinition("blueprintBundle");
+
+ Bundle result = null;
+ if (metadata != null) {
+ result = (Bundle) metadata.getObject();
+ }
+
+ return result;
+ }
+
+ public static class PassThroughCallable<T> implements Callable<T> {
+
+ private T value;
+
+ public PassThroughCallable(T value) {
+ this.value = value;
+ }
+
+ public T call() throws Exception {
+ return value;
+ }
+ }
+
+ public static class CxfCamelContextFinder implements
ComponentDefinitionRegistryProcessor {
+
+ private final String cxfEndpointName;
+ private final ParserContext context;
+ private BlueprintContainer blueprintContainer;
+
+ public CxfCamelContextFinder(String cxfEndpointName, ParserContext
context) {
+ this.cxfEndpointName = cxfEndpointName;
+ this.context = context;
+ }
+
+ public void setBlueprintContainer(BlueprintContainer
blueprintContainer) {
+ this.blueprintContainer = blueprintContainer;
+ }
+
+ public void process(ComponentDefinitionRegistry
componentDefinitionRegistry) {
+ MutableBeanMetadata bean = (MutableBeanMetadata)
blueprintContainer.getComponentMetadata(cxfEndpointName);
+
+ Set<String> components =
componentDefinitionRegistry.getComponentDefinitionNames();
+ for (String componentName : components) {
+ ComponentMetadata metaData =
context.getComponentDefinitionRegistry().getComponentDefinition(componentName);
+ if (metaData instanceof BeanMetadataImpl) {
+ BeanMetadataImpl bim = (BeanMetadataImpl) metaData;
+ if
(bim.getRuntimeClass().isAssignableFrom(BlueprintCamelContext.class)) {
+ //Found a CamelContext
+ bean.addArgument(createRef(context, metaData.getId()),
BlueprintCamelContext.class.getName(), 1);
+ }
+ }
+ }
+ }
+ }
+}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,61 @@
+/**
+ * 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.camel.component.cxf.blueprint;
+
+import java.util.StringTokenizer;
+import org.w3c.dom.Element;
+
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.camel.component.cxf.CxfBlueprintEndpoint;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
+import org.osgi.service.blueprint.reflect.Metadata;
+
+public class RsClientDefinitionParser extends AbstractBPBeanDefinitionParser {
+
+ public Metadata parse(Element element, ParserContext context) {
+ MutableBeanMetadata endpointConfig =
context.createMetadata(MutableBeanMetadata.class);
+ endpointConfig.setRuntimeClass(CxfBlueprintEndpoint.class);
+ endpointConfig.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
+ endpointConfig.addProperty("bundleContext", createRef(context,
"blueprintBundleContext"));
+
+ if (!StringUtils.isEmpty(getIdOrName(element))) {
+ endpointConfig.setId(getIdOrName(element));
+ } else {
+ endpointConfig.setId("camel.cxf.endpoint." + context.generateId());
+ }
+
+ return null;
+ }
+
+ public static String getIdOrName(Element elem) {
+ String id = elem.getAttribute("id");
+
+ if (null == id || "".equals(id)) {
+ String names = elem.getAttribute("name");
+ if (null != names) {
+ StringTokenizer st = new StringTokenizer(names, ",");
+ if (st.countTokens() > 0) {
+ id = st.nextToken();
+ }
+ }
+ }
+ return id;
+ }
+}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,22 @@
+/**
+ * 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.camel.component.cxf.blueprint;
+
+public class RsServerDefinitionParser {
+
+}
Added:
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/camel-cxf.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/camel-cxf.xml?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/camel-cxf.xml
(added)
+++
camel/trunk/components/camel-cxf/src/main/resources/OSGI-INF/blueprint/camel-cxf.xml
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,29 @@
+<!--
+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.
+-->
+
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <service interface="org.apache.aries.blueprint.NamespaceHandler">
+ <service-properties>
+ <entry key="osgi.service.blueprint.namespace"
value="http://camel.apache.org/schema/blueprint/cxf"/>
+ </service-properties>
+ <bean
class="org.apache.camel.component.cxf.blueprint.CxfNamespaceHandler"/>
+ </service>
+</blueprint>
\ No newline at end of file
Added:
camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd?rev=1097936&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
(added)
+++
camel/trunk/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
Fri Apr 29 20:12:54 2011
@@ -0,0 +1,170 @@
+<?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.
+-->
+<xsd:schema xmlns="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:beans="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:cxf-beans="http://cxf.apache.org/configuration/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ targetNamespace="http://camel.apache.org/schema/blueprint/cxf"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <xsd:import namespace="http://www.osgi.org/xmlns/blueprint/v1.0.0"
schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"/>
+ <xsd:import namespace="http://cxf.apache.org/configuration/beans"
schemaLocation="http://cxf.apache.org/schemas/configuration/cxf-beans.xsd"/>
+
+ <xsd:element name="cxfEndpoint">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="beans:Tcomponent">
+ <xsd:all>
+ <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="dataBinding" 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="handlers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="properties" type="beans:Tmap" minOccurs="0"/>
+ <xsd:element name="schemaLocations" type="schemasType"
minOccurs="0"/>
+ <xsd:element name="serviceBean" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="serviceFactory" type="xsd:anyType"
minOccurs="0"/>
+ </xsd:all>
+ <!-- xsd:attributeGroup ref="cxf-beans:beanAttributes"/-->
+ <xsd:attribute name="address" type="xsd:string"/>
+ <xsd:attribute name="bindingId" type="xsd:string"/>
+ <xsd:attribute name="bus" type="xsd:string"/>
+ <xsd:attribute name="serviceClass" type="xsd:string"/>
+ <xsd:attribute name="transportId" type="xsd:string"/>
+ <xsd:attribute name="wsdlURL" type="xsd:string"/>
+ <xsd:attribute name="endpointName" type="xsd:QName"/>
+ <xsd:attribute name="serviceName" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="rsServer">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="beans:Tcomponent">
+ <xsd:all>
+ <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="binding" 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:Tmap" minOccurs="0"/>
+ <xsd:element name="serviceBeans" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="modelBeans" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="model" type="model" minOccurs="0"/>
+ <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="extensionMappings" type="xsd:anyType"
minOccurs="0"/>
+ <xsd:element name="languageMappings" type="xsd:anyType"
minOccurs="0"/>
+ <xsd:element name="schemaLocations" type="schemasType"
minOccurs="0"/>
+ </xsd:all>
+ <!-- xsd:attributeGroup ref="cxf-beans:beanAttributes"/-->
+ <xsd:attribute name="address" type="xsd:string"/>
+ <xsd:attribute name="bus" type="xsd:string"/>
+ <xsd:attribute name="serviceClass" type="xsd:string"/>
+ <xsd:attribute name="transportId" type="xsd:string"/>
+ <xsd:attribute name="modelRef" type="xsd:string"/>
+ <xsd:attribute name="bindingId" type="xsd:string"/>
+ <xsd:attribute name="staticSubresourceResolution"
type="xsd:boolean"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="rsClient">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="beans:Tcomponent">
+ <xsd:all>
+ <xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="binding" 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:Tmap" minOccurs="0"/>
+ <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="modelBeans" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="model" type="model" minOccurs="0"/>
+ <xsd:element name="headers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="schemaLocations" type="schemasType"
minOccurs="0"/>
+ </xsd:all>
+ <!-- xsd:attributeGroup ref="cxf-beans:beanAttributes"/-->
+ <xsd:attribute name="address" type="xsd:string"/>
+ <xsd:attribute name="serviceClass" type="xsd:string"/>
+ <xsd:attribute name="inheritHeaders" type="xsd:boolean"/>
+ <xsd:attribute name="bus" type="xsd:string"/>
+ <xsd:attribute name="transportId" type="xsd:string"/>
+ <xsd:attribute name="bindingId" type="xsd:string"/>
+ <xsd:attribute name="modelRef" type="xsd:string"/>
+ <xsd:attribute name="username" type="xsd:string"/>
+ <xsd:attribute name="password" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="schemasType">
+ <xsd:sequence>
+ <xsd:element name="schemaLocation" type="xsd:string" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="model">
+ <xsd:sequence>
+ <xsd:element name="resource" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="operation" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="param" minOccurs="0"
maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="type" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="path" type="xsd:string"/>
+ <xsd:attribute name="verb" type="xsd:string"/>
+ <xsd:attribute name="consumes" type="xsd:string"/>
+ <xsd:attribute name="produces" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="path" type="xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:string"/>
+ </xsd:complexType>
+</xsd:schema>
\ No newline at end of file