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/09/06 01:06:44 UTC
svn commit: r692573 - in /ode/sandbox/simpel: ./
src/main/antlr/org/apache/ode/simpel/antlr/
src/main/java/org/apache/ode/simpel/expr/
src/main/java/org/apache/ode/simpel/omodel/
src/test/java/org/apache/ode/simpel/
Author: mriou
Date: Fri Sep 5 16:06:44 2008
New Revision: 692573
URL: http://svn.apache.org/viewvc?rev=692573&view=rev
Log:
ifff
Removed:
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/expr/SimPELExprRuntime.java
Modified:
ode/sandbox/simpel/Rakefile
ode/sandbox/simpel/src/main/antlr/org/apache/ode/simpel/antlr/SimPELWalker.g
ode/sandbox/simpel/src/main/java/org/apache/ode/simpel/omodel/OBuilder.java
ode/sandbox/simpel/src/test/java/org/apache/ode/simpel/SimPELRuntimeTest.java
Modified: ode/sandbox/simpel/Rakefile
URL: http://svn.apache.org/viewvc/ode/sandbox/simpel/Rakefile?rev=692573&r1=692572&r2=692573&view=diff
==============================================================================
--- ode/sandbox/simpel/Rakefile (original)
+++ ode/sandbox/simpel/Rakefile Fri Sep 5 16:06:44 2008
@@ -76,6 +76,7 @@
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);"]
+ patch_walker[/SimPELWalker.g(.*) \( expr \)$/, 34, "e = (LinkedListTree)input.LT(1);"]
File.open(walker, 'w') { |f| f << walker_txt }
end
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=692573&r1=692572&r2=692573&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 Fri Sep 5 16:06:44 2008
@@ -127,13 +127,16 @@
join : ^(JOIN ID* expr?);
if_ex
-scope ExprContext;
+scope ExprContext Parent;
: ^(IF {
$ExprContext::expr = new SimPELExpr(builder.getProcess());
}
- e=expr body (^(ELSE body))?) {
- // TODO compile if
- };
+ e=(expr) {
+ $ExprContext::expr.setExpr(deepText($e));
+ OBuilder.StructuredActivity<OSwitch> oswitch = builder.build(OSwitch.class, $BPELScope::oscope, $Parent[-1]::activity, $ExprContext::expr);
+ $Parent::activity = oswitch;
+ } b1=(body)
+ (^(ELSE b2=(body)))?);
while_ex
scope ExprContext;
@@ -195,8 +198,8 @@
receive
scope ReceiveBlock;
: ^(RECEIVE ^(p=ID o=ID correlation?)) {
- OBuilder.StructuredActivity<OPickReceive> rec = builder.build(OPickReceive.class, $BPELScope::oscope,
- $Parent::activity, text($p), text($o));
+ OBuilder.StructuredActivity<OPickReceive> rec = builder.build(OPickReceive.class, $BPELScope::oscope,
+ $Parent::activity, text($p), text($o));
$ReceiveBlock::receive = rec.getOActivity();
}
(prb=(param_block))?;
@@ -208,7 +211,7 @@
}
lv=(path_expr) rv=(rvalue)) {
$ExprContext::expr.setExpr(deepText($rv));
- OBuilder.StructuredActivity<OAssign> assign =
+ 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.
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=692573&r1=692572&r2=692573&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 Fri Sep 5 16:06:44 2008
@@ -25,6 +25,7 @@
private static final String SIMPEL_NS = "http://ode.apache.org/simpel/1.0/definition";
private OExpressionLanguage _exprLang;
+ private OExpressionLanguage _konstExprLang;
private String _processNS;
private HashMap<String,String> namespaces = new HashMap<String,String>();
private HashMap<String,OPartnerLink> partnerLinks = new HashMap<String,OPartnerLink>();
@@ -33,7 +34,7 @@
public OBuilder() {
HashMap<String, String> exprRuntime = new HashMap<String, String>();
- exprRuntime.put("runtime-class", "org.apache.ode.simpel.expr.SimPELExprRuntime");
+ exprRuntime.put("runtime-class", "org.apache.ode.simpel.expr.E4XExprRuntime");
_exprLang = new OExpressionLanguage(_oprocess, exprRuntime);
_exprLang.expressionLanguageUri = SIMPEL_NS + "/exprLang";
}
@@ -89,6 +90,12 @@
_oprocess.expressionLanguages.add(_exprLang);
_processNS = SIMPEL_NS + "/" + name;
+ _konstExprLang = new OExpressionLanguage(_oprocess, null);
+ _konstExprLang.expressionLanguageUri = "uri:www.fivesight.com/konstExpression";
+ _konstExprLang.properties.put("runtime-class",
+ "org.apache.ode.bpel.runtime.explang.konst.KonstExpressionLanguageRuntimeImpl");
+ _oprocess.expressionLanguages.add(_konstExprLang);
+
final OScope processScope = new OScope(_oprocess, null);
processScope.name = "__PROCESS_SCOPE:" + name;
_oprocess.procesScope = processScope;
@@ -103,6 +110,25 @@
};
}
+ public StructuredActivity<OSwitch> buildSwitch(final OSwitch oswitch, OScope parentScope, SimPELExpr condExpr) {
+ final OSwitch.OCase success = new OSwitch.OCase(_oprocess);
+ success.expression = condExpr;
+ success.expression.expressionLanguage = _exprLang;
+ oswitch.addCase(success);
+
+ return new StructuredActivity<OSwitch>(oswitch) {
+ public void run(OActivity child) {
+ if (success.activity == null) success.activity = child;
+ else {
+ OSwitch.OCase opposite = new OSwitch.OCase(_oprocess);
+ opposite.expression = booleanExpr(true);
+ opposite.activity = child;
+ oswitch.addCase(opposite);
+ }
+ }
+ };
+ }
+
public SimpleActivity buildPickReceive(OPickReceive receive, OScope oscope, String partnerLink, String operation) {
OPickReceive.OnMessage onMessage = new OPickReceive.OnMessage(_oprocess);
onMessage.partnerLink = buildPartnerLink(oscope, partnerLink, operation, true);
@@ -132,7 +158,6 @@
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);
String lvar = lexpr.split("\\.")[0];
vref.variable = resolveVariable(oscope, lvar);
@@ -251,6 +276,13 @@
return resolved;
}
+ private OExpression booleanExpr(boolean value) {
+ OConstantExpression ce = new OConstantExpression(_oprocess, value ? Boolean.TRUE : Boolean.FALSE);
+ ce.expressionLanguage = _konstExprLang;
+ return ce;
+ }
+
+
protected String getBpwsNamespace() {
return "http://ode.apache.org/simpel/1.0";
}
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=692573&r1=692572&r2=692573&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 Fri Sep 5 16:06:44 2008
@@ -29,7 +29,19 @@
" friendInfo.phone = msgIn.person.phone;\n" +
" reply(friendInfo);\n" +
" }\n" +
- "}";
+ "}";
+
+ private static final String SIMPLE_IF =
+ "process SimpleIf {\n" +
+ " receive(ifPl, ifOp) { |quantity|\n" +
+ " if (quantity > 20) {\n" +
+ " status = 0; \n" +
+ " } else { \n" +
+ " status = 1; \n" +
+ " }\n" +
+ " reply(status);\n" +
+ " }\n" +
+ "}";
public void testHelloWorldComplete() throws Exception {
EmbeddedServer server = new EmbeddedServer();
@@ -65,4 +77,22 @@
assertEquals("(999)999-9999", DOMUtils.findChildByName(result, new QName(null, "phone")).getTextContent());
assertEquals("John Doe", DOMUtils.findChildByName(result, new QName(null, "name")).getTextContent());
}
+
+ public void testSimpleIf() throws Exception {
+ EmbeddedServer server = new EmbeddedServer();
+ server.start();
+ server.deploy(SIMPLE_IF);
+ Element wrapper = DOMUtils.stringToDOM(
+ "<xd:ifOpRequest xmlns:xd=\"http://ode.apache.org/simpel/1.0/definition/SimpleIf\">30</xd:ifOpRequest>");
+ Element result = server.sendMessage("ifPl", "ifOp", wrapper);
+ assertNotNull(result);
+ assertEquals(0.0f, Float.parseFloat(result.getTextContent()));
+ System.out.println(DOMUtils.domToString(result));
+
+ wrapper = DOMUtils.stringToDOM(
+ "<xd:ifOpRequest xmlns:xd=\"http://ode.apache.org/simpel/1.0/definition/SimpleIf\">10</xd:ifOpRequest>");
+ result = server.sendMessage("ifPl", "ifOp", wrapper);
+ assertNotNull(result);
+ assertEquals(1.0f, Float.parseFloat(result.getTextContent()));
+ }
}