You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/04/27 09:32:05 UTC
svn commit: r532999 - in
/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src:
main/java/org/apache/servicemix/jsr181/xfire/
test/java/org/apache/servicemix/jsr181/ test/java/test/
Author: gnodet
Date: Fri Apr 27 00:32:04 2007
New Revision: 532999
URL: http://svn.apache.org/viewvc?view=rev&rev=532999
Log:
SM-940: OneWay operation are not supported on jsr181
Modified:
incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/xfire/JbiChannel.java
incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181SpringTest.java
incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/Echo.java
incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoProxy.java
incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoService2.java
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/xfire/JbiChannel.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/xfire/JbiChannel.java?view=diff&rev=532999&r1=532998&r2=532999
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/xfire/JbiChannel.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/xfire/JbiChannel.java Fri Apr 27 00:32:04 2007
@@ -20,10 +20,10 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.net.URI;
import javax.jbi.messaging.DeliveryChannel;
import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessageExchangeFactory;
import javax.jbi.messaging.NormalizedMessage;
@@ -36,6 +36,7 @@
import org.apache.servicemix.jbi.jaxp.StAXSourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.jbi.messaging.MessageExchangeSupport;
import org.apache.servicemix.jsr181.JBIContext;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.XFireException;
@@ -59,7 +60,7 @@
public static final String JBI_ENDPOINT = "jbi.endpoint";
public static final String JBI_SECURITY_PROPAGATATION = "jbi.security.propagation";
- private static ThreadLocal transformer = new ThreadLocal();
+ private static ThreadLocal<StAXSourceTransformer> transformer = new ThreadLocal<StAXSourceTransformer>();
public JbiChannel(String uri, JbiTransport transport) {
setTransport(transport);
@@ -67,7 +68,7 @@
}
protected static StAXSourceTransformer getTransformer() {
- StAXSourceTransformer t = (StAXSourceTransformer) transformer.get();
+ StAXSourceTransformer t = transformer.get();
if (t == null) {
t = new StAXSourceTransformer();
transformer.set(t);
@@ -96,52 +97,57 @@
try {
DeliveryChannel channel = ((JbiTransport) getTransport()).getContext().getDeliveryChannel();
MessageExchangeFactory factory = channel.createExchangeFactory();
- if (context.getExchange().hasOutMessage()) {
- InOut me = factory.createInOutExchange();
- me.setInterfaceName((QName) context.getService().getProperty(JBI_INTERFACE_NAME));
- me.setOperation(context.getExchange().getOperation().getQName());
- me.setService((QName) context.getService().getProperty(JBI_SERVICE_NAME));
- me.setEndpoint((ServiceEndpoint) context.getService().getProperty(JBI_ENDPOINT));
- NormalizedMessage msg = me.createMessage();
- me.setInMessage(msg);
- if (Boolean.TRUE.equals(context.getService().getProperty(JBI_SECURITY_PROPAGATATION))) {
- MessageExchange oldMe = JBIContext.getMessageExchange();
- NormalizedMessage oldMsg = (oldMe != null) ? oldMe.getMessage("in") : null;
- if (oldMsg != null) {
- msg.setSecuritySubject(oldMsg.getSecuritySubject());
- }
+ URI mep = null;
+ if (context.getExchange().getOperation().getOutputMessage() != null) {
+ mep = MessageExchangeSupport.IN_OUT;
+ } else if (context.getExchange().getOperation().getFaults().size() > 0) {
+ mep = MessageExchangeSupport.ROBUST_IN_ONLY;
+ } else {
+ mep = MessageExchangeSupport.IN_ONLY;
+ }
+ MessageExchange me = factory.createExchange(mep);
+ me.setInterfaceName((QName) context.getService().getProperty(JBI_INTERFACE_NAME));
+ me.setOperation(context.getExchange().getOperation().getQName());
+ me.setService((QName) context.getService().getProperty(JBI_SERVICE_NAME));
+ me.setEndpoint((ServiceEndpoint) context.getService().getProperty(JBI_ENDPOINT));
+ NormalizedMessage msg = me.createMessage();
+ me.setMessage(msg, "in");
+ if (Boolean.TRUE.equals(context.getService().getProperty(JBI_SECURITY_PROPAGATATION))) {
+ MessageExchange oldMe = JBIContext.getMessageExchange();
+ NormalizedMessage oldMsg = (oldMe != null) ? oldMe.getMessage("in") : null;
+ if (oldMsg != null) {
+ msg.setSecuritySubject(oldMsg.getSecuritySubject());
}
- msg.setContent(getContent(context, message));
- if (!channel.sendSync(me)) {
- throw new XFireException("Unable to send jbi exchange: sendSync returned false");
+ }
+ msg.setContent(getContent(context, message));
+ if (!channel.sendSync(me)) {
+ throw new XFireException("Unable to send jbi exchange: sendSync returned false");
+ }
+ if (me.getStatus() == ExchangeStatus.ERROR) {
+ if (me.getError() != null) {
+ throw new XFireFault(me.getError(), XFireFault.RECEIVER);
+ } else {
+ throw new XFireFault("Unkown Error", XFireFault.RECEIVER);
}
- if (me.getStatus() == ExchangeStatus.ERROR) {
- me.setStatus(ExchangeStatus.DONE);
- channel.send(me);
- if (me.getError() != null) {
- throw new XFireFault(me.getError(), XFireFault.RECEIVER);
- } else {
- throw new XFireFault("Unkown Error", XFireFault.RECEIVER);
- }
- } else if (me.getFault() != null) {
+ } else if (me.getStatus() == ExchangeStatus.ACTIVE) {
+ if (me.getFault() != null) {
JDOMResult result = new JDOMResult();
String str = getTransformer().contentToString(me.getFault());
getTransformer().toResult(new StringSource(str), result);
Element e = result.getDocument().getRootElement();
e = (Element) e.clone();
+ me.setStatus(ExchangeStatus.DONE);
+ channel.send(me);
XFireFault xfireFault = new XFireFault(str, XFireFault.RECEIVER);
xfireFault.getDetail().addContent(e);
throw xfireFault;
+ } else if (me.getMessage("out") != null) {
+ Source outSrc = me.getMessage("out").getContent();
+ InMessage inMessage = new InMessage(getTransformer().toXMLStreamReader(outSrc), getUri());
+ getEndpoint().onReceive(context, inMessage);
+ me.setStatus(ExchangeStatus.DONE);
+ channel.send(me);
}
- Source outSrc = me.getOutMessage().getContent();
-
- InMessage inMessage = new InMessage(getTransformer().toXMLStreamReader(outSrc), getUri());
- getEndpoint().onReceive(context, inMessage);
-
- me.setStatus(ExchangeStatus.DONE);
- channel.send(me);
- } else {
- // TODO
}
} catch (XFireException e) {
throw e;
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181SpringTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181SpringTest.java?view=diff&rev=532999&r1=532998&r2=532999
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181SpringTest.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/org/apache/servicemix/jsr181/Jsr181SpringTest.java Fri Apr 27 00:32:04 2007
@@ -60,6 +60,11 @@
assertEquals("world", result);
}
+ public void testProxyOneWay() throws Exception {
+ Echo echo = (Echo) context.getBean("proxy");
+ echo.oneWay("world");
+ }
+
protected AbstractXmlApplicationContext createBeanFactory() {
return new ClassPathXmlApplicationContext("org/apache/servicemix/jsr181/spring.xml");
}
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/Echo.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/Echo.java?view=diff&rev=532999&r1=532998&r2=532999
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/Echo.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/Echo.java Fri Apr 27 00:32:04 2007
@@ -16,11 +16,15 @@
*/
package test;
+import javax.jws.Oneway;
import javax.jws.WebService;
@WebService
public interface Echo {
String echo(String input);
+
+ @Oneway
+ void oneWay(String param);
}
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoProxy.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoProxy.java?view=diff&rev=532999&r1=532998&r2=532999
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoProxy.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoProxy.java Fri Apr 27 00:32:04 2007
@@ -37,5 +37,9 @@
public String echo(String input) {
return echo.echo(input);
}
+
+ public void oneWay(String param) {
+ echo.oneWay(param);
+ }
}
Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoService2.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoService2.java?view=diff&rev=532999&r1=532998&r2=532999
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoService2.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-jsr181/src/test/java/test/EchoService2.java Fri Apr 27 00:32:04 2007
@@ -25,4 +25,6 @@
return input;
}
+ public void oneWay(String param) {
+ }
}