You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/08/24 13:57:12 UTC

svn commit: r688497 - in /synapse/trunk/java: ./ modules/core/ modules/core/src/main/java/org/apache/synapse/util/ modules/core/src/test/java/org/apache/synapse/util/ modules/transports/ modules/transports/src/main/java/org/apache/synapse/transport/nht...

Author: veithen
Date: Sun Aug 24 04:57:10 2008
New Revision: 688497

URL: http://svn.apache.org/viewvc?rev=688497&view=rev
Log:
SYNAPSE-408:
* Created new Maven module synapse-utils and moved the TemporaryData class to this module.
* Updated dependencies of syanapse-core and synapse-transports.
* Added getLength and writeTo methods to TemporaryData.
* Modified Axis2HttpRequest to use TemporaryData for HTTP 1.0 requests.

Added:
    synapse/trunk/java/modules/utils/
    synapse/trunk/java/modules/utils/pom.xml
    synapse/trunk/java/modules/utils/src/
    synapse/trunk/java/modules/utils/src/main/
    synapse/trunk/java/modules/utils/src/main/java/
    synapse/trunk/java/modules/utils/src/main/java/org/
    synapse/trunk/java/modules/utils/src/main/java/org/apache/
    synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/
    synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/
    synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/TemporaryData.java
      - copied, changed from r688412, synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java
    synapse/trunk/java/modules/utils/src/test/
    synapse/trunk/java/modules/utils/src/test/java/
    synapse/trunk/java/modules/utils/src/test/java/org/
    synapse/trunk/java/modules/utils/src/test/java/org/apache/
    synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/
    synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/
    synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/TemporaryDataTest.java
      - copied, changed from r688412, synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/TemporaryDataTest.java
Removed:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java
    synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/TemporaryDataTest.java
Modified:
    synapse/trunk/java/modules/core/pom.xml
    synapse/trunk/java/modules/transports/pom.xml
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
    synapse/trunk/java/pom.xml

Modified: synapse/trunk/java/modules/core/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/pom.xml?rev=688497&r1=688496&r2=688497&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/pom.xml (original)
+++ synapse/trunk/java/modules/core/pom.xml Sun Aug 24 04:57:10 2008
@@ -206,6 +206,10 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.synapse</groupId>
+            <artifactId>synapse-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.synapse</groupId>
             <artifactId>synapse-transports</artifactId>
         </dependency>
     </dependencies>

Modified: synapse/trunk/java/modules/transports/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/pom.xml?rev=688497&r1=688496&r2=688497&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/pom.xml (original)
+++ synapse/trunk/java/modules/transports/pom.xml Sun Aug 24 04:57:10 2008
@@ -177,6 +177,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.synapse</groupId>
+            <artifactId>synapse-utils</artifactId>
+        </dependency>
+        
+        <dependency>
             <groupId>org.apache.directory.shared</groupId>
             <artifactId>shared-ldap</artifactId>
             <version>0.9.11</version>

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java?rev=688497&r1=688496&r2=688497&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java Sun Aug 24 04:57:10 2008
@@ -39,8 +39,8 @@
 import org.apache.http.protocol.HTTP;
 import org.apache.synapse.transport.nhttp.util.MessageFormatterDecoratorFactory;
 import org.apache.synapse.transport.nhttp.util.RESTUtil;
+import org.apache.synapse.util.TemporaryData;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.channels.ClosedChannelException;
@@ -138,12 +138,16 @@
                         "POST", epr.getAddress(), HttpVersion.HTTP_1_0);
                 }
                 
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                messageFormatter.writeTo(msgContext, format, baos, true);
+                TemporaryData serialized = new TemporaryData(256, 4096, "http-nio_", ".dat");
+                OutputStream out = serialized.getOutputStream();
+                try {
+                    messageFormatter.writeTo(msgContext, format, out, true);
+                } finally {
+                    out.close();
+                }
                 BasicHttpEntity entity = new BasicHttpEntity();
-                byte[] bytes = baos.toByteArray();
-                msgContext.setProperty(NhttpConstants.SERIALIZED_BYTES, bytes);
-                entity.setContentLength(bytes.length);
+                msgContext.setProperty(NhttpConstants.SERIALIZED_BYTES, serialized);
+                entity.setContentLength(serialized.getLength());
                 ((BasicHttpEntityEnclosingRequest) httpRequest).setEntity(entity);
 
             }
