You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2011/01/26 10:27:52 UTC

svn commit: r1063655 - /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java

Author: hiranya
Date: Wed Jan 26 09:27:52 2011
New Revision: 1063655

URL: http://svn.apache.org/viewvc?rev=1063655&view=rev
Log:
Refactoring the cache mediator

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=1063655&r1=1063654&r2=1063655&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 Jan 26 09:27:52 2011
@@ -20,9 +20,6 @@
 package org.apache.synapse.mediators.builtin;
 
 import org.apache.axis2.AxisFault;
-import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.saaj.util.IDGenerator;
-import org.apache.axis2.saaj.util.SAAJUtil;
 import org.apache.axis2.clustering.ClusteringFault;
 import org.apache.axis2.clustering.state.Replicator;
 import org.apache.axis2.context.ConfigurationContext;
@@ -37,20 +34,18 @@ import org.apache.synapse.mediators.Abst
 import org.apache.synapse.mediators.base.SequenceMediator;
 import org.apache.synapse.util.FixedByteArrayOutputStream;
 import org.apache.synapse.util.MessageHelper;
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.wso2.caching.CacheManager;
 import org.wso2.caching.CachedObject;
 import org.wso2.caching.CachingConstants;
 import org.wso2.caching.CachingException;
+import org.wso2.caching.util.SOAPMessageHelper;
 import org.wso2.caching.digest.DigestGenerator;
 
 import javax.xml.soap.SOAPException;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.soap.MimeHeaders;
 import javax.xml.stream.XMLStreamException;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.ByteArrayInputStream;
 
 /**
  * CacheMediator will cache the response messages indexed using the hash value of the
@@ -284,32 +279,12 @@ public class CacheMediator extends Abstr
                 // mark as a response and replace envelope from cache
                 synCtx.setResponse(true);
                 try {
-                    MessageFactory mf = MessageFactory.newInstance();
-                    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);
-                    }
+                    SOAPEnvelope omSOAPEnv = SOAPMessageHelper.buildSOAPEnvelopeFromBytes(
+                            cachedObj.getResponseEnvelope());
 
                     // 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 : "
                         + cacheKey, synCtx);