[jira] Created: (CAMEL-118) Camel CXF Invoker component support

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
Camel CXF Invoker component support
-----------------------------------

                 Key: CAMEL-118
                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
             Project: Apache Camel
          Issue Type: Sub-task
          Components: camel-cxf
            Reporter: Willem Jiang
             Fix For: 1.2.0
         Attachments: cxf.patch, filestates

CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B

I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40018 ]

James Strachan commented on CAMEL-118:
--------------------------------------

After applying your changes I get these compile errors

{code}

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java:[24,38] package org.apache.cxf.transport.local does not exist

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java:[26,38] package org.apache.cxf.transport.local does not exist

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java:[33,18] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfConsumer

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java:[36,66] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfConsumer

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[30,38] package org.apache.cxf.transport.local does not exist

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java:[80,11] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[39,12] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[61,11] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[71,41] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[75,14] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CamelInvoker.java:[10,30] cannot find symbol
symbol  : class MessageContentsList
location: package org.apache.cxf.message

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java:[46,15] internal error; cannot instantiate org.apache.camel.component.cxf.CxfProducer.<init> at org.apache.camel.component.cxf.CxfProducer to ()

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[65,44] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[78,16] cannot find symbol
symbol  : class LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java:[78,65] cannot find symbol
symbol  : variable LocalTransportFactory
location: class org.apache.camel.component.cxf.CxfComponent

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CamelInvoker.java:[32,25] cannot find symbol
symbol  : class MessageContentsList
location: class org.apache.camel.component.cxf.CamelInvoker

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[78,31] cannot find symbol
symbol  : method getAddress()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[79,28] cannot find symbol
symbol  : method getServiceClass()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[80,63] cannot find symbol
symbol  : method getServiceClass()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[82,28] cannot find symbol
symbol  : method getWsdlURL()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[83,35] cannot find symbol
symbol  : method getWsdlURL()
location: class org.apache.camel.component.cxf.CxfEndpoint
{code}

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, filestates
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40019 ]

James Strachan commented on CAMEL-118:
--------------------------------------

BTW is it your intention in this patch to delete the CxfInvoke component right? Are you saying that you are combining both CXF components together right?

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, filestates
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40020 ]

James Strachan commented on CAMEL-118:
--------------------------------------

Adding back the transport-local dependency you deleted removes some of the compile errors...

{code}
/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java:[46,15] cannot find symbol
symbol  : constructor CxfProducer(org.apache.camel.component.cxf.CxfEndpoint,org.apache.cxf.transport.local.LocalTransportFactory)
location: class org.apache.camel.component.cxf.CxfProducer

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[78,31] cannot find symbol
symbol  : method getAddress()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[79,28] cannot find symbol
symbol  : method getServiceClass()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[80,63] cannot find symbol
symbol  : method getServiceClass()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[82,28] cannot find symbol
symbol  : method getWsdlURL()
location: class org.apache.camel.component.cxf.CxfEndpoint

/workspace/java/camel/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java:[83,35] cannot find symbol
symbol  : method getWsdlURL()
location: class org.apache.camel.component.cxf.CxfEndpoint
{code}

Am guessing you used a different CXF version?

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, filestates
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40021 ]

James Strachan commented on CAMEL-118:
--------------------------------------

Hmm - it seems that the patch cannot be applied on a few files - e.g. the CxfEndpoint.java patch. As it seems your patch is against an old version of the code?

e.g. your patch uses the line

{code}
  * @version $Revision$
{code}

when trunk is

{code}
 * @version $Revision: 563665 $
{code}

Any chance you could do an 'svn update' to ensure you are using the latest/greatest trunk, then create the patch again please? As right now I cant apply it

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, filestates
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang updated CAMEL-118:
-------------------------------

    Attachment: svn-rm.patch

remove the cxf invoke componet

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, filestates, svn-rm.patch
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang updated CAMEL-118:
-------------------------------

    Attachment: cxf.patch2

