Author: mriou
Date: Wed Nov 19 16:54:34 2008
New Revision: 719146

URL: http://svn.apache.org/viewvc?rev=719146&view=rev
Log:
Descriptor to set the process resource URL. Implicit self variable pointing to 
the instance resource.

Modified:
    ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g
    ode/sandbox/simpel/src/main/java/org/apache/ode/EmbeddedServer.java
    ode/sandbox/simpel/src/main/java/org/apache/ode/Options.java
    ode/sandbox/simpel/src/main/java/org/apache/ode/embed/EmbeddedStore.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/test/java/org/apache/ode/rest/RestfulProcessTest.java
    
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/RestfulSimPELTest.java
    
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELCompilerTest.java

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=719146&r1=719145&r2=719146&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 Nov 19 16:54:34 2008
@@ -53,12 +53,15 @@
     
     // Lamguage level members
     
-    private OBuilder builder = new OBuilder();
+    private OBuilder builder;
 
     public OBuilder getBuilder() {
-       return builder;
+           return builder;
     }
-    
+    public void setBuilder(OBuilder builder) {
+           this.builder = builder;
+    }
+
     private String text(org.antlr.runtime.tree.Tree t) {
        if (t == null) return null;
        else return t.getText();

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=719146&r1=719145&r2=719146&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 Wed Nov 
19 16:54:34 2008
@@ -56,7 +56,11 @@
     }
 
     public Collection<QName> deploy(String process) {
-        return _resources.getStore().deploy(process);
+        return deploy(process, new Descriptor());
+    }
+
+    public Collection<QName> deploy(String process, Descriptor desc) {
+        return _resources.getStore().deploy(process, desc);
     }
 
     public void undeploy(String dir) {

Modified: ode/sandbox/simpel/src/main/java/org/apache/ode/Options.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/Options.java?rev=719146&r1=719145&r2=719146&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/Options.java (original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/Options.java Wed Nov 19 
16:54:34 2008
@@ -35,7 +35,7 @@
     private OdeConfigProperties _odeProps;
     private Properties _backingProps;
     private List<BpelEventListener> _eventListeners;
-    private boolean _enableRest;
+    private boolean _enableRest = true;
 
     public Options() {
         _backingProps = new Properties();
@@ -86,10 +86,6 @@
         return _backingProps;
     }
 
-    public void makeRestful() {
-        _enableRest = true;
-    }
-
     public boolean isRestful() {
         return _enableRest;
     }

Modified: 
ode/sandbox/simpel/src/main/java/org/apache/ode/embed/EmbeddedStore.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/embed/EmbeddedStore.java?rev=719146&r1=719145&r2=719146&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/embed/EmbeddedStore.java 
(original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/embed/EmbeddedStore.java 
Wed Nov 19 16:54:34 2008
@@ -27,6 +27,7 @@
 import org.apache.ode.bpel.rapi.Serializer;
 import org.apache.ode.bpel.rapi.ProcessModel;
 import org.apache.ode.simpel.SimPELCompiler;
+import org.apache.ode.Descriptor;
 import org.w3c.dom.Node;
 import org.w3c.dom.Element;
 
@@ -49,8 +50,8 @@
     private SimPELCompiler _compiler = new SimPELCompiler();
     private ArrayList<ProcessStoreListener> _listeners = new 
ArrayList<ProcessStoreListener>();
 
-    public Collection<QName> deploy(String processStr) {
-        OProcess op = _compiler.compileProcess(processStr);
+    public Collection<QName> deploy(String processStr, Descriptor desc) {
+        OProcess op = _compiler.compileProcess(processStr, desc);
         _processes.put(op.getQName(), op);
         
         fireEvent(new ProcessStoreEvent(ProcessStoreEvent.Type.DEPLOYED, 
op.getQName(), null));        

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=719146&r1=719145&r2=719146&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 Nov 19 16:54:34 2008
@@ -11,6 +11,8 @@
 import org.apache.ode.simpel.antlr.SimPELParser;
 import org.apache.ode.simpel.antlr.SimPELWalker;
 import org.apache.ode.simpel.util.DefaultErrorListener;
+import org.apache.ode.simpel.omodel.OBuilder;
+import org.apache.ode.Descriptor;
 import org.mozilla.javascript.Context;
 import org.mozilla.javascript.Scriptable;
 import org.mozilla.javascript.serialize.ScriptableOutputStream;
@@ -36,7 +38,7 @@
         this.el = el;
     }
 
-    public OProcess compileProcess(String processDoc) {
+    public OProcess compileProcess(String processDoc, Descriptor desc) {
         // Isolating the process definition from the header containing global 
state definition (Javascript
         // functions and shared objects)
         Pattern p = Pattern.compile("process [a-zA-Z_]*", Pattern.MULTILINE);
@@ -45,7 +47,7 @@
         String header = processDoc.substring(0, m.start());
         String processDef = processDoc.substring(m.start(), 
processDoc.length());
 
-        OProcess model = buildModel(processDef);
+        OProcess model = buildModel(processDef, desc);
         if (header.trim().length() > 0)
             model.globalState = buildGlobalState(header);
         return model;
@@ -75,7 +77,7 @@
         return baos.toByteArray();
     }
 
-    private OProcess buildModel(String processDef) {
+    private OProcess buildModel(String processDef, Descriptor desc) {
         ANTLRReaderStream charstream = null;
         try {
             charstream = new ANTLRReaderStream(new StringReader(processDef));
@@ -113,6 +115,8 @@
             // Pass the tree to the walker for compilation
             CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
             SimPELWalker walker = new SimPELWalker(nodes);
+            OBuilder obuilder = new OBuilder(desc);
+            walker.setBuilder(obuilder);
             walker.setErrorListener(errListener);
             HashMap<Integer, Integer> tokenMapping = 
buildTokenMap(E4XParser.tokenNames, E4XLexer.class, SimPELWalker.class);
             rewriteTokens(tokenMapping, E4XParser.tokenNames, t, walker, 
false);

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=719146&r1=719145&r2=719146&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 Nov 19 16:54:34 2008
@@ -12,6 +12,7 @@
 import org.apache.ode.simpel.wsdl.SimPELOutput;
 import org.apache.ode.simpel.wsdl.SimPELPortType;
 import org.apache.ode.utils.GUID;
+import org.apache.ode.Descriptor;
 import org.w3c.dom.Node;
 import org.w3c.dom.Document;
 
@@ -33,6 +34,7 @@
     private static final Logger __log = Logger.getLogger(OBuilder.class);
     private static final String SIMPEL_NS = 
"http://ode.apache.org/simpel/1.0/definition";;
 
+    private Descriptor _desc;
     private OExpressionLanguage _exprLang;
     private OExpressionLanguage _konstExprLang;
     private String _processNS;
@@ -42,11 +44,12 @@
     private HashMap<String,OResource> webResources = new 
HashMap<String,OResource>();
     private HashSet<String> typedVariables = new HashSet<String>();
 
-    public OBuilder() {
+    public OBuilder(Descriptor desc) {
         HashMap<String, String> exprRuntime = new HashMap<String, String>();
         exprRuntime.put("runtime-class", 
"org.apache.ode.simpel.expr.E4XExprRuntime");
         _exprLang = new OExpressionLanguage(_oprocess, exprRuntime);
         _exprLang.expressionLanguageUri = SIMPEL_NS + "/exprLang";
+        _desc = desc;
     }
 
     public StructuredActivity build(Class oclass, OScope oscope, 
StructuredActivity parent, Object... params) {
@@ -106,9 +109,18 @@
                 
"org.apache.ode.bpel.rtrep.v2.KonstExpressionLanguageRuntimeImpl");
         _oprocess.expressionLanguages.add(_konstExprLang);
 
+        // Implicit scope that wraps a process
         final OScope processScope = new OScope(_oprocess, null);
         processScope.name = "__PROCESS_SCOPE:" + name;
         _oprocess.processScope = processScope;
+
+        // Implicit self variable pointing to the instance resource for 
RESTful processes
+        if (_desc.isRestful()) {
+            SimPELExpr expr = new SimPELExpr(_oprocess);
+            expr.setExpr(_desc.getAddress() != null ? 
("\""+_desc.getAddress()+"\"") : "\"/\"");
+            addResourceDecl(processScope, "self", expr, null);
+        }
+
         return buildScope(processScope, null);
     }
 

Modified: 
ode/sandbox/simpel/src/test/java/org/apache/ode/rest/RestfulProcessTest.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/test/java/org/apache/ode/rest/RestfulProcessTest.java?rev=719146&r1=719145&r2=719146&view=diff
==============================================================================
--- 
ode/sandbox/simpel/src/test/java/org/apache/ode/rest/RestfulProcessTest.java 
(original)
+++ 
ode/sandbox/simpel/src/test/java/org/apache/ode/rest/RestfulProcessTest.java 
Wed Nov 19 16:54:34 2008
@@ -24,7 +24,6 @@
 
     public void testProcessGet() throws Exception {
         EmbeddedServer server = new EmbeddedServer();
-        server.options.makeRestful();
         server.start();
 
         server.deploy(HELLO_WORLD);

Modified: 
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/RestfulSimPELTest.java
URL: 
http://svn.apache.org/viewvc/ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/RestfulSimPELTest.java?rev=719146&r1=719145&r2=719146&view=diff
==============================================================================
--- 
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/RestfulSimPELTest.java 
(original)
+++ 
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/RestfulSimPELTest.java 
Wed Nov 19 16:54:34 2008
@@ -1,6 +1,7 @@
 package org.apache.ode.simpel;
 
 import org.apache.ode.EmbeddedServer;
+import org.apache.ode.Descriptor;
 import junit.framework.TestCase;
 import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
@@ -15,18 +16,18 @@
 
     private static final String HELLO_WORLD =
             "process HelloWorld {\n" +
-            "   helloRes = resource(\"/hello\"); \n" +
-            "   receive(helloRes) { |name|\n" +
+            "   receive(self) { |name|\n" +
             "       helloName = \"Hello \" + name;\n" +
             "       reply(helloName);\n" +
             "   }\n" +
             "}";
 
     public void testRestfulHelloWorld() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
-        server.options.makeRestful();
+        EmbeddedServer server = new EmbeddedServer();
         server.start();
-        server.deploy(HELLO_WORLD);
+        Descriptor desc = new Descriptor();
+        desc.setAddress("/hello");
+        server.deploy(HELLO_WORLD, desc);
 
         ClientConfig cc = new DefaultClientConfig();
         Client c = Client.create(cc);
@@ -40,4 +41,11 @@
         
assertTrue(resp.getMetadata().get("Location").get(0).matches("/hello/[0-9]*"));
         System.out.println("loc " + resp.getMetadata().get("Location"));
     }
+
+    private static final String COUNTER =
+            "process Counter {\n" +
+            "   initial = receive(self); \n" +
+            "}";
+
+
 }

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=719146&r1=719145&r2=719146&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 Nov 19 16:54:34 2008
@@ -3,6 +3,7 @@
 import junit.framework.TestCase;
 import org.antlr.runtime.RecognitionException;
 import org.apache.ode.bpel.rtrep.v2.OProcess;
+import org.apache.ode.Descriptor;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -12,6 +13,14 @@
  */
 public class SimPELCompilerTest extends TestCase {
 
+    Descriptor desc;
+
+    public SimPELCompilerTest() {
+        super();
+        desc = new Descriptor();
+        desc.setRestful(false);
+    }
+
     /**
      * If this was Ruby, I'd just dynamically create methods for each tested 
process
      * and we'd have one clean method for each test case. But this is Java so 
there's
@@ -39,7 +48,7 @@
         while ((line = reader.readLine()) != null) {
             if (line.trim().startsWith("#=")) {
                 // Found next test case divider, process is complete so we can 
parse
-                OProcess oprocess = 
comp.compileProcess(processBody.toString());
+                OProcess oprocess = 
comp.compileProcess(processBody.toString(), desc);
                 if (l.messages.toString().length() > 0) {
                     // Shit happened
                     allErrors.append("Test case 
").append(testCaseName).append(" failed!!\n");
@@ -61,7 +70,7 @@
 
         // And the last one
         try {
-            comp.compileProcess(processBody.toString());
+            comp.compileProcess(processBody.toString(), desc);
         } catch (Exception e) {
             System.out.println("Error compiling " + testCaseName);
             e.printStackTrace();
@@ -84,19 +93,19 @@
 
     public void testLoanApproval() throws Exception {
         SimPELCompiler c = compiler();
-        c.compileProcess(readProcess("loan-approval.simpel"));
+        c.compileProcess(readProcess("loan-approval.simpel"), desc);
         reportErrors("Loan approval", c);
     }
 
     public void testAuction() throws Exception {
         SimPELCompiler c = compiler();
-        c.compileProcess(readProcess("auction.simpel"));
+        c.compileProcess(readProcess("auction.simpel"), desc);
         reportErrors("Auction service", c);
     }
 
     public void testTaskManager() throws Exception {
         SimPELCompiler c = compiler();
-        c.compileProcess(readProcess("task-manager.simpel"));
+        c.compileProcess(readProcess("task-manager.simpel"), desc);
         reportErrors("Auction service", c);
     }
 


Reply via email to