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 2014/07/21 21:36:43 UTC
git commit: ODE-1017: Backported setVariable operation in PMAPI from
trunk
Repository: ode
Updated Branches:
refs/heads/ode-1.3.x 79a1094a0 -> 7f6f94c05
ODE-1017: Backported setVariable operation in PMAPI from trunk
Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/7f6f94c0
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/7f6f94c0
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/7f6f94c0
Branch: refs/heads/ode-1.3.x
Commit: 7f6f94c0509696601d58fe0154fd6ea166c8662d
Parents: 79a1094
Author: sathwik <sa...@apache.org>
Authored: Tue Jul 22 01:06:25 2014 +0530
Committer: sathwik <sa...@apache.org>
Committed: Tue Jul 22 01:06:25 2014 +0530
----------------------------------------------------------------------
axis2/src/main/wsdl/pmapi.wsdl | 25 +++++++++++
.../ProcessAndInstanceManagementImpl.java | 46 ++++++++++++++++++++
.../java/org/apache/ode/utils/DOMUtils.java | 8 ++++
3 files changed, 79 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ode/blob/7f6f94c0/axis2/src/main/wsdl/pmapi.wsdl
----------------------------------------------------------------------
diff --git a/axis2/src/main/wsdl/pmapi.wsdl b/axis2/src/main/wsdl/pmapi.wsdl
index ef619bd..5517a8b 100644
--- a/axis2/src/main/wsdl/pmapi.wsdl
+++ b/axis2/src/main/wsdl/pmapi.wsdl
@@ -172,6 +172,14 @@
<message name="getVariableInfoOutput">
<part name="variable-info" type="typ:tVariableInfo"/>
</message>
+ <message name="setVariableInput">
+ <part name="sid" type="xsd:string"/>
+ <part name="varName" type="xsd:string"/>
+ <part name="value" type="xsd:anyType"/>
+ </message>
+ <message name="setVariableOutput">
+ <part name="scope-info" type="typ:tVariableInfo"/>
+ </message>
<message name="listEventsInput">
<part name="instanceFilter" type="xsd:string"/>
<part name="eventFilter" type="xsd:string"/>
@@ -340,6 +348,11 @@
<output message="tns:getVariableInfoOutput"/>
<fault name="ManagementFault" message="tns:managementFault"/>
</operation>
+ <operation name="setVariable">
+ <input message="tns:setVariableInput"/>
+ <output message="tns:setVariableOutput"/>
+ <fault name="ManagementFault" message="tns:managementFault"/>
+ </operation>
<operation name="listEvents">
<input message="tns:listEventsInput"/>
<output message="tns:listEventsOutput"/>
@@ -626,6 +639,18 @@
<soap:fault name="ManagementFault" use="literal"/>
</fault>
</operation>
+ <operation name="setVariable">
+ <soap:operation soapAction="" style="rpc"/>
+ <input>
+ <soap:body namespace="http://www.apache.org/ode/pmapi" use="literal"/>
+ </input>
+ <output>
+ <soap:body namespace="http://www.apache.org/ode/pmapi" use="literal"/>
+ </output>
+ <fault name="ManagementFault">
+ <soap:fault name="ManagementFault" use="literal"/>
+ </fault>
+ </operation>
<operation name="listEvents">
<soap:operation soapAction="" style="rpc"/>
<input>
http://git-wip-us.apache.org/repos/asf/ode/blob/7f6f94c0/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
index d21f378..9523121 100644
--- a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
+++ b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
@@ -19,6 +19,7 @@
package org.apache.ode.bpel.engine;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.text.ParseException;
import java.util.ArrayList;
@@ -140,6 +141,8 @@ import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
import org.apache.ode.utils.stl.MemberOfFunction;
import org.apache.ode.utils.stl.UnaryFunction;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -457,6 +460,49 @@ public class ProcessAndInstanceManagementImpl implements InstanceManagement, Pro
return ret;
}
+ public VariableInfoDocument setVariable(final String scopeId,final String varName, final XmlObject value) throws ManagementException {
+ VariableInfoDocument ret = VariableInfoDocument.Factory.newInstance();
+ final TVariableInfo vinf = ret.addNewVariableInfo();
+ final TVariableRef sref = vinf.addNewSelf();
+ dbexec(new BpelDatabase.Callable<Object>() {
+ public Object run(BpelDAOConnection session) throws Exception {
+ ScopeDAO scope = session.getScope(new Long(scopeId));
+ if (scope == null) {
+ throw new InvalidRequestException("ScopeNotFound:"
+ + scopeId);
+ }
+
+ sref.setSiid(scopeId);
+ sref.setIid(scope.getProcessInstance().getInstanceId()
+ .toString());
+ sref.setName(varName);
+
+ XmlDataDAO var = scope.getVariable(varName);
+ if (var == null) {
+ throw new InvalidRequestException("VarNotFound:" + varName);
+ }
+
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ value.save(out, new XmlOptions().setSaveOuter());
+ Node value2 = DOMUtils.getFirstChildElement(DOMUtils
+ .stringToDOM(out.toString()));
+ var.set(value2);
+ }
+
+ Node nval = var.get();
+ if (nval != null) {
+ TVariableInfo.Value val = vinf.addNewValue();
+ val.getDomNode().appendChild(
+ val.getDomNode().getOwnerDocument()
+ .importNode(nval, true));
+ }
+ return null;
+ }
+ });
+ return ret;
+ }
+
//
// INSTANCE ACTIONS
//
http://git-wip-us.apache.org/repos/asf/ode/blob/7f6f94c0/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/main/java/org/apache/ode/utils/DOMUtils.java b/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
index a9d30de..d8714c3 100644
--- a/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
+++ b/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
@@ -135,6 +135,14 @@ public class DOMUtils {
return out.toString();
}
+ public static Element getFirstChildElement(Node node) {
+ NodeList l = node.getChildNodes();
+ for (int i = 0; i < l.getLength(); i++) {
+ if (l.item(i) instanceof Element) return (Element) l.item(i);
+ }
+ return null;
+ }
+
/**
* Returns the value of an attribute of an element. Returns null if the
* attribute is not found (whereas Element.getAttributeNS returns "" if an