@@ -235,7 +239,13 @@
             OutputStream out = new ContentOutputStream(outputBuffer);
             try {
                 if (msgContext.isPropertyTrue(NhttpConstants.FORCE_HTTP_1_0)) {
-                    out.write((byte[])msgContext.getProperty(NhttpConstants.SERIALIZED_BYTES));
+                    TemporaryData serialized =
+                            (TemporaryData)msgContext.getProperty(NhttpConstants.SERIALIZED_BYTES);
+                    try {
+                        serialized.writeTo(out);
+                    } finally {
+                        serialized.release();
+                    }
                 } else {
                     messageFormatter.writeTo(msgContext, format, out, false);
                 }        

Added: synapse/trunk/java/modules/utils/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/pom.xml?rev=688497&view=auto
==============================================================================
--- synapse/trunk/java/modules/utils/pom.xml (added)
+++ synapse/trunk/java/modules/utils/pom.xml Sun Aug 24 04:57:10 2008
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  Licensed to the Apache Software Foundation (ASF) under one
+  ~  or more contributor license agreements.  See the NOTICE file
+  ~  distributed with this work for additional information
+  ~  regarding copyright ownership.  The ASF licenses this file
+  ~  to you under the Apache License, Version 2.0 (the
+  ~  "License"); you may not use this file except in compliance
+  ~  with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~  Unless required by applicable law or agreed to in writing,
+  ~  software distributed under the License is distributed on an
+  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~  KIND, either express or implied.  See the License for the
+  ~  specific language governing permissions and limitations
+  ~  under the License.
+  -->
+
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.synapse</groupId>
+        <artifactId>Apache-Synapse</artifactId>
+        <version>SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.synapse</groupId>
+    <artifactId>synapse-utils</artifactId>
+    
+    <name>Apache Synapse - Utility classes</name>
+    <description>Apache Synapse - Utility classes</description>
+    <packaging>bundle</packaging>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.2</version>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>1.4.0</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-Version>1.3.0</Bundle-Version>
+                        <Bundle-Name>org.apache.synapse.utils</Bundle-Name>
+                        <Bundle-Vendor>Apache Software Foundation</Bundle-Vendor>
+                        <Bundle-Description>${pom.description}</Bundle-Description>
+                        <Bundle-SymbolicName>org.apache.synapse.utils</Bundle-SymbolicName>
+                        <Export-Package>
+                            org.apache.synapse.util.*;-split-package:=merge-last,
+                        </Export-Package>
+                        <Import-Package>
+                            org.apache.commons.io
+                        </Import-Package>
+                        <DynamicImport-Package>*</DynamicImport-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+
+    <dependencies>
+        
+    </dependencies>
+</project>

Copied: synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/TemporaryData.java (from r688412, synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/TemporaryData.java?p2=synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/TemporaryData.java&p1=synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java&r1=688412&r2=688497&rev=688497&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/TemporaryData.java (original)
+++ synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/util/TemporaryData.java Sun Aug 24 04:57:10 2008
@@ -312,6 +312,39 @@
         }
     }
     
+    /**
+     * Write the data to a given output stream.
+     * 
+     * @param out The output stream to write the data to. This method will
+     *            not close the stream.
+     * @throws IOException
+     */
+    public void writeTo(OutputStream out) throws IOException {
+        if (temporaryFile != null) {
+            FileInputStream in = new FileInputStream(temporaryFile);
+            try {
+                IOUtils.copy(in, out);
+            } finally {
+                in.close();
+            }
+        } else {
+            for (int i=0; i<chunkIndex; i++) {
+                out.write(chunks[i]);
+            }
+            if (chunkOffset > 0) {
+                out.write(chunks[chunkIndex], 0, chunkOffset);
+            }
+        }
+    }
+    
+    public long getLength() {
+        if (temporaryFile != null) {
+            return temporaryFile.length();
+        } else {
+            return chunkIndex*chunkSize + chunkOffset;
+        }
+    }
+    
     public void release() {
         if (temporaryFile != null) {
             if (log.isDebugEnabled()) {

Copied: synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/TemporaryDataTest.java (from r688412, synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/TemporaryDataTest.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/TemporaryDataTest.java?p2=synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/TemporaryDataTest.java&p1=synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/TemporaryDataTest.java&r1=688412&r2=688497&rev=688497&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/TemporaryDataTest.java (original)
+++ synapse/trunk/java/modules/utils/src/test/java/org/apache/synapse/util/TemporaryDataTest.java Sun Aug 24 04:57:10 2008
@@ -48,6 +48,7 @@
                 offset += c;
             }
             out.close();
+            assertEquals(size, tmp.getLength());
             // Reread the test data, again in chunks with random size
             InputStream in = tmp.getInputStream();
             offset = 0;

Modified: synapse/trunk/java/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=688497&r1=688496&r2=688497&view=diff
==============================================================================
--- synapse/trunk/java/pom.xml (original)
+++ synapse/trunk/java/pom.xml Sun Aug 24 04:57:10 2008
@@ -203,6 +203,11 @@
             <!-- Synapse -->
             <dependency>
                 <groupId>org.apache.synapse</groupId>
+                <artifactId>synapse-utils</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.synapse</groupId>
                 <artifactId>synapse-core</artifactId>
                 <version>${project.version}</version>
             </dependency>
@@ -1128,6 +1133,7 @@
     </repositories>
 
     <modules>
+        <module>modules/utils</module>
         <module>modules/transports</module>
         <module>modules/mar</module>
         <module>modules/core</module>