Author: mriou
Date: Wed Mar  5 12:41:22 2008
New Revision: 634020

URL: http://svn.apache.org/viewvc?rev=634020&view=rev
Log:
Hurra, hello world works! On the minus side the runtime Javascript expression 
evaluation is very primitive, only a handful of activities are supported and 
there are TODOs all over the place. But it's a nice first step.

Added:
    ode/sandbox/simpel/lib/antlr-20080215.jar   (with props)
    ode/sandbox/simpel/lib/rhino-1.7R1.jar   (with props)
    ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/
    
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
    
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpr.java
      - copied, changed from r628212, 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpression.java
Removed:
    
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpression.java
Modified:
    ode/sandbox/simpel/Rakefile
    ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPEL.g
    ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g
    
ode/sandbox/simpel/src/main/java/org/apache/ode/embed/BindingContextImpl.java
    ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/SimPELCompiler.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/SimPELOutput.java
    
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java

Modified: ode/sandbox/simpel/Rakefile
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/Rakefile?rev=634020&r1=634019&r2=634020&view=diff
==============================================================================
--- ode/sandbox/simpel/Rakefile (original)
+++ ode/sandbox/simpel/Rakefile Wed Mar  5 12:41:22 2008
@@ -64,9 +64,29 @@
   meta_inf << file("NOTICE")
 
   pkg_name = "org.apache.ode.simpel.antlr"