patch for cxf componets

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, cxf.patch2, filestates, svn-rm.patch
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40032 ]

James Strachan commented on CAMEL-118:
--------------------------------------

So I've tried IDEA, eclipse, patch and TextMate. None of them are capable of applying your latest cxf.patch2 file. I've no idea what it is you're doing thats screwing up any attempt at an automated apply.

How are you creating the patch file?

Here's the output from patch...

{code}
stracbook:/workspace/java/camel jstrachan$ patch -i ~/Desktop/cxf.patch2
(Stripping trailing CRs from patch.)
patching file CxfRouterTest.java
(Stripping trailing CRs from patch.)
patching file CxfProducerTest.java
(Stripping trailing CRs from patch.)
can't find file to patch at input line 227
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|
|Property changes on: components\camel-cxf\src\test\java\org\apache\camel\component\cxf\CxfProducerTest.java
|___________________________________________________________________
|Name: svn:keywords
|   + Rev Date
|Name: svn:eol-style
|   + native
|
|Index: components/camel-cxf/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java
|===================================================================
|--- components/camel-cxf/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java    (revision 570399)
|+++ components/camel-cxf/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java    (working copy)
--------------------------
File to patch: ^C
{code}

In Ecilpse most of the changes are marked with a red ! which means eclipse won't apply them.




> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, cxf.patch2, filestates, svn-rm.patch
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40033 ]

James Strachan commented on CAMEL-118:
--------------------------------------

Here are the rejections from TextMate (which seems to give the best rejection messages)

{code}
***************
*** 16,42 ****
   */
  package org.apache.camel.component.cxf;
 
- import java.net.URI;
  import java.util.Map;
 
  import org.apache.camel.CamelContext;
  import org.apache.camel.Endpoint;
  import org.apache.camel.impl.DefaultComponent;
