You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2007/11/23 08:32:19 UTC
svn commit: r597579 - in /servicemix/branches/servicemix-4.0/camel: ./
src/main/java/org/apache/servicemix/camel/
src/test/java/org/apache/servicemix/camel/
Author: ffang
Date: Thu Nov 22 23:32:15 2007
New Revision: 597579
URL: http://svn.apache.org/viewvc?rev=597579&view=rev
Log:
[SM-1133] verify how camel is used as core of jax-ws process
Added:
servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java (with props)
servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java (with props)
servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java (with props)
Modified:
servicemix/branches/servicemix-4.0/camel/pom.xml
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixComponent.java
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixConsumer.java
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixEndpoint.java
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixExchange.java
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixMessage.java
servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixProducer.java
Modified: servicemix/branches/servicemix-4.0/camel/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/pom.xml?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/pom.xml (original)
+++ servicemix/branches/servicemix-4.0/camel/pom.xml Thu Nov 22 23:32:15 2007
@@ -34,10 +34,16 @@
<version>4.0-SNAPSHOT</version>
<name>ServiceMix Camel</name>
+ <properties>
+ <cxf.version>2.0.3-incubator</cxf.version>
+ <jaxb-impl.version>2.0.1</jaxb-impl.version>
+ <jaxb-api.version>2.0</jaxb-api.version>
+ </properties>
+
<dependencies>
<dependency>
<groupId>org.apache.servicemix.nmr</groupId>
- <artifactId>org.apache.servicemix.nmr.api</artifactId>
+ <artifactId>org.apache.servicemix.nmr.osgi</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@@ -46,10 +52,56 @@
<version>${camel.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <version>${camel.version}</version>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-spring</artifactId>
+ <version>${camel.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-cxf</artifactId>
+ <version>${camel.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-http</artifactId>
+ <version>${camel.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-spring</artifactId>
+ <version>${camel.version}</version>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jaxb-impl</artifactId>
+ <version>${jaxb-impl.version}-${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jaxb-api</artifactId>
+ <version>${jaxb-api.version}-${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.cxf</artifactId>
+ <version>${cxf.version}-${pom.version}</version>
</dependency>
</dependencies>
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixComponent.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixComponent.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixComponent.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixComponent.java Thu Nov 22 23:32:15 2007
@@ -42,7 +42,7 @@
}
protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
- return new ServiceMixEndpoint(this, uri);
+ return new ServiceMixEndpoint(this, uri, remaining);
}
public void registerEndpoint(org.apache.servicemix.nmr.api.Endpoint endpoint, Map<String, ?> properties) {
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixConsumer.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixConsumer.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixConsumer.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixConsumer.java Thu Nov 22 23:32:15 2007
@@ -21,6 +21,7 @@
import org.apache.servicemix.nmr.api.Channel;
import org.apache.servicemix.nmr.api.Exchange;
import org.apache.servicemix.nmr.api.Status;
+import org.apache.servicemix.nmr.api.service.ServiceHelper;
/**
* Created by IntelliJ IDEA.
@@ -29,7 +30,7 @@
* Time: 8:59:46 AM
* To change this template use File | Settings | File Templates.
*/
-public class ServiceMixConsumer extends DefaultConsumer implements org.apache.servicemix.nmr.api.Endpoint {
+public class ServiceMixConsumer extends DefaultConsumer<ServiceMixExchange> implements org.apache.servicemix.nmr.api.Endpoint {
private Channel channel;
@@ -43,11 +44,15 @@
protected void doStart() throws Exception {
super.doStart();
- getEndpoint().getComponent().registerEndpoint(this, null);
+ getEndpoint().getComponent().registerEndpoint(this,
+ ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+ getEndpoint().getEndpointName()));
}
protected void doStop() throws Exception {
- getEndpoint().getComponent().unregisterEndpoint(this, null);
+ getEndpoint().getComponent().unregisterEndpoint(this,
+ ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+ getEndpoint().getEndpointName()));
super.doStop();
}
@@ -56,10 +61,18 @@
}
public void process(Exchange exchange) {
- if (exchange.getStatus() == Status.Active) {
+ if (exchange.getStatus() == Status.Active) {
try {
- getAsyncProcessor().process(new ServiceMixExchange(exchange));
+ ServiceMixExchange smExchange = getEndpoint().createExchange(exchange.getIn(), exchange);
+ getAsyncProcessor().process(smExchange);
+ exchange.setStatus(Status.Done);
+
+ //there is a bug in camel cxf so the smExchange.getOut().getBody() is null;
+ // fixed in my working copy
+ exchange.getOut().setBody(smExchange.getOut().getBody());
+ channel.send(exchange);
} catch (Exception e) {
+ e.printStackTrace();
exchange.setError(e);
exchange.setStatus(Status.Error);
channel.send(exchange);
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixEndpoint.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixEndpoint.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixEndpoint.java Thu Nov 22 23:32:15 2007
@@ -16,11 +16,14 @@
*/
package org.apache.servicemix.camel;
+
import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.ExchangePattern;
import org.apache.camel.Producer;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
-import org.apache.camel.Component;
+import org.apache.servicemix.nmr.api.Exchange;
+
/**
* Created by IntelliJ IDEA.
@@ -31,8 +34,11 @@
*/
public class ServiceMixEndpoint extends DefaultEndpoint {
- public ServiceMixEndpoint(ServiceMixComponent component, String uri) {
+ private String endpointName;
+
+ public ServiceMixEndpoint(ServiceMixComponent component, String uri, String endpointName) {
super(uri, component);
+ this.setEndpointName(endpointName);
}
public ServiceMixComponent getComponent() {
@@ -50,4 +56,25 @@
public Consumer createConsumer(Processor processor) throws Exception {
return new ServiceMixConsumer(this, processor);
}
+
+ public ServiceMixExchange createExchange(Exchange exchange) {
+ return new ServiceMixExchange(getContext(), getExchangePattern(), exchange);
+ }
+
+ public ServiceMixExchange createExchange(ExchangePattern pattern, Exchange exchange) {
+ return new ServiceMixExchange(getContext(), pattern, exchange);
+ }
+
+ public ServiceMixExchange createExchange(org.apache.servicemix.nmr.api.Message inMessage, Exchange exchange) {
+ return new ServiceMixExchange(getContext(), getExchangePattern(), inMessage, exchange);
+ }
+
+
+ public void setEndpointName(String endpointName) {
+ this.endpointName = endpointName;
+ }
+
+ public String getEndpointName() {
+ return endpointName;
+ }
}
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixExchange.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixExchange.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixExchange.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixExchange.java Thu Nov 22 23:32:15 2007
@@ -16,11 +16,12 @@
*/
package org.apache.servicemix.camel;
-import org.apache.camel.Exchange;
+
import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
+
import org.apache.camel.CamelContext;
-import org.apache.camel.spi.UnitOfWork;
+import org.apache.camel.impl.DefaultExchange;
+
import java.util.Map;
@@ -31,22 +32,43 @@
* Time: 8:50:07 AM
* To change this template use File | Settings | File Templates.
*/
-public class ServiceMixExchange implements Exchange {
+public class ServiceMixExchange extends DefaultExchange {
private org.apache.servicemix.nmr.api.Exchange exchange;
- private ServiceMixMessage in;
- private ServiceMixMessage out;
- private ServiceMixMessage fault;
+
- public ServiceMixExchange(org.apache.servicemix.nmr.api.Exchange exchange) {
+ public ServiceMixExchange(org.apache.servicemix.nmr.api.Exchange exchange, CamelContext camelContext) {
+ super(camelContext);
this.exchange = exchange;
+ setIn(new ServiceMixMessage(exchange.getIn()));
+ setOut(new ServiceMixMessage(exchange.getOut()));
+ if (exchange.getFault() != null) {
+ setFault(new ServiceMixMessage(exchange.getFault()));
+ }
}
- public ExchangePattern getPattern() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
+ public ServiceMixExchange(CamelContext context, ExchangePattern pattern, org.apache.servicemix.nmr.api.Exchange exchange) {
+ super(context, pattern);
+ this.exchange = exchange;
+ setIn(new ServiceMixMessage(exchange.getIn()));
+ setOut(new ServiceMixMessage(exchange.getOut()));
+ if (exchange.getFault() != null) {
+ setFault(new ServiceMixMessage(exchange.getFault()));
+ }
+ }
+
+ public ServiceMixExchange(CamelContext context, ExchangePattern exchangePattern, org.apache.servicemix.nmr.api.Message inMessage,
+ org.apache.servicemix.nmr.api.Exchange exchange) {
+ super(context, exchangePattern);
+ setIn(new ServiceMixMessage(exchange.getIn()));
+ setOut(new ServiceMixMessage(exchange.getOut()));
+ if (exchange.getFault() != null) {
+ setFault(new ServiceMixMessage(exchange.getFault()));
+ }
+ this.exchange = exchange;
+ }
- public Object getProperty(String name) {
+ public Object getProperty(String name) {
return exchange.getProperty(name);
}
@@ -55,7 +77,7 @@
}
public void setProperty(String name, Object value) {
- exchange.setProperty(name, value);
+ exchange.setProperty(name, value);
}
public Object removeProperty(String name) {
@@ -68,75 +90,40 @@
return exchange.getProperties();
}
- public Message getIn() {
- return null;
- }
-
- public Message getOut() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
- public Message getOut(boolean lazyCreate) {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public ServiceMixMessage getIn() {
+ return (ServiceMixMessage) super.getIn();
}
- public Message getFault() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
- public Message getFault(boolean lazyCreate) {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public ServiceMixMessage getOut() {
+ return (ServiceMixMessage) super.getOut();
}
- public Throwable getException() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
- public void setException(Throwable e) {
- //To change body of implemented methods use File | Settings | File Templates.
+ public ServiceMixMessage getOut(boolean lazyCreate) {
+ return (ServiceMixMessage) super.getOut(lazyCreate);
}
- public boolean isFailed() {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
- public CamelContext getContext() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public ServiceMixMessage getFault() {
+ return (ServiceMixMessage) super.getFault();
}
+
- public Exchange copy() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ @Override
+ protected ServiceMixMessage createInMessage() {
+ return new ServiceMixMessage();
}
- public void copyFrom(Exchange source) {
- //To change body of implemented methods use File | Settings | File Templates.
+ @Override
+ protected ServiceMixMessage createOutMessage() {
+ return new ServiceMixMessage();
}
-
- public UnitOfWork getUnitOfWork() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+
+ @Override
+ protected org.apache.camel.Message createFaultMessage() {
+ return new ServiceMixMessage();
}
- public String getExchangeId() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setExchangeId(String id) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setUnitOfWork(UnitOfWork unitOfWork) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Exchange newInstance() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setIn(Message message) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setOut(Message message) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
}
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixMessage.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixMessage.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixMessage.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixMessage.java Thu Nov 22 23:32:15 2007
@@ -18,6 +18,7 @@
import org.apache.camel.Message;
import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultMessage;
import org.apache.camel.util.UuidGenerator;
import java.util.Map;
@@ -29,7 +30,7 @@
* Time: 9:06:27 AM
* To change this template use File | Settings | File Templates.
*/
-public class ServiceMixMessage implements Message {
+public class ServiceMixMessage extends DefaultMessage {
private static final UuidGenerator DEFALT_ID_GENERATOR = new UuidGenerator();
@@ -38,7 +39,16 @@
private String messageId = DEFALT_ID_GENERATOR.generateId();
public ServiceMixMessage(ServiceMixExchange exchange, org.apache.servicemix.nmr.api.Message message) {
+ this.exchange = exchange;
this.message = message;
+ }
+
+ public ServiceMixMessage(org.apache.servicemix.nmr.api.Message message) {
+ this.message = message;
+ }
+
+ public ServiceMixMessage() {
+
}
public String getMessageId() {
Modified: servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixProducer.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixProducer.java?rev=597579&r1=597578&r2=597579&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixProducer.java (original)
+++ servicemix/branches/servicemix-4.0/camel/src/main/java/org/apache/servicemix/camel/ServiceMixProducer.java Thu Nov 22 23:32:15 2007
@@ -16,9 +16,13 @@
*/
package org.apache.servicemix.camel;
+import org.apache.camel.component.cxf.CxfConstants;
import org.apache.camel.impl.DefaultProducer;
import org.apache.camel.Exchange;
-import org.apache.camel.Endpoint;
+import org.apache.servicemix.nmr.api.Channel;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.api.Pattern;
+import org.apache.servicemix.nmr.api.service.ServiceHelper;
/**
* Created by IntelliJ IDEA.
@@ -27,7 +31,7 @@
* Time: 8:59:25 AM
* To change this template use File | Settings | File Templates.
*/
-public class ServiceMixProducer extends DefaultProducer {
+public class ServiceMixProducer extends DefaultProducer<ServiceMixExchange> {
public ServiceMixProducer(ServiceMixEndpoint endpoint) {
super(endpoint);
@@ -38,6 +42,27 @@
}
public void process(Exchange exchange) throws Exception {
- //To change body of implemented methods use File | Settings | File Templates.
+
+ NMR nmr = getEndpoint().getComponent().getNmr();
+ Channel client = nmr.createChannel();
+
+ // there is a bug in camel cxf exchange.getPattern().getWsdlUri() is always inonly
+ // fix it in my working copy
+ org.apache.servicemix.nmr.api.Exchange e = client.createExchange(
+ Pattern.fromWsdlUri(exchange.getPattern().getWsdlUri()));
+
+ try {
+ e.setTarget(nmr.getEndpointRegistry().lookup(
+ ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+ getEndpoint().getEndpointName())));
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ e.getIn().setBody(exchange.getIn().getBody());
+ e.getIn().setHeader(CxfConstants.OPERATION_NAME,
+ exchange.getIn().getHeader(CxfConstants.OPERATION_NAME));
+ client.sendSync(e);
+ exchange.getOut().setBody(e.getOut().getBody());
+
}
}
Added: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java?rev=597579&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java (added)
+++ servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java Thu Nov 22 23:32:15 2007
@@ -0,0 +1,26 @@
+/*
+ * 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.servicemix.camel;
+
+public interface HelloService {
+ String sayHello();
+
+ void ping();
+
+ String echo(String text);
+}
\ No newline at end of file
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloService.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java?rev=597579&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java (added)
+++ servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java Thu Nov 22 23:32:15 2007
@@ -0,0 +1,34 @@
+/*
+ * 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.servicemix.camel;
+
+public class HelloServiceImpl implements HelloService {
+ public String echo(String text) {
+ System.out.println("call for echo with " + text);
+ return text + " echo";
+ }
+
+ public void ping() {
+
+ }
+
+ public String sayHello() {
+ return "hello";
+ }
+}
+
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/HelloServiceImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java?rev=597579&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java (added)
+++ servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java Thu Nov 22 23:32:15 2007
@@ -0,0 +1,123 @@
+/*
+ * 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.servicemix.camel;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.CXFBusFactory;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.frontend.ClientFactoryBean;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+import org.w3c.dom.Document;
+
+
+
+public class SmxToCxfTest extends ContextTestSupport {
+ protected static final String ROUTER_ADDRESS = "http://localhost:9000/router";
+ protected static final String SERVICE_ADDRESS = "local://smx/helloworld";
+ protected static final String SERVICE_CLASS = "serviceClass=org.apache.servicemix.camel.HelloService";
+
+ private String routerEndpointURI = "cxf://" + ROUTER_ADDRESS + "?" + SERVICE_CLASS + "&dataFormat=POJO";
+ private String serviceEndpointURI = "cxf://" + SERVICE_ADDRESS + "?" + SERVICE_CLASS + "&dataFormat=POJO";
+
+ private ServerImpl server;
+ private CamelContext camelContext;
+ private ServiceMixComponent smxComponent;
+ private NMR nmr;
+
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ startService();
+ }
+
+ protected void startService() {
+ //start a service
+ ServerFactoryBean svrBean = new ServerFactoryBean();
+
+ svrBean.setAddress(SERVICE_ADDRESS);
+ svrBean.setServiceClass(HelloService.class);
+ svrBean.setServiceBean(new HelloServiceImpl());
+ svrBean.setBus(CXFBusFactory.getDefaultBus());
+
+ server = (ServerImpl)svrBean.create();
+ server.start();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (server != null) {
+ server.stop();
+ }
+ }
+
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from(routerEndpointURI).to("smx:testEndpoint");// like what do in binding component
+ from("smx:testEndpoint").to(serviceEndpointURI);// like what do in se
+ }
+ };
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ camelContext = new DefaultCamelContext();
+
+ smxComponent = new ServiceMixComponent();
+ nmr = new ServiceMix();
+ ((ServiceMix)nmr).init();
+ smxComponent.setNmr(nmr);
+ camelContext.addComponent("smx", smxComponent);
+ return camelContext;
+ }
+
+
+ public void testInvokingServiceFromCXFClient() throws Exception {
+ Bus bus = BusFactory.getDefaultBus();
+
+ ClientProxyFactoryBean proxyFactory = new ClientProxyFactoryBean();
+ ClientFactoryBean clientBean = proxyFactory.getClientFactoryBean();
+ clientBean.setAddress(ROUTER_ADDRESS);
+ clientBean.setServiceClass(HelloService.class);
+ clientBean.setBus(bus);
+
+ //this test works if patch for CAMEL-243 get applied
+ /*HelloService client = (HelloService) proxyFactory.create();
+ String result = client.echo("hello world");
+ assertEquals("we should get the right answer from router", "hello world echo", result);*/
+
+
+ }
+
+ class PojoInvokeDispatchProcessor implements Processor {
+ public void process(Exchange exchange) throws Exception {
+ System.out.println("PojoInvokeDispatchProcessor " + exchange.getIn().getBody());
+
+ }
+ }
+}
\ No newline at end of file
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/camel/src/test/java/org/apache/servicemix/camel/SmxToCxfTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date