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


Reply via email to