You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sc...@apache.org on 2006/12/02 04:56:11 UTC
svn commit: r481502 - in
/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client:
JAXBDispatch.java XMLDispatch.java
Author: scheu
Date: Fri Dec 1 19:56:10 2006
New Revision: 481502
URL: http://svn.apache.org/viewvc?view=rev&rev=481502
Log:
AXIS2-1808
Contrbutor:Rich Scheuerle
Enable Dispatch<JAXB> Message Mode
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java?view=diff&rev=481502&r1=481501&r2=481502
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/JAXBDispatch.java Fri Dec 1 19:56:10 2006
@@ -17,7 +17,10 @@
package org.apache.axis2.jaxws.client;
import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service.Mode;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.jaxws.ExceptionFactory;
import org.apache.axis2.jaxws.client.async.AsyncResponse;
import org.apache.axis2.jaxws.description.EndpointDescription;
@@ -25,8 +28,10 @@
import org.apache.axis2.jaxws.message.Message;
import org.apache.axis2.jaxws.message.Protocol;
import org.apache.axis2.jaxws.message.databinding.JAXBBlockContext;
+import org.apache.axis2.jaxws.message.factory.BlockFactory;
import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
import org.apache.axis2.jaxws.message.factory.MessageFactory;
+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;
import org.apache.axis2.jaxws.registry.FactoryRegistry;
import org.apache.axis2.jaxws.spi.ServiceDelegate;
@@ -65,15 +70,25 @@
} else {
context = new JAXBBlockContext(clazz.getPackage().getName());
}
+ // Create a block from the value
Block block = factory.createFrom(value, context, null);
+ MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
- // The protocol of the Message that is created should be based
- // on the binding information available.
- Protocol proto = Protocol.getProtocolForBinding(endpointDesc.getClientBindingID());
+ if (mode.equals(Mode.PAYLOAD)) {
+ // Normal case
+
+ // The protocol of the Message that is created should be based
+ // on the binding information available.
+ Protocol proto = Protocol.getProtocolForBinding(endpointDesc.getClientBindingID());
+ message = mf.create(proto);
+ message.setBodyBlock(0, block);
+ } else {
+ // Message mode..rare case
+
+ // Create Message from block
+ message = mf.createFrom(block, null);
+ }
- MessageFactory mf = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
- message = mf.create(proto);
- message.setBodyBlock(0, block);
} catch (Exception e) {
throw ExceptionFactory.makeWebServiceException(e);
}
@@ -84,10 +99,28 @@
public Object getValueFromMessage(Message message) {
Object value = null;
try {
- JAXBBlockFactory factory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
- JAXBBlockContext context = new JAXBBlockContext(jaxbContext);
- Block block = message.getBodyBlock(0, context, factory);
- value = block.getBusinessObject(true);
+ if (mode.equals(Mode.PAYLOAD)) {
+ // Normal Case
+ JAXBBlockFactory factory = (JAXBBlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+ JAXBBlockContext context = new JAXBBlockContext(jaxbContext);
+ Block block = message.getBodyBlock(0, context, factory);
+ value = block.getBusinessObject(true);
+ } else {
+ // This is a very strange case, the user would need
+ // to have a JAXB object that represents the message (i.e. SOAPEnvelope)
+
+ // TODO: This doesn't seem right to me. We should not have an intermediate StringBlock.
+ // This is not performant. Scheu
+ OMElement messageOM = message.getAsOMElement();
+ String stringValue = messageOM.toString();
+ QName soapEnvQname = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
+
+ XMLStringBlockFactory stringFactory = (XMLStringBlockFactory) FactoryRegistry.getFactory(XMLStringBlockFactory.class);
+ Block stringBlock = stringFactory.createFrom(stringValue, null, soapEnvQname);
+ BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+ Block block = factory.createFrom(stringBlock, null);
+ value = block.getBusinessObject(true);
+ }
} catch (Exception e) {
throw ExceptionFactory.makeWebServiceException(e);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java?view=diff&rev=481502&r1=481501&r2=481502
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/XMLDispatch.java Fri Dec 1 19:56:10 2006
@@ -157,6 +157,8 @@
value = message.getAsSOAPMessage();
} else {
+ // NOTE Similar code in JAXBDispatch
+
// TODO: This doesn't seem right to me. We should not have an intermediate StringBlock.
// This is not performant. Scheu
OMElement messageOM = message.getAsOMElement();
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org