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