You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ch...@apache.org on 2006/07/19 09:12:10 UTC

svn commit: r423390 - in /webservices/sandesha/trunk/java: src/org/apache/sandesha2/util/AcknowledgementManager.java test/src/org/apache/sandesha2/mtom/ test/src/org/apache/sandesha2/mtom/MTOMRMTest.java

Author: chamikara
Date: Wed Jul 19 00:12:09 2006
New Revision: 423390

URL: http://svn.apache.org/viewvc?rev=423390&view=rev
Log:
Fixed a bug in the AcknowledgementManager which cased the non-inorder case to fail.
Added a new test case MTOMRMTest.

Added:
    webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/
    webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/MTOMRMTest.java
Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?rev=423390&r1=423389&r2=423390&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java Wed Jul 19 00:12:09 2006
@@ -368,7 +368,6 @@
 			RMMsgContext ackRMMessageCtx = MsgInitializer.initializeMessage(ackMsgCtx);
 
 			SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceID);
-			referenceMsg.pause();
 			return ackRMMessageCtx;
 		}
 	}

Added: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/MTOMRMTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/MTOMRMTest.java?rev=423390&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/MTOMRMTest.java (added)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/mtom/MTOMRMTest.java Wed Jul 19 00:12:09 2006
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.sandesha2.mtom;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+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.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.MessageContextConstants;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SandeshaTestCase;
+import org.apache.sandesha2.client.SandeshaClient;
+import org.apache.sandesha2.client.SandeshaClientConstants;
+import org.apache.sandesha2.client.SequenceReport;
+
+public class MTOMRMTest extends SandeshaTestCase {
+
+	SimpleHTTPServer httpServer = null;
+
+	private final String applicationNamespaceName = "http://tempuri.org/";
+
+	private final String MTOMping = "MTOMping";
+
+	private final String Attachment = "Attachment";
+
+	private final String SOURCE_IMAGE_FILE = "test-resources/mtom-image.jpg";
+
+	private final String DESTINATION_IMAGE_FILE = "target/mtom-image1.jpg";
+
+	private final String PING_OPERATION_NAME = "ping";
+
+	private Log log = LogFactory.getLog(getClass());
+
+	int serverPort = DEFAULT_SERVER_TEST_PORT;
+
+	long sourceLength;
+
+	public MTOMRMTest() {
+		super("MTOMRMTest");
+	}
+
+	public void setUp() throws AxisFault {
+		String repoPath = "target" + File.separator + "repos" + File.separator + "server";
+		String axis2_xml = "test-resources" + File.separator + "server_mtom_axis2.xml";
+		ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(
+				repoPath, axis2_xml);
+
+		AxisConfiguration axisConfiguration = configContext.getAxisConfiguration();
+		AxisService axisService = axisConfiguration.getService("RMSampleService");
+		AxisOperation operation = AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_ONLY);
+		operation.setMessageReceiver(new MTOMTestMessageReceiver());
+		operation.setName(new QName(MTOMping));
+		axisService.addOperation(operation);
+
+		AxisOperation pingOperation = axisService.getOperation(new QName(PING_OPERATION_NAME));
+		if (pingOperation == null)
+			throw new AxisFault("Cant find the ping operation");
+
+		// setting the operation specific phase chain
+		operation.setRemainingPhasesInFlow(pingOperation.getRemainingPhasesInFlow());
+
+		String serverPortStr = getTestProperty("test.server.port");
+		if (serverPortStr != null) {
+			try {
+				serverPort = Integer.parseInt(serverPortStr);
+			} catch (NumberFormatException e) {
+				log.error(e);
+			}
+		}
+
+		httpServer = new SimpleHTTPServer(configContext, serverPort);
+		httpServer.start();
+		try {
+			Thread.sleep(300);
+		} catch (InterruptedException e) {
+			throw new SandeshaException("sleep interupted");
+		}
+	}
+
+	public void tearDown() throws SandeshaException {
+		if (httpServer != null)
+			httpServer.stop();
+
+		try {
+			Thread.sleep(300);
+		} catch (InterruptedException e) {
+			throw new SandeshaException("sleep interupted");
+		}
+	}
+
+	public void testMTOMPing() throws AxisFault, InterruptedException {
+
+//		String to = "http://127.0.0.1:" + serverPort + "/axis2/services/RMSampleService";
+//		String transportTo = "http://127.0.0.1:" + serverPort + "/axis2/services/RMSampleService";
+//		String repoPath = "target" + File.separator + "repos" + File.separator + "client";
+//		String axis2_xml = "test-resources" + File.separator + "client_mtom_axis2.xml";
+//
+//		ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(
+//				repoPath, axis2_xml);
+//		Options clientOptions = new Options();
+//		clientOptions.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+//		clientOptions.setTo(new EndpointReference(to));
+//		clientOptions.setProperty(MessageContextConstants.TRANSPORT_URL, transportTo);
+//		String sequenceKey = "sequence1";
+//		clientOptions.setProperty(SandeshaClientConstants.SEQUENCE_KEY, sequenceKey);
+//		ServiceClient serviceClient = new ServiceClient(configContext, null);
+//		clientOptions.setAction("http://testAction");
+//		serviceClient.setOptions(clientOptions);
+//
+//		clientOptions.setProperty(SandeshaClientConstants.LAST_MESSAGE, "true");
+//		serviceClient.fireAndForget(getMTOMPingOMBlock());
+//
+//		Thread.sleep(10000);
+//
+//		SequenceReport sequenceReport = SandeshaClient.getOutgoingSequenceReport(serviceClient);
+//		assertTrue(sequenceReport.getCompletedMessages().contains(new Long(1)));
+//		assertEquals(sequenceReport.getSequenceStatus(), SequenceReport.SEQUENCE_STATUS_TERMINATED);
+//		assertEquals(sequenceReport.getSequenceDirection(), SequenceReport.SEQUENCE_DIRECTION_OUT);
+//
+//		serviceClient.finalizeInvoke();
+	}
+
+	private OMElement getMTOMPingOMBlock() throws AxisFault {
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+		OMNamespace namespace = fac.createOMNamespace(applicationNamespaceName, "ns1");
+		OMElement pingElem = fac.createOMElement(MTOMping, namespace);
+
+		OMElement attachElem = fac.createOMElement(Attachment, namespace);
+
+		File file = new File(SOURCE_IMAGE_FILE);
+		assertTrue(file.exists());
+
+		sourceLength = file.length();
+
+		DataSource dataSource = new FileDataSource(file);
+		assertNotNull(dataSource);
+		DataHandler dataHandler = new DataHandler(dataSource);
+
+		OMText textData = fac.createOMText(dataHandler, true);
+		attachElem.addChild(textData);
+		pingElem.addChild(attachElem);
+
+		return pingElem;
+	}
+
+	private class MTOMTestMessageReceiver extends RawXMLINOnlyMessageReceiver {
+
+		public void invokeBusinessLogic(MessageContext msgContext) throws AxisFault {
+			try {
+				doInvocation(msgContext);
+			} catch (Exception e) {
+				fail(e.getMessage());
+			}
+		}
+
+	}
+
+	private void doInvocation(MessageContext mc) throws AxisFault {
+		SOAPEnvelope envelope = mc.getEnvelope();
+
+		assertNotNull(envelope);
+
+		SOAPBody body = envelope.getBody();
+
+		OMElement payload = body.getFirstElement();
+		OMElement attachmentElem = payload.getFirstChildWithName(new QName(applicationNamespaceName, Attachment));
+		if (attachmentElem == null)
+			throw new AxisFault("'Attachment' element is not present as a child of the 'Ping' element");
+
+		OMText binaryElem = (OMText) attachmentElem.getFirstOMChild();
+
+		binaryElem.setOptimize(true);
+		DataHandler dataHandler = (DataHandler) binaryElem.getDataHandler();
+
+		try {
+			File destinationFile = new File(DESTINATION_IMAGE_FILE);
+			if (destinationFile.exists())
+				destinationFile.delete();
+
+			FileOutputStream fileOutputStream = new FileOutputStream(DESTINATION_IMAGE_FILE);
+
+			InputStream inputStream = dataHandler.getDataSource().getInputStream();
+			byte[] bytes = new byte[5000];
+			int length = inputStream.read(bytes);
+			fileOutputStream.write(bytes, 0, length);
+			fileOutputStream.close();
+
+			destinationFile = new File(DESTINATION_IMAGE_FILE);
+			assertTrue(destinationFile.exists());
+			long destLength = destinationFile.length();
+			assertEquals(sourceLength, destLength);
+
+			destinationFile.delete();
+
+		} catch (Exception e) {
+			throw new AxisFault(e);
+		}
+	}
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org