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);
     }


Reply via email to