Author: mriou
Date: Fri Mar 7 11:33:44 2008
New Revision: 634786
URL: http://svn.apache.org/viewvc?rev=634786&view=rev
Log:
Playing nice with WSDL, even if it doesn't play nice with us.
Added:
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELInput.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELMessage.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELOutput.java
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELPart.java
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java
ode/sandbox/simpel/src/test/resources/compile-tests-ok.simpel
Modified: ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java
(original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java Fri Mar
7 11:33:44 2008
@@ -70,7 +70,7 @@
Document doc = DOMUtils.newDocument();
Element msgEl = doc.createElementNS(null, "message");
doc.appendChild(msgEl);
- Element part = doc.createElement("payload"); // default part
+ Element part = doc.createElement(operation+"Request"); // default part
msgEl.appendChild(part);
part.appendChild(doc.importNode(message, true));
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
---
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
(original)
+++
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
Fri Mar 7 11:33:44 2008
@@ -52,9 +52,7 @@
if (res instanceof String) {
Document doc = DOMUtils.newDocument();
- Element wrapper =
doc.createElementNS("http://ode.apache.org/simpel/1.0/definition",
"simpelWrapper");
- wrapper.setTextContent((String) res);
- resList.add(wrapper);
+ resList.add(doc.createTextNode((String) res));
}
if (res instanceof Node) resList.add((Node) res);
return resList;
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java
(original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java
Fri Mar 7 11:33:44 2008
@@ -25,6 +25,7 @@
private static final String SIMPEL_NS =
"http://ode.apache.org/simpel/1.0/definition";
private OExpressionLanguage _exprLang;
+ private String _processNS;
private HashMap<String,String> namespaces = new HashMap<String,String>();
private HashMap<String,OPartnerLink> partnerLinks = new
HashMap<String,OPartnerLink>();
private HashMap<String,OScope.Variable> variables = new
HashMap<String,OScope.Variable>();
@@ -85,6 +86,7 @@
else _oprocess.targetNamespace = namespaces.get(prefix);
_oprocess.expressionLanguages.add(_exprLang);
+ _processNS = SIMPEL_NS + "/" + name;
final OScope processScope = new OScope(_oprocess, null);
processScope.name = "__PROCESS_SCOPE:" + name;
@@ -129,7 +131,7 @@
OAssign.VariableRef vref = new OAssign.VariableRef(_oprocess);
vref.variable = resolveVariable(oscope, lexpr);
vref.part = new OMessageVarType.Part(_oprocess, "payload",
- new OElementVarType(_oprocess, new
QName("http://ode.apache.org/simpel/1.0/definition", "simpelWrapper")));
+ new OElementVarType(_oprocess, new QName(_processNS,
"simpelWrapper")));
ocopy.to = vref;
rexpr.expressionLanguage = _exprLang;
@@ -139,7 +141,7 @@
public SimpleActivity buildReply(OReply oreply, OScope oscope,
OPickReceive oreceive,
String var, String partnerLink, String operation)
{
- oreply.variable = resolveVariable(oscope, var);
+ oreply.variable = resolveVariable(oscope, var, operation, false);
if (partnerLink == null) {
if (oreceive == null) throw new RuntimeException("No parent
receive but reply with var " + var +
" has no partnerLink/operation information.");
@@ -151,7 +153,7 @@
}
// Adding partner role
buildPartnerLink(oscope, oreply.partnerLink.name,
oreply.operation.getName(), false);
- oreply.operation.setOutput(new SimPELOutput("out"));
+ oreply.operation.setOutput(new SimPELOutput(new QName(_processNS,
operation + "Response")));
return new SimpleActivity<OReply>(oreply);
}
@@ -165,7 +167,8 @@
}
OActivity oact = ((OSequence)blockActivity).sequence.get(0);
if (oact instanceof OPickReceive) {
- ((OPickReceive)oact).onMessages.get(0).variable =
resolveVariable(oscope, varName);
+ OPickReceive.OnMessage rec =
((OPickReceive)oact).onMessages.get(0);
+ rec.variable = resolveVariable(oscope, varName,
rec.operation.getName(), true);
} else __log.warn("Can't set block parameter on activity " + oact);
}
@@ -198,32 +201,44 @@
PortType pt = resolved.myRolePortType;
if (pt == null) pt = resolved.myRolePortType = new
SimPELPortType();
SimPELOperation op = new SimPELOperation(operation);
- op.setInput(new SimPELInput("in"));
+ op.setInput(new SimPELInput(new QName(_processNS, operation +
"Request")));
pt.addOperation(op);
} else {
PortType pt = resolved.partnerRolePortType;
if (pt == null) pt = resolved.partnerRolePortType = new
SimPELPortType();
SimPELOperation op = new SimPELOperation(operation);
- op.setOutput(new SimPELOutput("out"));
+ op.setOutput(new SimPELOutput(new QName(_processNS, operation +
"Response")));
pt.addOperation(op);
}
return resolved;
}
private OScope.Variable resolveVariable(OScope oscope, String name) {
+ return resolveVariable(oscope, name, null, false);
+ }
+
+ private OScope.Variable resolveVariable(OScope oscope, String name, String
operation, boolean request) {
OScope.Variable resolved = variables.get(name);
// TODO this will not work in case of variable name conflicts in
different scopes
if (resolved == null) {
LinkedList<OMessageVarType.Part> parts = new
LinkedList<OMessageVarType.Part>();
-
parts.add(new OMessageVarType.Part(_oprocess, "payload",
- new OElementVarType(_oprocess, new
QName("http://ode.apache.org/simpel/1.0/definition", "simpelWrapper"))));
- OMessageVarType omsgType = new OMessageVarType(_oprocess,
- new QName("http://ode.apache.org/simpel/1.0/definition",
"simpelMessage"), parts);
+ new OElementVarType(_oprocess, new QName(_processNS,
"simpelWrapper"))));
+ OMessageVarType omsgType = new OMessageVarType(_oprocess, new
QName(_processNS, "simpelMessage"), parts);
resolved = new OScope.Variable(_oprocess, omsgType);
resolved.name = name;
resolved.declaringScope = oscope;
variables.put(name, resolved);
+ }
+
+ // If an operation name has been provided with which to associate this
variable, we
+ // use a better naming for the part element.
+ if (operation != null) {
+ String elmtName = operation + (request ? "Request" : "Response");
+ LinkedList<OMessageVarType.Part> parts = new
LinkedList<OMessageVarType.Part>();
+ parts.add(new OMessageVarType.Part(_oprocess, elmtName,
+ new OElementVarType(_oprocess, new QName(_processNS,
elmtName))));
+ resolved.type = new OMessageVarType(_oprocess, new
QName(_processNS, operation), parts);
}
return resolved;
}
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELInput.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELInput.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
---
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELInput.java
(original)
+++
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELInput.java
Fri Mar 7 11:33:44 2008
@@ -2,16 +2,18 @@
import javax.wsdl.Input;
import javax.wsdl.Message;
+import javax.xml.namespace.QName;
/**
* @author Matthieu Riou <[EMAIL PROTECTED]>
*/
public class SimPELInput extends SimPELWSDLElement implements Input {
private String name;
- private SimPELMessage _message = new SimPELMessage();
+ private SimPELMessage _message;
- public SimPELInput(String name) {
- this.name = name;
+ public SimPELInput(QName msgName) {
+ name = "Request";
+ _message = new SimPELMessage(msgName);
}
public void setName(String s) {
this.name = s;
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELMessage.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELMessage.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
---
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELMessage.java
(original)
+++
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELMessage.java
Fri Mar 7 11:33:44 2008
@@ -12,10 +12,16 @@
* @author Matthieu Riou <[EMAIL PROTECTED]>
*/
public class SimPELMessage extends SimPELWSDLElement implements Message {
- private SimPELPart _part = new SimPELPart();
- private QName _qname = new
QName("http://ode.apache.org/simpel/1.0/definition", "simpelMessage");
+ private SimPELPart _part;
+ private QName _qname;
+
+ public SimPELMessage(QName qname) {
+ _qname = qname;
+ _part = new SimPELPart(qname);
+ }
public void setQName(QName qName) {
+ this._qname = qName;
}
public QName getQName() {
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELOutput.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELOutput.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
---
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELOutput.java
(original)
+++
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELOutput.java
Fri Mar 7 11:33:44 2008
@@ -1,17 +1,19 @@
package org.apache.ode.simpel.wsdl;
-import javax.wsdl.Output;
import javax.wsdl.Message;
+import javax.wsdl.Output;
+import javax.xml.namespace.QName;
/**
* @author Matthieu Riou <[EMAIL PROTECTED]>
*/
public class SimPELOutput extends SimPELWSDLElement implements Output {
private String name;
- private SimPELMessage _message = new SimPELMessage();
+ private SimPELMessage _message;
- public SimPELOutput(String name) {
- this.name = name;
+ public SimPELOutput(QName msgName) {
+ this.name = "Response";
+ _message = new SimPELMessage(msgName);
}
public void setName(String s) {
this.name = s;
Modified:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELPart.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELPart.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELPart.java
(original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/wsdl/SimPELPart.java
Fri Mar 7 11:33:44 2008
@@ -7,18 +7,24 @@
* @author Matthieu Riou <[EMAIL PROTECTED]>
*/
public class SimPELPart extends SimPELWSDLElement implements Part {
+ private QName _elmtName;
+
+ public SimPELPart(QName elmtName) {
+ _elmtName = elmtName;
+ }
+
public void setName(String s) {
}
public String getName() {
- return "payload";
+ return _elmtName.getLocalPart();
}
public void setElementName(QName qName) {
}
public QName getElementName() {
- return new QName("http://ode.apache.org/simpel/1.0/definition",
"simpelWrapper");
+ return _elmtName;
}
public void setTypeName(QName qName) {
Modified:
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
---
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java
(original)
+++
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java
Fri Mar 7 11:33:44 2008
@@ -104,27 +104,6 @@
reportErrors("Auction service", c);
}
- public void testHelloWorldComplete() throws Exception {
- String process =
- "process HelloWorld {\n" +
- " receive(my_pl, hello_op) { |msg_in|\n" +
- " msg_out = msg_in + \" World\";\n" +
- " reply(msg_out);\n" +
- " }\n" +
- "}";
-
- EmbeddedServer server = new EmbeddedServer();
- server.start();
- server.deploy(process);
-
- Document doc = DOMUtils.newDocument();
- Element wrapper =
doc.createElementNS("http://ode.apache.org/simpel/1.0/definition",
"simpelWrapper");
- wrapper.setTextContent("Hello");
-
- Element result = server.sendMessage("my_pl", "hello_op", wrapper);
- assertTrue(DOMUtils.domToString(result).indexOf("Hello World") > 0);
- }
-
private String readProcess(String fileName) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(
getClass().getClassLoader().getResource(fileName).getFile()));
Added:
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java?rev=634786&view=auto
==============================================================================
---
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java
(added)
+++
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java
Fri Mar 7 11:33:44 2008
@@ -0,0 +1,43 @@
+package org.apache.ode.simpel;
+
+import junit.framework.TestCase;
+import org.apache.ode.EmbeddedServer;
+import org.apache.ode.utils.DOMUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @author Matthieu Riou <[EMAIL PROTECTED]>
+ */
+public class SimPELRuntimeTest extends TestCase {
+
+ private static final String HELLO_WORLD =
+ "process HelloWorld {\n" +
+ " receive(my_pl, hello_op) { |msg_in|\n" +
+ " msg_out = msg_in + \" World\";\n" +
+ " reply(msg_out);\n" +
+ " }\n" +
+ "}";
+
+ private static final String POLITE_HELLO_WORLD =
+ "process HelloWorld {\n" +
+ " receive(my_pl, hello_op) { |info|\n" +
+ " msg_out = msg_in + \" World\";\n" +
+ " reply(msg_out);\n" +
+ " }\n" +
+ "}";
+
+ public void testHelloWorldComplete() throws Exception {
+ EmbeddedServer server = new EmbeddedServer();
+ server.start();
+ server.deploy(HELLO_WORLD);
+
+ Document doc = DOMUtils.newDocument();
+ Element wrapper =
doc.createElementNS("http://ode.apache.org/simpel/1.0/definition/HelloWorld",
"hello_opRequest");
+ wrapper.setTextContent("Hello");
+
+ Element result = server.sendMessage("my_pl", "hello_op", wrapper);
+ assertTrue(DOMUtils.domToString(result).indexOf("Hello World") > 0);
+ }
+
+}
Modified: ode/sandbox/simpel/src/test/resources/compile-tests-ok.simpel
URL:
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/test/resources/compile-tests-ok.simpel?rev=634786&r1=634785&r2=634786&view=diff
==============================================================================
--- ode/sandbox/simpel/src/test/resources/compile-tests-ok.simpel (original)
+++ ode/sandbox/simpel/src/test/resources/compile-tests-ok.simpel Fri Mar 7
11:33:44 2008
@@ -17,7 +17,7 @@
process StaticXML {
receive(my_pl, start_op) { |msg_in|
resp = <root><count start="0">0</count></root>;
- while(resp < 10) {
+ while(resp.count < 10) {
invoke(partner_pl, partner_start_op, msg_in);
resp = receive(partner_pl, partner_reply_op);
}