You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by jb...@apache.org on 2009/08/21 09:54:48 UTC
svn commit: r806441 - in
/servicemix/components/engines/servicemix-exec/trunk/src:
main/java/org/apache/servicemix/exec/ExecEndpoint.java
test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java
Author: jbonofre
Date: Fri Aug 21 07:54:48 2009
New Revision: 806441
URL: http://svn.apache.org/viewvc?rev=806441&view=rev
Log:
Cleanup WSDL loading into the Exec endpoint.
Upgrade the exec marshaler unit test.
Modified:
servicemix/components/engines/servicemix-exec/trunk/src/main/java/org/apache/servicemix/exec/ExecEndpoint.java
servicemix/components/engines/servicemix-exec/trunk/src/test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java
Modified: servicemix/components/engines/servicemix-exec/trunk/src/main/java/org/apache/servicemix/exec/ExecEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-exec/trunk/src/main/java/org/apache/servicemix/exec/ExecEndpoint.java?rev=806441&r1=806440&r2=806441&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-exec/trunk/src/main/java/org/apache/servicemix/exec/ExecEndpoint.java (original)
+++ servicemix/components/engines/servicemix-exec/trunk/src/main/java/org/apache/servicemix/exec/ExecEndpoint.java Fri Aug 21 07:54:48 2009
@@ -22,6 +22,7 @@
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
+import javax.xml.namespace.QName;
import org.apache.servicemix.common.endpoints.ProviderEndpoint;
import org.apache.servicemix.exec.marshaler.DefaultExecMarshaler;
@@ -107,20 +108,30 @@
@Override
public void validate() throws DeploymentException {
try {
- if (wsdl != null) {
- // the user provides a WSDL
- description = DomUtil.parse(wsdl.getInputStream());
- definition = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader().readWSDL(null, description);
- } else {
- // load the default abstract WSDL
- description = DomUtil.parse(new ClassPathResource(DEFAULT_WSDL).getInputStream());
- definition = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader().readWSDL(null, description);
+ if (wsdl == null) {
+ // the user hasn't provide a WSDL, load the default abstract one
+ wsdl = new ClassPathResource(DEFAULT_WSDL);
}
+
+ // load the WSDL
+ description = DomUtil.parse(wsdl.getInputStream());
+ definition = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader().readWSDL(null, description);
+
+ // cleanup WSDL to be sure thats it's an abstract one
+ // cleanup services
+ QName[] qnames = (QName[]) definition.getServices().keySet().toArray(new QName[0]);
+ for (int i = 0; i < qnames.length; i++) {
+ definition.removeService(qnames[i]);
+ }
+ // cleanup binding
+ qnames = (QName[]) definition.getBindings().keySet().toArray(new QName[0]);
+ for (int i = 0; i < qnames.length; i++) {
+ definition.removeBinding(qnames[i]);
+ }
+
} catch (Exception e) {
throw new DeploymentException("Can't load the WSDL.", e);
}
-
- // TODO define the WSDL for the marshaler
}
/*
Modified: servicemix/components/engines/servicemix-exec/trunk/src/test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-exec/trunk/src/test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java?rev=806441&r1=806440&r2=806441&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-exec/trunk/src/test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java (original)
+++ servicemix/components/engines/servicemix-exec/trunk/src/test/java/org/apache/servicemix/exec/marshaler/DefaultExecMarshalerTest.java Fri Aug 21 07:54:48 2009
@@ -31,24 +31,14 @@
import org.apache.servicemix.jbi.messaging.MessageExchangeFactoryImpl;
/**
+ * <p>
* Unit tests on the default exec marshaler.
+ * </p>
*
* @author jbonofre
*/
public class DefaultExecMarshalerTest extends TestCase {
- private static final String COMMAND = "ls";
- private static final String FIRST_ARG = "-lt";
- private static final String SECOND_ARG = "/tmp";
-
- private static final String MSG_VALID = "<message>"
- + "<command>" + COMMAND + "</command>"
- + "<arguments>"
- + "<argument>" + FIRST_ARG + "</argument>"
- + "<argument>" + SECOND_ARG + "</argument>"
- + "</arguments>"
- + "</message>";
-
private ExecMarshalerSupport marshaler;
private MessageExchangeFactory factory;
@@ -61,17 +51,65 @@
this.factory = new MessageExchangeFactoryImpl(new IdGenerator(), new AtomicBoolean(false));
}
- public void testValidMessage() throws Exception {
+ /**
+ * <p>
+ * Test the unmarshalling of a valid message content.
+ * </p>
+ *
+ * @throws Exception if the unmarshalling fails.
+ */
+ public void testUnmarshalling() throws Exception {
MessageExchange exchange = this.factory.createExchange(MessageExchangePattern.IN_ONLY);
NormalizedMessage message = exchange.createMessage();
- message.setContent(new StringSource(MSG_VALID));
+ message.setContent(new StringSource(
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+ "<exec:execRequest xmlns:exec=\"http://servicemix.apache.org/exec\">" +
+ "<command>ls</command>" +
+ "<arguments>" +
+ "<argument>-lt</argument>" +
+ "<argument>/tmp</argument>" +
+ "</arguments>" +
+ "</exec:execRequest>"));
+
exchange.setMessage(message, "in");
- SourceTransformer transformer = new SourceTransformer();
- //String execCommand = marshaler.constructExecCommand(transformer.toDOMDocument(message));
- //assertEquals("ls -lt /tmp", execCommand);
+ ExecRequest execRequest = marshaler.unmarshal(message);
+
+ assertEquals("ls", execRequest.getCommand());
+ assertEquals("-lt", execRequest.getArguments().get(0));
+ assertEquals("/tmp", execRequest.getArguments().get(1));
}
+ /**
+ * <p>
+ * Test the marshalling of a ExecResponse.
+ * </p>
+ *
+ * @throws Exception if the marshalling fails.
+ */
+ public void testMarshalling() throws Exception {
+ // construct an ExecResponse
+ ExecResponse execResponse = new ExecResponse();
+ execResponse.setExitCode(0);
+ execResponse.setStartTime(1000000);
+ execResponse.setEndTime(1000000);
+ execResponse.setExecutionDuration(1000000);
+ execResponse.setErrorData(new StringBuffer("TEST"));
+ execResponse.setOutputData(new StringBuffer("TEST"));
+
+ // create an exchange/normalized message
+ MessageExchange exchange = this.factory.createExchange(MessageExchangePattern.IN_ONLY);
+ NormalizedMessage message = exchange.createMessage();
+
+ // marshal the exec response
+ marshaler.marshal(execResponse, message);
+
+ // get the message content
+ SourceTransformer transformer = new SourceTransformer();
+ String content = transformer.contentToString(message);
+
+ assertEquals(content, "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ns2:execResponse xmlns:ns2=\"http://servicemix.apache.org/exec\"><endTime>1000000</endTime><errorData/><executionDuration>1000000</executionDuration><exitCode>0</exitCode><outputData/><startTime>1000000</startTime></ns2:execResponse>");
+ }
}