You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2010/05/05 12:47:48 UTC
svn commit: r941240 -
/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
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);