Author: supun
Date: Wed May 5 10:47:47 2010
New Revision: 941240
URL: http://svn.apache.org/viewvc?rev=941240&view=rev
Log:
Fixing an issue with cache mediator not sopprting soap12
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java?rev=941240&r1=941239&r2=941240&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
Wed May 5 10:47:47 2010
@@ -20,10 +20,12 @@
package org.apache.synapse.mediators.builtin;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.clustering.ClusteringFault;
import org.apache.axis2.clustering.state.Replicator;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.saaj.util.SAAJUtil;
+import org.apache.axis2.saaj.util.IDGenerator;
import org.apache.synapse.ManagedLifecycle;
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseException;
@@ -282,15 +284,30 @@ public class CacheMediator extends Abstr
synCtx.setResponse(true);
try {
MessageFactory mf = MessageFactory.newInstance();
- SOAPMessage smsg = mf.createMessage(new MimeHeaders(),
- new
ByteArrayInputStream(cachedObj.getResponseEnvelope()));
-
- org.apache.axiom.soap.SOAPEnvelope omSOAPEnv =
-
SAAJUtil.toOMSOAPEnvelope(smsg.getSOAPPart().getDocumentElement());
+ SOAPMessage smsg;
+ if (synCtx.isSOAP11()) {
+ smsg = mf.createMessage(new MimeHeaders(),
+ new
ByteArrayInputStream(cachedObj.getResponseEnvelope()));
+ } else {
+ MimeHeaders mimeHeaders = new MimeHeaders();
+ mimeHeaders.addHeader("Content-ID",
IDGenerator.generateID());
+ mimeHeaders.addHeader("content-type",
+ HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML);
+ smsg = mf.createMessage(mimeHeaders,
+ new
ByteArrayInputStream((cachedObj).getResponseEnvelope()));
+ }
+ if (smsg != null) {
+ org.apache.axiom.soap.SOAPEnvelope omSOAPEnv =
+ SAAJUtil.toOMSOAPEnvelope(
+
smsg.getSOAPPart().getDocumentElement());
+ synCtx.setEnvelope(omSOAPEnv);
+ } else {
+ handleException("Unable to serve from the cache : " +
+ "Couldn't build the SOAP response from the
cached byte stream",
+ synCtx);
+ }
// todo: if there is a WSA messageID in the response, is
that need to be unique on each and every resp
-
- synCtx.setEnvelope(omSOAPEnv);
} catch (AxisFault axisFault) {
handleException("Error setting response envelope from
cache : "
+ cacheManagerKey, synCtx);