You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ru...@apache.org on 2008/05/01 07:58:34 UTC

svn commit: r652433 - in /synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/util/ extensions/src/main/java/org/apache/synapse/format/hessian/

Author: ruwan
Date: Wed Apr 30 22:58:34 2008
New Revision: 652433

URL: http://svn.apache.org/viewvc?rev=652433&view=rev
Log:
Fixing the Hessian builder to make the threshold value for switching from in-memory to file based configurable

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SynapseBinaryDataSource.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java
    synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/format/hessian/HessianMessageBuilder.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SynapseBinaryDataSource.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SynapseBinaryDataSource.java?rev=652433&r1=652432&r2=652433&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SynapseBinaryDataSource.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/SynapseBinaryDataSource.java Wed Apr 30 22:58:34 2008
@@ -19,10 +19,12 @@
 
 package org.apache.synapse.util;
 
-import org.apache.synapse.util.TemporaryData;
+import org.apache.synapse.core.SynapseEnvironment;
 
 import javax.activation.DataSource;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 
 /**
  * DataSource which will be used to pass the Hessian messages in to SOAP body within axis2/synapse
@@ -62,6 +64,23 @@
         inputstream.close();
     }
 
+    public SynapseBinaryDataSource(InputStream inputstream, String contentType,
+        SynapseEnvironment synEnv) throws IOException {
+
+        this.contentType = contentType;
+        this.data = synEnv.createTemporaryData();
+
+        OutputStream out = this.data.getOutputStream();
+        byte[] buffer = new byte[1024];
+        int c;
+        while ((c = inputstream.read(buffer)) != -1) {
+            out.write(buffer, 0, c);
+        }
+        out.flush();
+        out.close();
+        inputstream.close();
+    }
+
     public String getContentType() {
         return contentType;
     }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java?rev=652433&r1=652432&r2=652433&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java Wed Apr 30 22:58:34 2008
@@ -2,6 +2,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.config.SynapseConfiguration;
 
 import java.io.*;
 
@@ -262,7 +263,7 @@
         }
     }
 
-    protected void finalize() throws Throwable {
+    protected void finalize() throws Throwable {    
         if (temporaryFile != null) {
             log.warn("Cleaning up unreleased temporary file " + temporaryFile);
             temporaryFile.delete();

Modified: synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/format/hessian/HessianMessageBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/format/hessian/HessianMessageBuilder.java?rev=652433&r1=652432&r2=652433&view=diff
==============================================================================
--- synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/format/hessian/HessianMessageBuilder.java (original)
+++ synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/format/hessian/HessianMessageBuilder.java Wed Apr 30 22:58:34 2008
@@ -23,8 +23,11 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.builder.Builder;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.util.SynapseBinaryDataSource;
 
 import javax.activation.DataHandler;
@@ -69,9 +72,18 @@
 
         try {
 
-            // add Hessian data inside a data handler
-            DataHandler dataHandler = new DataHandler(
-                    new SynapseBinaryDataSource(inputStream,contentType));
+            Parameter synEnv = messageContext.getConfigurationContext()
+                    .getAxisConfiguration().getParameter(SynapseConstants.SYNAPSE_ENV);
+
+            DataHandler dataHandler;
+            if (synEnv != null && synEnv.getValue() != null) {
+                dataHandler = new DataHandler(new SynapseBinaryDataSource(
+                        inputStream, contentType, (SynapseEnvironment) synEnv.getValue()));
+            } else {
+                // add Hessian data inside a data handler
+                dataHandler = new DataHandler(
+                        new SynapseBinaryDataSource(inputStream,contentType));
+            }
             OMText textData = factory.createOMText(dataHandler, true);
             element.addChild(textData);