- import org.apache.cxf.Bus;
- import org.apache.cxf.BusException;
- import org.apache.cxf.bus.CXFBusFactory;
- import org.apache.cxf.service.model.EndpointInfo;
- import org.apache.cxf.transport.DestinationFactoryManager;
- import org.apache.cxf.transport.local.LocalTransportFactory;
- import org.xmlsoap.schemas.wsdl.http.AddressType;
 
  /**
   * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Component</a>
 
   * @version $Revision$
   */
  public class CxfComponent extends DefaultComponent<CxfExchange> {
-     private LocalTransportFactory localTransportFactory;
 
      public CxfComponent() {
      }
--- 16,36 ----
   */
  package org.apache.camel.component.cxf;
 
  import java.util.Map;
 
  import org.apache.camel.CamelContext;
  import org.apache.camel.Endpoint;
  import org.apache.camel.impl.DefaultComponent;
+ import org.apache.camel.util.IntrospectionSupport;
 
+
  /**
   * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Component</a>
 
   * @version $Revision$
   */
  public class CxfComponent extends DefaultComponent<CxfExchange> {
+
 
      public CxfComponent() {
      }
{code}

{code}
***************
*** 18,72 ****
 
  import org.apache.camel.Processor;
  import org.apache.camel.impl.DefaultConsumer;
  import org.apache.cxf.message.Message;
  import org.apache.cxf.transport.Destination;
  import org.apache.cxf.transport.MessageObserver;
- import org.apache.cxf.transport.local.LocalTransportFactory;
 
  /**
   * A consumer of exchanges for a service in CXF
   *
   * @version $Revision$
   */
  public class CxfConsumer extends DefaultConsumer<CxfExchange> {
-     private CxfEndpoint endpoint;
-     private final LocalTransportFactory transportFactory;
      private Destination destination;
 
-     public CxfConsumer(CxfEndpoint endpoint, Processor processor, LocalTransportFactory transportFactory) {
          super(endpoint, processor);
          this.endpoint = endpoint;
-         this.transportFactory = transportFactory;
      }
 
      @Override
      protected void doStart() throws Exception {
-         super.doStart();
-
-         destination = transportFactory.getDestination(endpoint.getEndpointInfo());
-         destination.setMessageObserver(new MessageObserver() {
-             public void onMessage(Message message) {
-                 incomingCxfMessage(message);
-             }
-         });
      }
 
      @Override
      protected void doStop() throws Exception {
-         if (destination != null) {
-             destination.shutdown();
-         }
          super.doStop();
      }
 
-     protected void incomingCxfMessage(Message message) {
-         try {
-             CxfExchange exchange = endpoint.createExchange(message);
-             getProcessor().process(exchange);
-         } catch (Exception e) {
-             // TODO: what do do if we are getting processing errors from camel?
-             // Shutdown?
-             e.printStackTrace();
-         }
-     }
  }
--- 18,71 ----
 
  import org.apache.camel.Processor;
  import org.apache.camel.impl.DefaultConsumer;
+ import org.apache.cxf.endpoint.Server;
+ import org.apache.cxf.frontend.ServerFactoryBean;
  import org.apache.cxf.message.Message;
  import org.apache.cxf.transport.Destination;
  import org.apache.cxf.transport.MessageObserver;
 
+
  /**
   * A consumer of exchanges for a service in CXF
   *
   * @version $Revision$
   */
  public class CxfConsumer extends DefaultConsumer<CxfExchange> {
+     private CxfEndpoint endpoint;    
+     private Server server;
      private Destination destination;
 
+     public CxfConsumer(CxfEndpoint endpoint, Processor processor) throws ClassNotFoundException {
+        
          super(endpoint, processor);
+         System.out.println(processor.toString());
          this.endpoint = endpoint;
+         //we setup the interceptors by the endpoint configuration
+         //create server here, now we just use the simple front-end        
+         ServerFactoryBean svrBean = new ServerFactoryBean();
+         Class serviceClass = Class.forName(endpoint.getServiceClass());        
+         svrBean.setAddress(endpoint.getAddress());
+         svrBean.setServiceClass(serviceClass);
+         if (endpoint.isInvoker()) {
+             System.out.println("setup the invoker ");
+             svrBean.setInvoker(new CamelInvoker(this));
+         }    
+         svrBean.setStart(false);
+         server = svrBean.create();
      }
 
      @Override
      protected void doStart() throws Exception {
+         super.doStart();        
+        
+         server.start();
      }
 
      @Override
      protected void doStop() throws Exception {
+         server.stop();
          super.doStop();
      }
 
+    
  }
{code}

{code}
***************
*** 16,53 ****
   */
  package org.apache.camel.component.cxf;
 
  import org.apache.camel.Consumer;
  import org.apache.camel.Processor;
  import org.apache.camel.Producer;
  import org.apache.camel.impl.DefaultEndpoint;
- import org.apache.cxf.BusException;
  import org.apache.cxf.message.Message;
- import org.apache.cxf.service.model.EndpointInfo;
- import org.apache.cxf.transport.local.LocalTransportFactory;
 
  /**
   * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Endpoint</a>
   *
   * @version $Revision$
   */
- public class CxfEndpoint extends DefaultEndpoint<CxfExchange> {
      private CxfBinding binding;
-     private final CxfComponent component;
-     private final EndpointInfo endpointInfo;
      private boolean inOut = true;
 
-     public CxfEndpoint(String uri, CxfComponent component, EndpointInfo endpointInfo) {
          super(uri, component);
-         this.component = component;
-         this.endpointInfo = endpointInfo;
      }
-
      public Producer<CxfExchange> createProducer() throws Exception {
-         return new CxfProducer(this, getLocalTransportFactory());
      }
 
      public Consumer<CxfExchange> createConsumer(Processor processor) throws Exception {
-         return new CxfConsumer(this, processor, getLocalTransportFactory());
      }
 
      public CxfExchange createExchange() {
--- 16,59 ----
   */
  package org.apache.camel.component.cxf;
 
+ import javax.xml.namespace.QName;
+
  import org.apache.camel.Consumer;
  import org.apache.camel.Processor;
  import org.apache.camel.Producer;
  import org.apache.camel.impl.DefaultEndpoint;
+ import org.apache.cxf.endpoint.Endpoint;
  import org.apache.cxf.message.Message;
 
+
  /**
   * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Endpoint</a>
   *
   * @version $Revision$
   */
+ public class CxfEndpoint extends DefaultEndpoint<CxfExchange> {    
+     private final CxfComponent component;
+     private final String address;
+     private String wsdlURL;
+     private String serviceClass;
      private CxfBinding binding;
+     private QName portName;
+     private QName serviceName;
      private boolean inOut = true;
+     private boolean invoker = true;
 
+     public CxfEndpoint(String uri, String address, CxfComponent component) {
          super(uri, component);
+         this.component = component;        
+         this.address = address;
      }
+        
      public Producer<CxfExchange> createProducer() throws Exception {
+         return new CxfProducer(this);
      }
 
      public Consumer<CxfExchange> createConsumer(Processor processor) throws Exception {
+         return new CxfConsumer(this, processor);
      }
 
      public CxfExchange createExchange() {
{code}



> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, cxf.patch2, filestates, svn-rm.patch
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

Re: [jira] Commented: (CAMEL-118) Camel CXF Invoker component support

Willem.Jiang
Administrator
I used svn diff to create the patch, and I am working on windows box.

James Strachan (JIRA) wrote:

>     [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40033 ]
>
> James Strachan commented on CAMEL-118:
> --------------------------------------
>
> Here are the rejections from TextMate (which seems to give the best rejection messages)
>
> {code}
> ***************
> *** 16,42 ****
>    */
>   package org.apache.camel.component.cxf;
>  
> - import java.net.URI;
>   import java.util.Map;
>  
>   import org.apache.camel.CamelContext;
>   import org.apache.camel.Endpoint;
>   import org.apache.camel.impl.DefaultComponent;
> - import org.apache.cxf.Bus;
> - import org.apache.cxf.BusException;
> - import org.apache.cxf.bus.CXFBusFactory;
> - import org.apache.cxf.service.model.EndpointInfo;
> - import org.apache.cxf.transport.DestinationFactoryManager;
> - import org.apache.cxf.transport.local.LocalTransportFactory;
> - import org.xmlsoap.schemas.wsdl.http.AddressType;
>  
>   /**
>    * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Component</a>
>  
>    * @version $Revision$
>    */
>   public class CxfComponent extends DefaultComponent<CxfExchange> {
> -     private LocalTransportFactory localTransportFactory;
>  
>       public CxfComponent() {
>       }
> --- 16,36 ----
>    */
>   package org.apache.camel.component.cxf;
>  
>   import java.util.Map;
>  
>   import org.apache.camel.CamelContext;
>   import org.apache.camel.Endpoint;
>   import org.apache.camel.impl.DefaultComponent;
> + import org.apache.camel.util.IntrospectionSupport;
>  
> +
>   /**
>    * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Component</a>
>  
>    * @version $Revision$
>    */
>   public class CxfComponent extends DefaultComponent<CxfExchange> {
> +
>  
>       public CxfComponent() {
>       }
> {code}
>
> {code}
> ***************
> *** 18,72 ****
>  
>   import org.apache.camel.Processor;
>   import org.apache.camel.impl.DefaultConsumer;
>   import org.apache.cxf.message.Message;
>   import org.apache.cxf.transport.Destination;
>   import org.apache.cxf.transport.MessageObserver;
> - import org.apache.cxf.transport.local.LocalTransportFactory;
>  
>   /**
>    * A consumer of exchanges for a service in CXF
>    *
>    * @version $Revision$
>    */
>   public class CxfConsumer extends DefaultConsumer<CxfExchange> {
> -     private CxfEndpoint endpoint;
> -     private final LocalTransportFactory transportFactory;
>       private Destination destination;
>  
> -     public CxfConsumer(CxfEndpoint endpoint, Processor processor, LocalTransportFactory transportFactory) {
>           super(endpoint, processor);
>           this.endpoint = endpoint;
> -         this.transportFactory = transportFactory;
>       }
>  
>       @Override
>       protected void doStart() throws Exception {
> -         super.doStart();
> -
> -         destination = transportFactory.getDestination(endpoint.getEndpointInfo());
> -         destination.setMessageObserver(new MessageObserver() {
> -             public void onMessage(Message message) {
> -                 incomingCxfMessage(message);
> -             }
> -         });
>       }
>  
>       @Override
>       protected void doStop() throws Exception {
> -         if (destination != null) {
> -             destination.shutdown();
> -         }
>           super.doStop();
>       }
>  
> -     protected void incomingCxfMessage(Message message) {
> -         try {
> -             CxfExchange exchange = endpoint.createExchange(message);
> -             getProcessor().process(exchange);
> -         } catch (Exception e) {
> -             // TODO: what do do if we are getting processing errors from camel?
> -             // Shutdown?
> -             e.printStackTrace();
> -         }
> -     }
>   }
> --- 18,71 ----
>  
>   import org.apache.camel.Processor;
>   import org.apache.camel.impl.DefaultConsumer;
> + import org.apache.cxf.endpoint.Server;
> + import org.apache.cxf.frontend.ServerFactoryBean;
>   import org.apache.cxf.message.Message;
>   import org.apache.cxf.transport.Destination;
>   import org.apache.cxf.transport.MessageObserver;
>  
> +
>   /**
>    * A consumer of exchanges for a service in CXF
>    *
>    * @version $Revision$
>    */
>   public class CxfConsumer extends DefaultConsumer<CxfExchange> {
> +     private CxfEndpoint endpoint;    
> +     private Server server;
>       private Destination destination;
>  
> +     public CxfConsumer(CxfEndpoint endpoint, Processor processor) throws ClassNotFoundException {
> +        
>           super(endpoint, processor);
> +         System.out.println(processor.toString());
>           this.endpoint = endpoint;
> +         //we setup the interceptors by the endpoint configuration
> +         //create server here, now we just use the simple front-end        
> +         ServerFactoryBean svrBean = new ServerFactoryBean();
> +         Class serviceClass = Class.forName(endpoint.getServiceClass());        
> +         svrBean.setAddress(endpoint.getAddress());
> +         svrBean.setServiceClass(serviceClass);
> +         if (endpoint.isInvoker()) {
> +             System.out.println("setup the invoker ");
> +             svrBean.setInvoker(new CamelInvoker(this));
> +         }    
> +         svrBean.setStart(false);
> +         server = svrBean.create();
>       }
>  
>       @Override
>       protected void doStart() throws Exception {
> +         super.doStart();        
> +        
> +         server.start();
>       }
>  
>       @Override
>       protected void doStop() throws Exception {
> +         server.stop();
>           super.doStop();
>       }
>  
> +    
>   }
> {code}
>
> {code}
> ***************
> *** 16,53 ****
>    */
>   package org.apache.camel.component.cxf;
>  
>   import org.apache.camel.Consumer;
>   import org.apache.camel.Processor;
>   import org.apache.camel.Producer;
>   import org.apache.camel.impl.DefaultEndpoint;
> - import org.apache.cxf.BusException;
>   import org.apache.cxf.message.Message;
> - import org.apache.cxf.service.model.EndpointInfo;
> - import org.apache.cxf.transport.local.LocalTransportFactory;
>  
>   /**
>    * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Endpoint</a>
>    *
>    * @version $Revision$
>    */
> - public class CxfEndpoint extends DefaultEndpoint<CxfExchange> {
>       private CxfBinding binding;
> -     private final CxfComponent component;
> -     private final EndpointInfo endpointInfo;
>       private boolean inOut = true;
>  
> -     public CxfEndpoint(String uri, CxfComponent component, EndpointInfo endpointInfo) {
>           super(uri, component);
> -         this.component = component;
> -         this.endpointInfo = endpointInfo;
>       }
> -
>       public Producer<CxfExchange> createProducer() throws Exception {
> -         return new CxfProducer(this, getLocalTransportFactory());
>       }
>  
>       public Consumer<CxfExchange> createConsumer(Processor processor) throws Exception {
> -         return new CxfConsumer(this, processor, getLocalTransportFactory());
>       }
>  
>       public CxfExchange createExchange() {
> --- 16,59 ----
>    */
>   package org.apache.camel.component.cxf;
>  
> + import javax.xml.namespace.QName;
> +
>   import org.apache.camel.Consumer;
>   import org.apache.camel.Processor;
>   import org.apache.camel.Producer;
>   import org.apache.camel.impl.DefaultEndpoint;
> + import org.apache.cxf.endpoint.Endpoint;
>   import org.apache.cxf.message.Message;
>  
> +
>   /**
>    * Defines the <a href="http://activemq.apache.org/camel/cxf.html">CXF Endpoint</a>
>    *
>    * @version $Revision$
>    */
> + public class CxfEndpoint extends DefaultEndpoint<CxfExchange> {    
> +     private final CxfComponent component;
> +     private final String address;
> +     private String wsdlURL;
> +     private String serviceClass;
>       private CxfBinding binding;
> +     private QName portName;
> +     private QName serviceName;
>       private boolean inOut = true;
> +     private boolean invoker = true;
>  
> +     public CxfEndpoint(String uri, String address, CxfComponent component) {
>           super(uri, component);
> +         this.component = component;        
> +         this.address = address;
>       }
> +        
>       public Producer<CxfExchange> createProducer() throws Exception {
> +         return new CxfProducer(this);
>       }
>  
>       public Consumer<CxfExchange> createConsumer(Processor processor) throws Exception {
> +         return new CxfConsumer(this, processor);
>       }
>  
>       public CxfExchange createExchange() {
> {code}
>
>
>
>  
>> Camel CXF Invoker component support
>> -----------------------------------
>>
>>                 Key: CAMEL-118
>>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>>             Project: Apache Camel
>>          Issue Type: Sub-task
>>          Components: camel-cxf
>>            Reporter: Willem Jiang
>>             Fix For: 1.2.0
>>
>>         Attachments: cxf.patch, cxf.patch2, filestates, svn-rm.patch
>>
>>
>> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
>> I attached a patch and a svn state out put which would be helpful to verify the files statues
>>    
>
>  

Reply | Threaded
Open this post in threaded view
|

[jira] Resolved: (CAMEL-118) Camel CXF Invoker component support

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/activemq/browse/CAMEL-118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James Strachan resolved CAMEL-118.
----------------------------------

    Resolution: Fixed

Patch applied with thanks! Could you check I've applied it correctly please?

> Camel CXF Invoker component support
> -----------------------------------
>
>                 Key: CAMEL-118
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-118
>             Project: Apache Camel
>          Issue Type: Sub-task
>          Components: camel-cxf
>            Reporter: Willem Jiang
>             Fix For: 1.2.0
>
>         Attachments: cxf.patch, cxf.patch2, filestates, svn-rm.patch
>
>
> CXFProducer  holds the CXF client's reference,CXFConsumer holds the  CXF server's reference, Now I just wrote a router test which redirect a service request from CXFService A to CXFService B
> I attached a patch and a svn state out put which would be helpful to verify the files statues

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.