You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by sa...@apache.org on 2013/01/31 13:21:16 UTC
git commit: ODE-957: Changes to handle invocation of external
services which doesn't specify input message.
Updated Branches:
refs/heads/master 4846c85c9 -> d4bc4147d
ODE-957: Changes to handle invocation of external services which doesn't specify input message.
Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/d4bc4147
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/d4bc4147
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/d4bc4147
Branch: refs/heads/master
Commit: d4bc4147d20bd2c7ce3f4df8e37863eaf4eb0478
Parents: 4846c85
Author: sathwik <sa...@apache.org>
Authored: Thu Jan 31 17:23:45 2013 +0530
Committer: sathwik <sa...@apache.org>
Committed: Thu Jan 31 17:23:45 2013 +0530
----------------------------------------------------------------------
.../java/org/apache/ode/axis2/DummyService.java | 4 +
.../ode/axis2/NoInputMessageInvocationTest.java | 41 ++++++
.../NoArgumentInvocationProcess.bpel | 113 +++++++++++++++
.../NoArgumentInvocationProcessArtifacts.wsdl | 112 ++++++++++++++
.../TestNoInputMessageInvocation/deploy.xml | 33 +++++
.../dummy-service.wsdl | 65 +++++++++
.../TestNoInputMessageInvocation/testRequest.soap | 28 ++++
.../ode/axis2/util/SoapMessageConverter.java | 23 +++-
.../ode/bpel/engine/BpelRuntimeContextImpl.java | 14 ++-
.../java/org/apache/ode/bpel/runtime/INVOKE.java | 2 +-
.../org/apache/ode/dao/jpa/MessageDAOImpl.java | 4 +-
11 files changed, 429 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/java/org/apache/ode/axis2/DummyService.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/DummyService.java b/axis2-war/src/test/java/org/apache/ode/axis2/DummyService.java
index af70061..ff89390 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/DummyService.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/DummyService.java
@@ -62,4 +62,8 @@ public class DummyService {
throw new AxisFault(new QName("http://schemas.xmlsoap.org/soap/envelope/", "Client"), "dummy reason",
"dummy node", "dummy role", root);
}
+
+ public String noArgmentMethod(){
+ return "noArgmentMethod invocation was successfull";
+ }
}
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/java/org/apache/ode/axis2/NoInputMessageInvocationTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/NoInputMessageInvocationTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/NoInputMessageInvocationTest.java
new file mode 100644
index 0000000..590a267
--- /dev/null
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/NoInputMessageInvocationTest.java
@@ -0,0 +1,41 @@
+/*
+ * 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.ode.axis2;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+
+public class NoInputMessageInvocationTest extends Axis2TestBase {
+ @Test(dataProvider="configs")
+ public void test() throws Exception {
+ String bundleName = "TestNoInputMessageInvocation";
+ server.deployService(DummyService.class.getCanonicalName());
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ server.deployProcess(bundleName);
+ try {
+ String response = sendRequestFile("http://localhost:8888/ode/processes/NoArgumentInvocationProcess",
+ bundleName, "testRequest.soap");
+ System.out.println(response);
+ assertTrue(response.contains("noArgmentMethod invocation was successfull"));
+ } finally {
+ server.undeployProcess(bundleName);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcess.bpel
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcess.bpel b/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcess.bpel
new file mode 100644
index 0000000..57c66b8
--- /dev/null
+++ b/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcess.bpel
@@ -0,0 +1,113 @@
+<?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.
+ -->
+
+<!-- NoArgumentInvocationProcess BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<!-- Date: Wed Jan 30 11:02:23 IST 2013 -->
+<bpel:process name="NoArgumentInvocationProcess"
+ targetNamespace="http://example.ord/samples/"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://example.ord/samples/"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:ns="http://axis2.ode.apache.org">
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="NoArgumentInvocationProcessArtifacts.wsdl" namespace="http://example.ord/samples/"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:NoArgumentInvocationProcess"
+ myRole="NoArgumentInvocationProcessProvider"
+ />
+ <bpel:partnerLink name="axis2VersionPL" partnerLinkType="tns:axis2VersionPLT" partnerRole="myRole"></bpel:partnerLink>
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:NoArgumentInvocationProcessRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:NoArgumentInvocationProcessResponseMessage">
+ </bpel:variable>
+ <bpel:variable name="noArgmentMethodResponse" messageType="ns:noArgmentMethodResponse"></bpel:variable>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in NoArgumentInvocationProcess.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:NoArgumentInvocationProcess"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from>
+ <bpel:literal xml:space="preserve"><tns:NoArgumentInvocationProcessResponse xmlns:tns="http://example.ord/samples/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result>tns:result</tns:result>
+</tns:NoArgumentInvocationProcessResponse>
+</bpel:literal>
+ </bpel:from>
+ <bpel:to part="payload" variable="output"></bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke name="Invoke" partnerLink="axis2VersionPL" operation="noArgmentMethod" portType="ns:DummyServicePortType" inputVariable="" outputVariable="noArgmentMethodResponse"></bpel:invoke>
+
+
+ <bpel:assign validate="no" name="Assign1">
+ <bpel:copy>
+ <bpel:from part="parameters" variable="noArgmentMethodResponse">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[return]]></bpel:query>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:NoArgumentInvocationProcess"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcessArtifacts.wsdl
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcessArtifacts.wsdl b/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcessArtifacts.wsdl
new file mode 100644
index 0000000..56a30ae
--- /dev/null
+++ b/axis2-war/src/test/resources/TestNoInputMessageInvocation/NoArgumentInvocationProcessArtifacts.wsdl
@@ -0,0 +1,112 @@
+<?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.
+ -->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://example.ord/samples/" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:wsdl="http://axis2.ode.apache.org" name="NoArgumentInvocationProcess" targetNamespace="http://example.ord/samples/">
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="axis2VersionPLT">
+ <plnk:role name="myRole" portType="wsdl:DummyServicePortType"/>
+ </plnk:partnerLinkType>
+ <import location="dummy-service.wsdl" namespace="http://axis2.ode.apache.org"/>
+ <types>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://example.ord/samples/">
+
+ <element name="NoArgumentInvocationProcessRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="NoArgumentInvocationProcessResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="NoArgumentInvocationProcessRequestMessage">
+ <part element="tns:NoArgumentInvocationProcessRequest" name="payload"/>
+ </message>
+ <message name="NoArgumentInvocationProcessResponseMessage">
+ <part element="tns:NoArgumentInvocationProcessResponse" name="payload"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the NoArgumentInvocationProcess BPEL process -->
+ <portType name="NoArgumentInvocationProcess">
+ <operation name="process">
+ <input message="tns:NoArgumentInvocationProcessRequestMessage"/>
+ <output message="tns:NoArgumentInvocationProcessResponseMessage"/>
+ </operation>
+ </portType>
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="NoArgumentInvocationProcess">
+ <plnk:role name="NoArgumentInvocationProcessProvider" portType="tns:NoArgumentInvocationProcess"/>
+ </plnk:partnerLinkType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ BINDING DEFINITION - Defines the message format and protocol details
+ for a web service.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <binding name="NoArgumentInvocationProcessBinding" type="tns:NoArgumentInvocationProcess">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="process">
+ <soap:operation soapAction="http://example.ord/samples//process"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ SERVICE DEFINITION - A service groups a set of ports into
+ a service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <service name="NoArgumentInvocationProcessService">
+ <port binding="tns:NoArgumentInvocationProcessBinding" name="NoArgumentInvocationProcessPort">
+ <soap:address location="http://localhost:8888/ode/processes/NoArgumentInvocationProcess"/>
+ </port>
+ </service>
+</definitions>
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/resources/TestNoInputMessageInvocation/deploy.xml
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestNoInputMessageInvocation/deploy.xml b/axis2-war/src/test/resources/TestNoInputMessageInvocation/deploy.xml
new file mode 100644
index 0000000..f67b4b1
--- /dev/null
+++ b/axis2-war/src/test/resources/TestNoInputMessageInvocation/deploy.xml
@@ -0,0 +1,33 @@
+<?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.
+ -->
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:dns="http://axis2.ode.apache.org" xmlns:samples="http://example.ord/samples/">
+ <process name="samples:NoArgumentInvocationProcess">
+ <active>true</active>
+ <retired>false</retired>
+ <process-events generate="none"/>
+ <provide partnerLink="client">
+ <service name="samples:NoArgumentInvocationProcessService" port="NoArgumentInvocationProcessPort"/>
+ </provide>
+ <invoke partnerLink="axis2VersionPL">
+ <service name="dns:DummyService" port="DummyServiceSOAP11port_http"/>
+ </invoke>
+ </process>
+</deploy>
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/resources/TestNoInputMessageInvocation/dummy-service.wsdl
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestNoInputMessageInvocation/dummy-service.wsdl b/axis2-war/src/test/resources/TestNoInputMessageInvocation/dummy-service.wsdl
new file mode 100644
index 0000000..eec301f
--- /dev/null
+++ b/axis2-war/src/test/resources/TestNoInputMessageInvocation/dummy-service.wsdl
@@ -0,0 +1,65 @@
+<?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.
+ -->
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+ xmlns:ns0="http://axis2.ode.apache.org/xsd"
+ xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+ xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:ns1="http://axis2.ode.apache.org"
+ xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ targetNamespace="http://axis2.ode.apache.org">
+ <wsdl:types>
+ <xs:schema xmlns:ns="http://axis2.ode.apache.org" attributeFormDefault="qualified"
+ elementFormDefault="unqualified" targetNamespace="http://axis2.ode.apache.org">
+ <xs:element name="noArgmentMethodResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="noArgmentMethodResponse">
+ <wsdl:part name="parameters" element="ns1:noArgmentMethodResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="DummyServicePortType">
+ <wsdl:operation name="noArgmentMethod">
+ <wsdl:output message="ns1:noArgmentMethodResponse" wsaw:Action="urn:noArgmentMethodResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="DummyServiceSOAP11Binding" type="ns1:DummyServicePortType">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <wsdl:operation name="noArgmentMethod">
+ <soap:operation soapAction="urn:noArgmentMethod" style="document"/>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="DummyService">
+ <wsdl:port name="DummyServiceSOAP11port_http" binding="ns1:DummyServiceSOAP11Binding">
+ <soap:address location="http://localhost:8888/ode/processes/DummyService"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2-war/src/test/resources/TestNoInputMessageInvocation/testRequest.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestNoInputMessageInvocation/testRequest.soap b/axis2-war/src/test/resources/TestNoInputMessageInvocation/testRequest.soap
new file mode 100644
index 0000000..f14bf53
--- /dev/null
+++ b/axis2-war/src/test/resources/TestNoInputMessageInvocation/testRequest.soap
@@ -0,0 +1,28 @@
+<?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.
+ -->
+
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://example.ord/samples/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <sam:NoArgumentInvocationProcessRequest>
+ <sam:input />
+ </sam:NoArgumentInvocationProcessRequest>
+ </soapenv:Body>
+</soapenv:Envelope>
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
----------------------------------------------------------------------
diff --git a/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java b/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
index 636b468..382d3a9 100644
--- a/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
+++ b/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
@@ -143,7 +143,7 @@ public class SoapMessageConverter {
if (op == null)
throw new NullPointerException("Null operation");
// The message can be null if the input message has no part
- if (op.getInput().getMessage().getParts().size() > 0 && message == null)
+ if (op.getInput() != null && op.getInput().getMessage().getParts().size() > 0 && message == null)
throw new NullPointerException("Null message.");
if (msgCtx == null)
throw new NullPointerException("Null msgCtx");
@@ -155,20 +155,21 @@ public class SoapMessageConverter {
BindingInput bi = bop.getBindingInput();
if (bi == null)
- throw new OdeFault(__msgs.msgBindingInputNotFound(_serviceName, _portName, op.getName()));
+ //throw new OdeFault(__msgs.msgBindingInputNotFound(_serviceName, _portName, op.getName()));
+ __log.warn(__msgs.msgBindingInputNotFound(_serviceName, _portName, op.getName()));
SOAPEnvelope soapEnv = msgCtx.getEnvelope();
if (soapEnv == null) {
soapEnv = _soapFactory.getDefaultEnvelope();
msgCtx.setEnvelope(soapEnv);
}
-
- createSoapHeaders(soapEnv, getSOAPHeaders(bi), op.getInput().getMessage(), message.getHeaderParts());
+ Message inputMessage = (op.getInput() != null) ? op.getInput().getMessage() : null;
+ createSoapHeaders(soapEnv, getSOAPHeaders(bi), inputMessage, message.getHeaderParts());
SOAPBody soapBody = getSOAPBody(bi);
if (soapBody != null) {
org.apache.axiom.soap.SOAPBody sb = soapEnv.getBody() == null ? _soapFactory.createSOAPBody(soapEnv) : soapEnv.getBody();
- createSoapBody(sb, soapBody, op.getInput().getMessage(), message.getMessage(), op.getName());
+ createSoapBody(sb, soapBody, inputMessage, message.getMessage(), op.getName());
}
}
@@ -207,6 +208,9 @@ public class SoapMessageConverter {
}
public void createSoapHeaders(SOAPEnvelope soapEnv, List<SOAPHeader> headerDefs, Message msgdef, Map<String,Node> headers) throws AxisFault {
+ if (msgdef == null)
+ return;
+
for (SOAPHeader sh : headerDefs) handleSoapHeaderDef(soapEnv, sh, msgdef, headers);
org.apache.axiom.soap.SOAPHeader soaphdr = soapEnv.getHeader();
@@ -343,6 +347,9 @@ public class SoapMessageConverter {
@SuppressWarnings("unchecked")
public void createSoapBody(org.apache.axiom.soap.SOAPBody sb, SOAPBody soapBody, Message msgDef,
Element message, String rpcWrapper) throws AxisFault {
+ if (msgDef == null)
+ return;
+
OMElement partHolder = _isRPC ? _soapFactory
.createOMElement(new QName(soapBody.getNamespaceURI(), rpcWrapper, "odens"), sb) : sb;
@@ -464,11 +471,17 @@ public class SoapMessageConverter {
@SuppressWarnings("unchecked")
public static List<SOAPHeader> getSOAPHeaders(ElementExtensible eee) {
+ if (eee == null)
+ return null;
+
return CollectionsX.filter(new ArrayList<SOAPHeader>(), (Collection<Object>) eee.getExtensibilityElements(),
SOAPHeader.class);
}
public static <T> T getFirstExtensibilityElement(ElementExtensible parent, Class<T> cls) {
+ if (parent == null)
+ return null;
+
Collection<T> ee = CollectionsX.filter(parent.getExtensibilityElements(), cls);
return ee.isEmpty() ? null : ee.iterator().next();
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
index b2f75ea..e73cacd 100644
--- a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
+++ b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
@@ -746,9 +746,19 @@ public class BpelRuntimeContextImpl implements BpelRuntimeContext {
if (__log.isDebugEnabled())
__log.debug("INVOKE PARTNER (SEP): sessionId=" + mySessionId + " partnerSessionId=" + partnerSessionId);
- MessageDAO message = mexDao.createMessage(operation.getInput().getMessage().getQName());
+ MessageDAO message = null;
+
+ if (operation.getInput() != null)
+ message = mexDao.createMessage(operation.getInput().getMessage().getQName());
+ else
+ message = mexDao.createMessage(null);
+
mexDao.setRequest(message);
- message.setType(operation.getInput().getMessage().getQName());
+
+ if (operation.getInput() != null)
+ message.setType(operation.getInput().getMessage().getQName());
+ else
+ message.setType(null);
buildOutgoingMessage(message, outgoingMessage);
// Get he my-role EPR (if myrole exists) for optional use by partner
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java
index d67d716..1a9d0a9 100644
--- a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java
+++ b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java
@@ -218,7 +218,7 @@ public class INVOKE extends ACTIVITY {
initializeCorrelation(_scopeFrame.resolve(c), _scopeFrame.resolve(oinvoke.inputVar));
}
- if (oinvoke.operation.getInput().getMessage().getParts().size() > 0) {
+ if ((oinvoke.operation.getInput() != null) && (oinvoke.operation.getInput().getMessage().getParts().size() > 0)) {
sendVariableReadEvent(_scopeFrame.resolve(oinvoke.inputVar));
Node outboundMsg = fetchVariableData(_scopeFrame.resolve(oinvoke.inputVar), false);
// TODO outbound message should be updated with non-initiate correlation sets
http://git-wip-us.apache.org/repos/asf/ode/blob/d4bc4147/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
----------------------------------------------------------------------
diff --git a/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java b/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
index a92b7ad..1278b1d 100644
--- a/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
+++ b/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
@@ -71,7 +71,7 @@ public class MessageDAOImpl implements MessageDAO {
}
public MessageDAOImpl(QName type, MessageExchangeDAOImpl me) {
- _type = type.toString();
+ _type = (type != null) ? type.toString() : null;
_messageExchange = me;
}
@@ -123,7 +123,7 @@ public class MessageDAOImpl implements MessageDAO {
}
public void setType(QName type) {
- _type = type.toString();
+ _type = (type != null) ? type.toString() : null;
}
}