You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/11/27 03:02:24 UTC

svn commit: r721067 - in /ode/sandbox/simpel/src: main/antlr/org/apache/ode/simpel/antlr/ main/java/org/apache/ode/ main/java/org/apache/ode/embed/ main/java/org/apache/ode/rest/ main/java/org/apache/ode/simpel/expr/ main/java/org/apache/ode/simpel/omo...

Author: mriou
Date: Wed Nov 26 18:02:24 2008
New Revision: 721067

URL: http://svn.apache.org/viewvc?rev=721067&view=rev
Log:
Wait activity (durations only for now). Web server cleanup.

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/embed/ServerLifecycle.java
    ode/sandbox/simpel/src/main/java/org/apache/ode/rest/EngineWebResource.java
    ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/E4XExprRuntime.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/SimPELRuntimeTest.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=721067&r1=721066&r2=721067&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 26 18:02:24 2008
@@ -248,7 +248,16 @@
 	
 throw_ex:	^(THROW ns_id);
 
-wait_ex	:	^(WAIT expr);
+wait_ex
+scope ExprContext;
+    :	^(WAIT {
+            $ExprContext::expr = new SimPELExpr(builder.getProcess());
+        }
+        e=(expr)) {
+            $ExprContext::expr.setExpr(deepText($e));
+		    OBuilder.StructuredActivity<OWait> wait =
+                builder.build(OWait.class, $BPELScope::oscope, $Parent::activity, $ExprContext::expr);
+        };
 
 exit	:	EXIT;
 

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=721067&r1=721066&r2=721067&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 26 18:02:24 2008
@@ -53,6 +53,7 @@
     }
 
     public void stop() {
+        _resources.clean();
     }
 
     public Collection<QName> deploy(String process) {

Modified: ode/sandbox/simpel/src/main/java/org/apache/ode/embed/ServerLifecycle.java
URL: http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/embed/ServerLifecycle.java?rev=721067&r1=721066&r2=721067&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/embed/ServerLifecycle.java (original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/embed/ServerLifecycle.java Wed Nov 26 18:02:24 2008
@@ -70,6 +70,19 @@
         _server.start();
     }
 
+    public void clean() {
+        EngineWebResource.stopRestfulServer();
+        _server = null;
+        _txMgr = null;
+        _executorService = null;
+        _store = null;
+        _db = null;
+        _ds = null;
+        _scheduler = null;
+        _scheduler = null;
+        _webEngine = null;
+    }
+
     private void initBpelServer() {
         _server = new BpelServerImpl();
         _scheduler = createScheduler();

Modified: ode/sandbox/simpel/src/main/java/org/apache/ode/rest/EngineWebResource.java
URL: http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/rest/EngineWebResource.java?rev=721067&r1=721066&r2=721067&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/rest/EngineWebResource.java (original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/rest/EngineWebResource.java Wed Nov 26 18:02:24 2008
@@ -27,7 +27,7 @@
     private static ServerLifecycle _serverLifecyle;
 
     //    private HashMap<String,QName> _services = new HashMap<String, QName>();
-    private static ConcurrentLinkedQueue<Resource> _engineResources = new ConcurrentLinkedQueue<Resource>();
+    private static ConcurrentLinkedQueue<Resource> _engineResources;
 
     @GET @Produces("application/xhtml+xml")
     public String getXHTML() {
@@ -83,13 +83,14 @@
 
     public static void startRestfulServer(ServerLifecycle serverLifecyle) {
         _serverLifecyle = serverLifecyle;
+        _engineResources = new ConcurrentLinkedQueue<Resource>();
         ServletHolder sh = new ServletHolder(ServletContainer.class);
 
         sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
                 "com.sun.jersey.api.core.PackagesResourceConfig");
         sh.setInitParameter("com.sun.jersey.config.property.packages", "org.apache.ode.rest");
 
-        _server = new Server(3033);
+        _server = new Server(3434);
         Context context = new Context(_server, "/", Context.SESSIONS);
         context.addServlet(sh, "/*");
         try {
@@ -102,6 +103,9 @@
     public static void stopRestfulServer() {
         try {
             _server.stop();
+            _server = null;
+            _serverLifecyle = null;
+            _engineResources = null;
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

Modified: ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/E4XExprRuntime.java
URL: http://svn.apache.org/viewvc/ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/E4XExprRuntime.java?rev=721067&r1=721066&r2=721067&view=diff
==============================================================================
--- ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/E4XExprRuntime.java (original)
+++ ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/E4XExprRuntime.java Wed Nov 26 18:02:24 2008
@@ -120,7 +120,13 @@
     }
 
     public Duration evaluateAsDuration(OExpression oExpression, EvaluationContext evaluationContext) throws FaultException {
-        return null;
+        String literal = this.evaluateAsString(oExpression, evaluationContext);
+        try {
+            return new Duration(literal);
+        } catch (Exception ex) {
+            String errmsg = "Invalid duration: " + literal;
+            throw new FaultException(oExpression.getOwner().constants.qnInvalidExpressionValue,errmsg);
+        }
     }
 
     public Node evaluateNode(OExpression oExpression, EvaluationContext evaluationContext) throws FaultException {

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=721067&r1=721066&r2=721067&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 26 18:02:24 2008
@@ -230,6 +230,13 @@
         return new SimpleActivity<OAssign>(oassign);
     }
 
+    public SimpleActivity buildWait(OWait owait, OScope oscope, SimPELExpr rexpr) {
+        // TODO time based computation to allow wait until
+        owait.forExpression = rexpr;
+        rexpr.expressionLanguage = _exprLang;
+        return new SimpleActivity<OWait>(owait);
+    }
+
     public SimpleActivity buildReply(OReply oreply, OScope oscope, OPickReceive oreceive,
                                      String var, String partnerLink, String operation) {
         oreply.variable = resolveVariable(oscope, var, operation, false);

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=721067&r1=721066&r2=721067&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 26 18:02:24 2008
@@ -31,12 +31,13 @@
         ClientConfig cc = new DefaultClientConfig();
         Client c = Client.create(cc);
 
-        WebResource wr = c.resource("http://localhost:3033");
+        WebResource wr = c.resource("http://localhost:3434");
         String processes = wr.path("/").accept("application/xml").get(String.class);
         System.out.println("=> " + processes);
         assertTrue(processes.indexOf("/hello") > 0);
 
         // Check different representations (html, xml)
         // Links to instance list search, process start url, process start form
+        server.stop();
     }
 }

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=721067&r1=721066&r2=721067&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 26 18:02:24 2008
@@ -32,7 +32,7 @@
         ClientConfig cc = new DefaultClientConfig();
         Client c = Client.create(cc);
 
-        WebResource wr = c.resource("http://localhost:3033/hello");
+        WebResource wr = c.resource("http://localhost:3434/hello");
         ClientResponse resp = wr.path("/").accept("application/xml").type("application/xml")
                 .post(ClientResponse.class, "<simpelWrapper xmlns=\"http://ode.apache.org/simpel/1.0/definition/HelloWorld\">foo</simpelWrapper>");
         String response = resp.getEntity(String.class);
@@ -40,11 +40,28 @@
         assertTrue(response.indexOf("Hello foo") > 0);
         assertTrue(resp.getMetadata().get("Location").get(0).matches("/hello/[0-9]*"));
         System.out.println("loc " + resp.getMetadata().get("Location"));
+        server.stop();
     }
 
     private static final String COUNTER =
             "process Counter {\n" +
-            "   initial = receive(self); \n" +
+            "   counter = receive(self); \n" +
+            "   value = resource(\"/value\"); \n" +
+            "   inc = resource(\"/inc\"); \n" +
+            "   dec = resource(\"/dec\"); \n" +
+            "   scope { \n" +
+            "       while(counter>0) { \n" +
+            "           wait(\"PT1S\"); \n" +
+            "       } \n" +
+            "   } onQuery(self) {\n" +
+            "       links = <counter></counter>; \n" +
+            "       links.increment = inc; \n" +
+            "       links.decrement = dec; \n" +
+            "       links.value = value; \n" +
+            "       reply(); \n" +
+            "   } onQuery(value) {\n" +
+            "       reply(counter) \n" +
+            "   } \n" +
             "}";
 
 

Modified: 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=721067&r1=721066&r2=721067&view=diff
==============================================================================
--- ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java (original)
+++ ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java Wed Nov 26 18:02:24 2008
@@ -16,6 +16,20 @@
  */
 public class SimPELRuntimeTest extends TestCase {
 
+    EmbeddedServer server;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        server = new EmbeddedServer();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        server.stop();
+    }
+
     private static final String HELLO_WORLD =
             "process HelloWorld {\n" +
             "   receive(myPl, helloOp) { |msgIn|\n" +
@@ -25,7 +39,6 @@
             "}";
 
     public void testHelloWorld() throws Exception {
-        EmbeddedServer server = new EmbeddedServer();
         server.start();
         server.deploy(HELLO_WORLD);
 
@@ -48,7 +61,6 @@
             "}";
 
     public void testXmlData() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.start();
         server.deploy(XML_DATA_MANIPULATION);
         Element wrapper = DOMUtils.stringToDOM(
@@ -84,7 +96,6 @@
             "}";
 
     public void testSimpleIf() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.start();
         server.deploy(SIMPLE_IF);
         Element wrapper = DOMUtils.stringToDOM(
@@ -113,7 +124,6 @@
     public void testInvokeOneWay() throws Exception {
         final Boolean[] received = new Boolean[] { false };
 
-        EmbeddedServer server = new EmbeddedServer();
         server.options.setMessageSender(new MessageSender() {
             public Node send(String recipient, String operation, Node message) {
                 if (recipient.equals("partnerPl") && operation.equals("partnerOp")
@@ -148,7 +158,6 @@
             "}";
 
     public void testInvokeTwoWays() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.options.setMessageSender(new MessageSender() {
             public Node send(String recipient, String operation, Node elmt) {
                 if (recipient.equals("calculator") && operation.equals("add")) {
@@ -185,7 +194,6 @@
             "}";
 
     public void testJSState() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.start();
         server.deploy(JS_GLOBAL_STATE);
 
@@ -214,7 +222,6 @@
             "}";
 
     public void testSimpleCorrelation() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.start();
         server.deploy(SIMPLE_CORRELATION);
 
@@ -250,7 +257,6 @@
             "}";
 
     public void testWhile() throws Exception {
-        EmbeddedServer server = new  EmbeddedServer();
         server.start();
         server.deploy(WHILE_LOOP);
 
@@ -263,4 +269,24 @@
         assertTrue(DOMUtils.domToString(result).indexOf("6765") > 0);
     }
 
+    private static final String WAIT =
+            "process WaitProcess {\n" +
+            "   receive(myPl, helloOp) { |msgIn|\n" +
+            "       wait(\"PT1S\");\n" +
+            "       reply(msgIn);\n" +
+            "   }\n" +
+            "}";
+
+    public void testWait() throws Exception {
+        server.start();
+        server.deploy(WAIT);
+
+        Document doc = DOMUtils.newDocument();
+        Element wrapper = doc.createElementNS("http://ode.apache.org/simpel/1.0/definition/WaitProcess", "helloOpRequest");
+        wrapper.setTextContent("Hello");
+
+        Element result = server.sendMessage("myPl", "helloOp", wrapper);
+        assertTrue(DOMUtils.domToString(result).indexOf("Hello") > 0);
+    }
+
 }