-  compile.from antlr(_("src/main/antlr"), {:in_package=>pkg_name, 
:token=>pkg_name})
+  antlr_task = antlr(_("src/main/antlr"), {:in_package=>pkg_name, 
:token=>pkg_name})
+
+  # Because of a pending ANTLR bug, we need to insert some additional 
+  # code in generated classes.
+  task('tweak_antlr' => antlr_task) do
+    walker = 
_("target/generated/antlr/org/apache/ode/simpel/antlr/SimPELWalker.java")
+    walker_txt = File.read(walker)
+
+    patch_walker = lambda do |regx, offset, txt|
+      insrt_idx = walker_txt.index(regx)
+      walker_txt.insert(insrt_idx + offset, txt)
+    end
+    patch_walker[/SimPELWalker.g(.*)ns_id$/, 51, "ids = 
(LinkedListTree)input.LT(1);"]
+    patch_walker[/SimPELWalker.g(.*) \( path_expr \)$/, 37, "lv = 
(LinkedListTree)input.LT(1);"]
+    patch_walker[/SimPELWalker.g(.*) \( rvalue \)$/, 34, "rv = 
(LinkedListTree)input.LT(1);"]
+
+    File.open(walker, 'w') { |f| f << walker_txt }
+  end
+
+  compile.from antlr_task
+  compile.enhance([task('tweak_antlr')])
   compile.with HSQLDB, JAVAX.resource, JAVAX.transaction, COMMONS.lang, 
COMMONS.logging, ODE, LOG4J, 
     WSDL4J, GERONIMO.transaction, XERCES,
-    file(_("lib/e4x-grammar-0.1.jar")), file(_("lib/antlr-20071220.jar"))
+    file(_("lib/e4x-grammar-0.1.jar")), file(_("lib/antlr-20080215.jar")), 
file(_("lib/rhino-1.7R1.jar"))
   package :jar
 end

Added: ode/sandbox/simpel/lib/antlr-20080215.jar
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/lib/antlr-20080215.jar?rev=634020&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ode/sandbox/simpel/lib/antlr-20080215.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ode/sandbox/simpel/lib/rhino-1.7R1.jar
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/lib/rhino-1.7R1.jar?rev=634020&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ode/sandbox/simpel/lib/rhino-1.7R1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPEL.g
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPEL.g?rev=634020&r1=634019&r2=634020&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPEL.g 
(original)
+++ ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPEL.g Wed 
Mar  5 12:41:22 2008
@@ -147,7 +147,7 @@
 
 reply  :       'reply' '(' ID (',' ID ',' ID)? ')' -> ^(REPLY ID (ID ID)?);
 
-assign :       path_expr '=' rvalue -> ^(ASSIGN ID rvalue);
+assign :       path_expr '=' rvalue -> ^(ASSIGN path_expr rvalue);
 rvalue
        :        receive_base -> ^(RECEIVE receive_base)
                | invoke | expr | xml_literal;

Modified: 
ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g?rev=634020&r1=634019&r2=634020&view=diff
==============================================================================
--- 
ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g 
(original)
+++ 
ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g 
Wed Mar  5 12:41:22 2008
@@ -10,12 +10,15 @@
 scope BPELScope { OScope oscope; }
 scope Parent { OBuilder.StructuredActivity activity; }
 scope ReceiveBlock { OPickReceive receive; }
+scope ExprContext { SimPELExpr expr; }
 
 @header {
 package org.apache.ode.simpel.antlr;
 import uk.co.badgersinfoil.e4x.antlr.LinkedListTree;
+import uk.co.badgersinfoil.e4x.antlr.LinkedListToken;
 import org.apache.ode.simpel.ErrorListener;
 import org.apache.ode.simpel.omodel.OBuilder;
+import org.apache.ode.simpel.omodel.SimPELExpr;
 import org.apache.ode.bpel.o.*;
 }
 
@@ -61,6 +64,16 @@
        else return t.getText();
     }
 
+    private String deepText(org.antlr.runtime.tree.Tree t) {
+       LinkedListTree llt = ((LinkedListTree)t);
+       StringBuffer b = new StringBuffer();
+       LinkedListToken tok = ((LinkedListTree)t).getStartToken();
+       b.append(tok.getText());
+       while(tok != llt.getStopToken() && (tok = tok.getNext()) != null)
+           if (tok.getText() != null) b.append(tok.getText());
+        return b.toString();
+    }
+
 }
 
 program        :       ^(ROOT declaration+);
@@ -165,9 +178,20 @@
                (prb=(param_block))?;
        
 
-assign :       ^(ASSIGN ID rv=(rvalue)) { builder.build(OAssign.class, 
$BPELScope::oscope, $Parent::activity, text($ID), text($rv)); };
-rvalue
-       :       receive | invoke | expr | xmlElement;
+assign 
+scope ExprContext;
+       :       ^(ASSIGN 
+                {
+                  $ExprContext::expr = new SimPELExpr(builder.getProcess());
+                }
+                lv=(path_expr) rv=(rvalue)) 
+                {
+                  $ExprContext::expr.setExpr(deepText($rv));
+                 OBuilder.StructuredActivity<OAssign> assign = 
builder.build(OAssign.class, $BPELScope::oscope, $Parent::activity, 
deepText($lv), $ExprContext::expr);
+                  // The long, winding road of abstraction
+                  $ExprContext::expr = (SimPELExpr) 
((OAssign.Expression)((OAssign.Copy)assign.getOActivity().operations.get(0)).from).expression;
+                };
+rvalue :       receive | invoke | expr | xmlElement;
        
 throw_ex:      ^(THROW ns_id);
 
@@ -203,7 +227,7 @@
 funct_call
        :       ^(CALL ID*);
 path_expr
-       :       ^(PATH ns_id*);
+       :       ^(PATH ids=(ns_id*)) { 
builder.addExprVariable($BPELScope::oscope, $ExprContext::expr, 
deepText($ids)); };
 ns_id  :       ^(NS ID? ID);
 
 s_expr :       ^('==' s_expr s_expr) 

Modified: 
ode/sandbox/simpel/src/main/java/org/apache/ode/embed/BindingContextImpl.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/embed/BindingContextImpl.java?rev=634020&r1=634019&r2=634020&view=diff
==============================================================================
--- 
ode/sandbox/simpel/src/main/java/org/apache/ode/embed/BindingContextImpl.java 
(original)
+++ 
ode/sandbox/simpel/src/main/java/org/apache/ode/embed/BindingContextImpl.java 
Wed Mar  5 12:41:22 2008
@@ -2,6 +2,7 @@
 
 import org.apache.ode.bpel.iapi.*;
 import org.apache.ode.il.epr.WSDL11Endpoint;
+import org.apache.ode.il.epr.URLEndpoint;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.Namespaces;
 import org.w3c.dom.Document;
@@ -36,6 +37,16 @@
     }
 
     public PartnerRoleChannel createPartnerRoleChannel(QName qName, PortType 
portType, Endpoint endpoint) {
-        throw new UnsupportedOperationException();
+        // TODO implement me
+        return new PartnerRoleChannelImpl();
+    }
+
+    private class PartnerRoleChannelImpl implements PartnerRoleChannel {
+        public EndpointReference getInitialEndpointReference() {
+            return new URLEndpoint();
+        }
+
+        public void close() {
+        }
     }
 }

