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);