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