Modified: 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/SimPELCompiler.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/SimPELCompiler.java?rev=634020&r1=634019&r2=634020&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/SimPELCompiler.java 
(original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/SimPELCompiler.java 
Wed Mar  5 12:41:22 2008
@@ -57,6 +57,9 @@
         }
         // pull out the tree and cast it
         Tree t = (Tree)result.getTree();
+        StringBuffer b = new StringBuffer();
+        toText((LinkedListTree) t, b);
+        System.out.println(b.toString());
 
         if (t != null) {
             //  Handle functions separately
@@ -78,6 +81,12 @@
             return walker.getBuilder().getProcess();
         }
         return null;
+    }
+
+    private void toText(Tree t, StringBuffer b) {
+        LinkedListToken tok = ((LinkedListTree)t).getStartToken();
+        while((tok = tok.getNext()) != null)
+            if (tok.getText() != null) b.append(tok.getText());
     }
 
     private void handleFunctions(Tree t) {

Added: 
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=634020&view=auto
==============================================================================
--- 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
 (added)
+++ 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
 Wed Mar  5 12:41:22 2008
@@ -0,0 +1,108 @@
+package org.apache.ode.simpel.expr;
+
+import org.apache.ode.bpel.common.FaultException;
+import org.apache.ode.bpel.explang.ConfigurationException;
+import org.apache.ode.bpel.explang.EvaluationContext;
+import org.apache.ode.bpel.explang.ExpressionLanguageRuntime;
+import org.apache.ode.bpel.o.OExpression;
+import org.apache.ode.bpel.o.OMessageVarType;
+import org.apache.ode.bpel.o.OScope;
+import org.apache.ode.simpel.omodel.SimPELExpr;
+import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.utils.xsd.Duration;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.ContextFactory;
+import org.mozilla.javascript.Delegator;
+import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.xml.XMLLib;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.Element;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Matthieu Riou <[EMAIL PROTECTED]>
+ */
+public class SimPELExprRuntime implements ExpressionLanguageRuntime {
+    public void initialize(Map map) throws ConfigurationException {
+    }
+
+    public String evaluateAsString(OExpression oExpression, EvaluationContext 
evaluationContext) throws FaultException {
+        return null;
+    }
+
+    public boolean evaluateAsBoolean(OExpression oExpression, 
EvaluationContext evaluationContext) throws FaultException {
+        return false;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public Number evaluateAsNumber(OExpression oExpression, EvaluationContext 
evaluationContext) throws FaultException {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public List evaluate(OExpression oexpr, EvaluationContext 
evaluationContext) throws FaultException {
+        Context cx = ContextFactory.getGlobal().enterContext();
+        ODEDelegator scope = new ODEDelegator(cx.initStandardObjects(), 
evaluationContext, (SimPELExpr)oexpr);
+
+        Object res = cx.evaluateString(scope, ((SimPELExpr)oexpr).getExpr(), 
"<expr>", 0, null);
+        ArrayList<Node> resList = new ArrayList<Node>(1);
+
+        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);
+        }
+        if (res instanceof Node) resList.add((Node) res);
+        return resList;
+    }
+
+    public Calendar evaluateAsDate(OExpression oExpression, EvaluationContext 
evaluationContext) throws FaultException {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public Duration evaluateAsDuration(OExpression oExpression, 
EvaluationContext evaluationContext) throws FaultException {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public Node evaluateNode(OExpression oExpression, EvaluationContext 
evaluationContext) throws FaultException {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    private class ODEDelegator extends Delegator {
+        private EvaluationContext _evaluationContext;
+        private XMLLib _xmlLib;
+        private SimPELExpr _expr;
+
+        private ODEDelegator(Scriptable obj, EvaluationContext 
evaluationContext, SimPELExpr expr) {
+            super(obj);
+            _evaluationContext = evaluationContext;
+            _expr = expr;
+        }
+
+        public void setXmlLib(XMLLib _xmlLib) {
+            this._xmlLib = _xmlLib;
+        }
+
+        public Object get(String name, Scriptable start) {
+            try {
+                // TODO this assumes message type with a single part for all 
variables, valid?
+                OScope.Variable v = _expr.getReferencedVariable(name);
+                Node node = _evaluationContext.readVariable(v,
+                        
((OMessageVarType)v.type).parts.values().iterator().next());
+                if (node.getTextContent() != null) return 
node.getTextContent();
+                // TODO wrap xml nodes
+                return node;
+            } catch (Exception e) {
+                throw new RuntimeException("Variable " + name + " has never 
been initialized.");
+            }
+        }
+
+        public boolean has(String name, Scriptable start) {
+            return get(name, start) != null;
+        }
+    }
+}

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=634020&r1=634019&r2=634020&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 
Wed Mar  5 12:41:22 2008
@@ -24,11 +24,17 @@
     private static final Logger __log = Logger.getLogger(OBuilder.class);
     private static final String SIMPEL_NS = 
"http://ode.apache.org/simpel/1.0/definition";;
 
+    private OExpressionLanguage _exprLang;
     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>();
     private boolean firstReceive = true;
 
+    public OBuilder() {
+        HashMap<String, String> exprRuntime = new HashMap<String, String>();
+        exprRuntime.put("runtime-class", 
"org.apache.ode.simpel.expr.SimPELExprRuntime");
+        _exprLang = new OExpressionLanguage(_oprocess, exprRuntime);
+    }
 
     public StructuredActivity build(Class oclass, OScope oscope, 
StructuredActivity parent, Object... params) {
         try {
@@ -45,7 +51,7 @@
             buildParams[0] = oactivity;
             buildParams[1] = oscope;
             StructuredActivity result = (StructuredActivity) 
buildMethod.invoke(this, buildParams);
-            parent.run((OActivity) result.getOActivity());
+            if (result != null) parent.run((OActivity) result.getOActivity());
             return result;
         } catch (Exception e) {
             throw new RuntimeException("Couldn't build activity of type " + 
oclass, e);
@@ -78,6 +84,8 @@
         if (namespaces.get(prefix) == null) _oprocess.targetNamespace = 
SIMPEL_NS;
         else _oprocess.targetNamespace = namespaces.get(prefix);
 
+        _oprocess.expressionLanguages.add(_exprLang);
+
         final OScope processScope = new OScope(_oprocess, null);
         processScope.name = "__PROCESS_SCOPE:" + name;
         _oprocess.procesScope = processScope;
@@ -113,15 +121,19 @@
         };
     }
 
-    public SimpleActivity buildAssign(OAssign oassign, OScope oscope, String 
lexpr, String rexpr) {
+    public SimpleActivity buildAssign(OAssign oassign, OScope oscope, String 
lexpr, SimPELExpr rexpr) {
         OAssign.Copy ocopy = new OAssign.Copy(_oprocess);
         oassign.operations.add(ocopy);
 
+        // TODO lvalue should also be an expression
         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")));
         ocopy.to = vref;
 
-        ocopy.from = new OAssign.Expression(_oprocess, new 
SimPELExpression(_oprocess, rexpr)); 
+        rexpr.expressionLanguage = _exprLang;
+        ocopy.from = new OAssign.Expression(_oprocess, rexpr);
         return new SimpleActivity<OAssign>(oassign);
     }
 
@@ -137,6 +149,8 @@
             oreply.partnerLink = buildPartnerLink(oscope, partnerLink, 
operation, true);
             oreply.operation = 
oreply.partnerLink.myRolePortType.getOperation(operation, null, null); 
         }
+        // Adding partner role
+        buildPartnerLink(oscope, oreply.partnerLink.name, 
oreply.operation.getName(), false);
         oreply.operation.setOutput(new SimPELOutput("out"));
         return new SimpleActivity<OReply>(oreply);
     }
@@ -155,6 +169,15 @@
         } else __log.warn("Can't set block parameter on activity " + oact);
     }
 
+    public void addExprVariable(OScope oscope, SimPELExpr expr, String 
varName) {
+        if (expr == null) {
+            // TODO Temporary plug until all activities are implemented
+            __log.warn("Skipping expression building, null expr");
+            return;
+        }
+        expr.addVariable(resolveVariable(oscope, varName));
+    }
+
     public OProcess getProcess() {
         return _oprocess;
     }
@@ -169,6 +192,7 @@
             resolved.declaringScope = oscope;
             partnerLinks.put(name, resolved);
             _oprocess.allPartnerLinks.add(resolved);
+            oscope.partnerLinks.put(name, resolved);
         }
         if (myRole) {
             PortType pt = resolved.myRolePortType;
@@ -180,7 +204,7 @@
             PortType pt = resolved.partnerRolePortType;
             if (pt == null) pt = resolved.partnerRolePortType = new 
SimPELPortType();
             SimPELOperation op = new SimPELOperation(operation);
-            op.setInput(new SimPELInput("in"));
+            op.setOutput(new SimPELOutput("out"));
             pt.addOperation(op);
         }
         return resolved;

Copied: 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpr.java 
(from r628212, 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpression.java)
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpr.java?p2=ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpr.java&p1=ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpression.java&r1=628212&r2=634020&rev=634020&view=diff
==============================================================================
--- 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpression.java
 (original)
+++ 
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/SimPELExpr.java 
Wed Mar  5 12:41:22 2008
@@ -2,19 +2,34 @@
 
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.bpel.o.OProcess;
-import org.apache.ode.bpel.o.OExpressionLanguage;
+import org.apache.ode.bpel.o.OScope;
+
+import java.util.HashMap;
 
 /**
  * @author Matthieu Riou <[EMAIL PROTECTED]>
  */
-public class SimPELExpression extends OExpression {
+public class SimPELExpr extends OExpression {
     private String expr;
+    private HashMap<String,OScope.Variable> _referencedVariables = new 
HashMap<String,OScope.Variable>();
 
-    public SimPELExpression(OProcess oProcess, String expr) {
+    public SimPELExpr(OProcess oProcess) {
         super(oProcess);
+    }
+
+    public String getExpr() {
+        return expr;
+    }
+
+    public void setExpr(String expr) {
         this.expr = expr;
-        OExpressionLanguage oelang = new OExpressionLanguage(oProcess, null);
-        oelang.expressionLanguageUri = "http://ode.apache.org/simpel/1.0/expr";;
-        expressionLanguage = oelang;
+    }
+
+    public void addVariable(OScope.Variable var) {
+        _referencedVariables.put(var.name, var);
+    }
+
+    public OScope.Variable getReferencedVariable(String name) {
+        return _referencedVariables.get(name);
     }
 }

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=634020&r1=634019&r2=634020&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 
Wed Mar  5 12:41:22 2008
@@ -8,6 +8,8 @@
  */
 public class SimPELOutput extends SimPELWSDLElement implements Output {
     private String name;
+    private SimPELMessage _message = new SimPELMessage();
+
     public SimPELOutput(String name) {
         this.name = name;
     }
@@ -20,6 +22,6 @@
     public void setMessage(Message message) {
     }
     public Message getMessage() {
-        return null;
+        return _message;
     }
 }

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=634020&r1=634019&r2=634020&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 
Wed Mar  5 12:41:22 2008
@@ -118,10 +118,11 @@
         server.deploy(process);
 
         Document doc = DOMUtils.newDocument();
-        Element wrapper = doc.createElement("wrapper");
+        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 {
@@ -148,7 +149,6 @@
             fail("There were failures.");
         }
     }
-
 
     private static class TestErrorListener implements ErrorListener {
         public StringBuffer messages = new StringBuffer();


Reply via email to