You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sc...@apache.org on 2006/11/10 21:40:52 UTC
svn commit: r473462 - in /webservices/axis2/trunk/java/modules/jaxws:
src/org/apache/axis2/jaxws/client/ src/org/apache/axis2/jaxws/client/proxy/
src/org/apache/axis2/jaxws/core/ src/org/apache/axis2/jaxws/core/controller/
src/org/apache/axis2/jaxws/me...
Author: scheu
Date: Fri Nov 10 12:40:51 2006
New Revision: 473462
URL: http://svn.apache.org/viewvc?view=rev&rev=473462
Log:
AXIS2-1674
Contributor: Rich Scheuerle
Added support for MimeHeaders for Dispatch<SOAPMessage> & Provider<SOAPMessage>...plus some minor bug fixes
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/BaseDispatch.java Fri Nov 10 12:40:51 2006
@@ -132,9 +132,9 @@
XMLFault fault = responseMsg.getXMLFault();
throw ExceptionFactory.makeWebServiceException(fault.getReason().getText());
}
- else if (responseMsg.getLocalException() != null) {
+ else if (responseMsgCtx.getLocalException() != null) {
// use the factory, it'll throw the right thing:
- throw ExceptionFactory.makeWebServiceException(responseMsg.getLocalException());
+ throw ExceptionFactory.makeWebServiceException(responseMsgCtx.getLocalException());
}
} catch (MessageException e) {
throw ExceptionFactory.makeWebServiceException(e);
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java Fri Nov 10 12:40:51 2006
@@ -316,9 +316,9 @@
}
throw (Throwable)object;
- } else if (responseMsg.getLocalException() != null) {
+ } else if (responseContext.getLocalException() != null) {
// use the factory, it'll throw the right thing:
- throw ExceptionFactory.makeWebServiceException(responseMsg.getLocalException());
+ throw ExceptionFactory.makeWebServiceException(responseContext.getLocalException());
}
Object object = methodMarshaller.demarshalResponse(responseMsg, args);
if (log.isDebugEnabled()) {
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/MessageContext.java Fri Nov 10 12:40:51 2006
@@ -52,6 +52,10 @@
private QName operationName; //FIXME: This should become the OperationDescription
private Message message;
private Mode mode;
+
+ // If a local exception is thrown, the exception is placed on the message context.
+ // It is not converted into a Message.
+ private Throwable localException = null;
public MessageContext() {
axisMsgCtx = new org.apache.axis2.context.MessageContext();
@@ -144,5 +148,26 @@
}
return maintainSession;
+ }
+
+ /**
+ * The local exception is the Throwable object held on the Message
+ * from a problem that occurred due to something other than the
+ * server. In other words, no message ever travelled across the wire.
+ * @return the Throwable object or null
+ */
+ public Throwable getLocalException() {
+ return localException;
+ }
+
+ /**
+ * The local exception is the Throwable object held on the Message
+ * from a problem that occurred due to something other than the
+ * server. In other words, no message ever travelled across the wire.
+ * @param t
+ * @see Throwable
+ */
+ public void setLocalException(Throwable t) {
+ localException = t;
}
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/core/controller/AxisInvocationController.java Fri Nov 10 12:40:51 2006
@@ -138,7 +138,7 @@
if (response.getMessage() == null && faultexception != null) {
MessageFactory factory = (MessageFactory) FactoryRegistry.getFactory(MessageFactory.class);
Message message = factory.create(request.getMessage().getProtocol());
- message.setLocalException(faultexception);
+ response.setLocalException(faultexception);
response.setMessage(message);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Message.java Fri Nov 10 12:40:51 2006
@@ -19,6 +19,7 @@
import java.util.List;
import javax.activation.DataHandler;
+import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPMessage;
/**
@@ -95,20 +96,13 @@
public void setMTOMEnabled(boolean b);
/**
- * The local exception is the Throwable object held on the Message
- * from a problem that occurred due to something other than the
- * server. In other words, no message ever travelled across the wire.
- * @return the Throwable object or null
+ * @return get the MimeHeaders
*/
- public Throwable getLocalException();
-
+ public MimeHeaders getMimeHeaders();
+
/**
- * The local exception is the Throwable object held on the Message
- * from a problem that occurred due to something other than the
- * server. In other words, no message ever travelled across the wire.
- * @param t
- * @see Throwable
+ * Set the MimeHeaders
+ * @param mhs MimeHeaders
*/
- public void setLocalException(Throwable t);
-
+ public void setMimeHeaders(MimeHeaders mhs);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java Fri Nov 10 12:40:51 2006
@@ -174,13 +174,8 @@
am.setMessage(msg);
m.setAttachmentMarshaller(am);
}
- if (busObject instanceof JAXBElement) {
- m.marshal(busObject, writer);
- } else {
- JAXBElement b = new JAXBElement(this.getQName(), busObject.getClass(), busObject);
- m.marshal(b, writer);
- }
+ m.marshal(busObject, writer);
// Successfully marshalled the data
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/MessageImpl.java Fri Nov 10 12:40:51 2006
@@ -27,6 +27,7 @@
import javax.xml.namespace.QName;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeader;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
@@ -67,7 +68,7 @@
XMLPart xmlPart = null; // the representation of the xmlpart
List<Attachment> attachments = new ArrayList<Attachment>(); // non-xml parts
boolean mtomEnabled;
- Throwable localException = null;
+ private MimeHeaders mimeHeaders = new MimeHeaders();
// Constants
private static final String SOAP11_ENV_NS = "http://schemas.xmlsoap.org/soap/envelope/";
@@ -177,10 +178,9 @@
// Create soapMessage object from Message Factory using the input
// stream created from OM.
-
- // TODO should we read the MIME Header from JAXWS MessageContext.
- // For now I will create a default header
- MimeHeaders defaultHeader = new MimeHeaders();
+
+ // Get the MimeHeaders
+ MimeHeaders defaultHeaders = this.getMimeHeaders();
// Toggle based on SOAP 1.1 or SOAP 1.2
String contentType = null;
@@ -189,8 +189,10 @@
} else {
contentType = SOAP12_CONTENT_TYPE;
}
- defaultHeader.addHeader("Content-type", contentType +"; charset=UTF-8");
- SOAPMessage soapMessage = mf.createMessage(defaultHeader, inStream);
+
+ // Override the content-type
+ defaultHeaders.setHeader("Content-type", contentType +"; charset=UTF-8");
+ SOAPMessage soapMessage = mf.createMessage(defaultHeaders, inStream);
// At this point the XMLPart is still an OMElement. We need to change it to the new SOAPEnvelope.
createXMLPart(soapMessage.getSOAPPart().getEnvelope());
@@ -385,14 +387,6 @@
public String getXMLPartContentType() {
return xmlPart.getXMLPartContentType();
}
-
- public Throwable getLocalException() {
- return localException;
- }
-
- public void setLocalException(Throwable t) {
- localException = t;
- }
public Style getStyle() {
return xmlPart.getStyle();
@@ -410,5 +404,21 @@
xmlPart.setOperationElement(operationQName);
}
+ /* (non-Javadoc)
+ * @see org.apache.axis2.jaxws.message.Attachment#getMimeHeaders()
+ */
+ public MimeHeaders getMimeHeaders() {
+ return mimeHeaders;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.axis2.jaxws.message.Attachment#setMimeHeaders(javax.xml.soap.MimeHeaders)
+ */
+ public void setMimeHeaders(MimeHeaders mhs) {
+ mimeHeaders = mhs;
+ if (mimeHeaders == null) {
+ mimeHeaders = new MimeHeaders();
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java Fri Nov 10 12:40:51 2006
@@ -17,6 +17,7 @@
package org.apache.axis2.jaxws.message.util;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -53,6 +54,7 @@
import org.apache.axis2.jaxws.registry.FactoryRegistry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
/**
@@ -164,6 +166,18 @@
throw ExceptionFactory.makeWebServiceException("Could not create new Message");
}
+ // Add all the MimeHeaders from the Axis2 MessageContext
+ MimeHeaders mhs = message.getMimeHeaders();
+ HashMap headerMap = (HashMap) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+ if (headerMap != null) {
+ Iterator it = headerMap.keySet().iterator();
+ while (it.hasNext()) {
+ String key = (String) it.next();
+ String value = (String) headerMap.get(key);
+ mhs.addHeader(key, value);
+ }
+ }
+
// FIXME: This should be revisited when we re-work the MTOM support.
//This destroys performance by forcing a double pass through the message.
//If attachments are found on the MessageContext, then that means
@@ -241,6 +255,14 @@
// Put the XML message on the Axis 2 Message Context
SOAPEnvelope envelope = (SOAPEnvelope) message.getAsOMElement();
msgContext.setEnvelope(envelope);
+
+ // Put the Headers onto the MessageContext
+ HashMap headerMap = new HashMap();
+ for (Iterator it = message.getMimeHeaders().getAllHeaders(); it.hasNext();) {
+ MimeHeader mh = (MimeHeader) it.next();
+ headerMap.put(mh.getName(), mh.getValue());
+ }
+ msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
// Enable MTOM Attachments
if (message.isMTOMEnabled()) {
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/SoapMessageProviderTests.java Fri Nov 10 12:40:51 2006
@@ -95,10 +95,17 @@
SOAPMessage request = factory.createMessage(null,
new ByteArrayInputStream(msg.getBytes()));
+ // Test the transport headers by sending a content description
+ request.setContentDescription(SoapMessageProvider.XML_REQUEST);
+
// Dispatch
System.out.println(">> Invoking SourceMessageProviderDispatch");
SOAPMessage response = dispatch.invoke(request);
+ // Check for valid content description
+ assert(response.getContentDescription() != null);
+ assert(response.getContentDescription().equals(SoapMessageProvider.XML_RESPONSE));
+
// Check assertions and get the data element
SOAPElement dataElement = assertResponseXML(response, SoapMessageProvider.XML_RESPONSE);
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java?view=diff&rev=473462&r1=473461&r2=473462
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/provider/soapmsg/SoapMessageProvider.java Fri Nov 10 12:40:51 2006
@@ -163,6 +163,10 @@
private SOAPMessage getXMLResponse(SOAPMessage request, SOAPElement dataElement) throws Exception {
SOAPMessage response;
+ // Transport header check
+ assert(request.getContentDescription() != null);
+ assert(request.getContentDescription().equals(SoapMessageProvider.XML_REQUEST));
+
// Additional assertion checks
assert(countAttachments(request) == 0);
@@ -171,6 +175,8 @@
String responseXML = responseMsgStart + XML_RETURN + responseMsgEnd;
response = factory.createMessage(null, new ByteArrayInputStream(responseXML.getBytes()));
+ // Set a content description
+ response.setContentDescription(SoapMessageProvider.XML_RESPONSE);
return response;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org