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/30 22:51:42 UTC
svn commit: r690586 - in /synapse/trunk/java/modules/transports/src:
main/java/org/apache/synapse/transport/vfs/
test/java/org/apache/synapse/transport/testkit/tests/async/
test/java/org/apache/synapse/transport/vfs/
Author: veithen
Date: Sat Aug 30 13:51:42 2008
New Revision: 690586
URL: http://svn.apache.org/viewvc?rev=690586&view=rev
Log:
SYNAPSE-423:
* Make sure that the VFS input stream is only closed after handleIncomingMessage has been executed. (Note: the previous version of VFSTransportListener worked with text/plain and application/octet-stream but not with (large) XML payloads)
* Added a regression test for large XML payloads.
Added:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/LargeSOAPAsyncMessageTestCase.java
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java?rev=690586&r1=690585&r2=690586&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java Sat Aug 30 13:51:42 2008
@@ -435,6 +435,13 @@
return;
}
msgContext.setEnvelope(envelope);
+
+ handleIncomingMessage(
+ msgContext,
+ transportHeaders,
+ null, //* SOAP Action - not applicable *//
+ contentType
+ );
}
finally {
try {
@@ -444,13 +451,6 @@
}
}
- handleIncomingMessage(
- msgContext,
- transportHeaders,
- null, //* SOAP Action - not applicable *//
- contentType
- );
-
if (log.isDebugEnabled()) {
log.debug("Processed file : " + file + " of Content-type : " + contentType);
}
Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/LargeSOAPAsyncMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/LargeSOAPAsyncMessageTestCase.java?rev=690586&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/LargeSOAPAsyncMessageTestCase.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/LargeSOAPAsyncMessageTestCase.java Sat Aug 30 13:51:42 2008
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+package org.apache.synapse.transport.testkit.tests.async;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.message.XMLMessage;
+import org.apache.synapse.transport.testkit.name.Name;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
+
+@Name("AsyncSOAPLarge")
+// TODO: maybe we should use XMLUnit to construct these kind of tests
+public class LargeSOAPAsyncMessageTestCase extends AsyncMessageTestCase<XMLMessage,XMLMessage> {
+ public LargeSOAPAsyncMessageTestCase(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpoint<XMLMessage> endpoint, Object... resources) {
+ super(channel, client, endpoint, XMLMessage.Type.SOAP11.getContentType(), "UTF-8", resources);
+ }
+
+ @Override
+ protected XMLMessage prepareMessage() throws Exception {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMElement root = factory.createOMElement(new QName("root"));
+ for (int i=0; i<1000; i++) {
+ OMElement child = factory.createOMElement(new QName("child"));
+ child.setText("text");
+ root.addChild(child);
+ }
+ return new XMLMessage(root, XMLMessage.Type.SOAP11);
+ }
+
+ @Override
+ protected void checkMessageData(XMLMessage message, XMLMessage messageData) throws Exception {
+ OMElement element = messageData.getPayload();
+ OMElement orgElement = message.getPayload();
+ assertEquals(orgElement.getQName(), element.getQName());
+ assertEquals(1000, countChildren(element));
+ }
+
+ private static int countChildren(OMElement element) {
+ int count = 0;
+ for (Iterator<?> it = element.getChildElements(); it.hasNext(); count++) {
+ it.next();
+ }
+ return count;
+ }
+}
Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java?rev=690586&r1=690585&r2=690586&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java Sat Aug 30 13:51:42 2008
@@ -38,6 +38,7 @@
import org.apache.synapse.transport.testkit.message.XMLMessage;
import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpoint;
import org.apache.synapse.transport.testkit.server.axis2.ContentTypeServiceConfigurator;
+import org.apache.synapse.transport.testkit.tests.async.LargeSOAPAsyncMessageTestCase;
/**
* TransportListenerTestTemplate implementation for the VFS transport.
@@ -64,6 +65,8 @@
}
suite.addTextPlainTests(channel, adapt(vfsClient, MessageEncoder.STRING_TO_BYTE), adapt(asyncEndpoint, MessageDecoder.AXIS_TO_STRING), env, tdf, cfgtr);
suite.addBinaryTest(channel, vfsClient, adapt(asyncEndpoint, MessageDecoder.AXIS_TO_BYTE), env, tdf, cfgtr);
+ // Regression test for SYNAPSE-423:
+ suite.addTest(new LargeSOAPAsyncMessageTestCase(channel, adapt(vfsClient, MessageEncoder.XML_TO_BYTE), adapt(new AxisAsyncEndpoint(), MessageDecoder.AXIS_TO_XML), env, tdf, cfgtr));
// suite.addTest(new MinConcurrencyTest(server, new AsyncChannel[] { new VFSFileChannel("req/in1"), new VFSFileChannel("req/in2") }, 1, true, env, tdf));
return suite;
}