You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by as...@apache.org on 2006/11/23 01:58:51 UTC
svn commit: r478415 - in /incubator/ode/trunk:
bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/
bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/
bpel-obj/src/main/java/org/apache/ode/bpel/o/
Author: assaf
Date: Wed Nov 22 16:58:50 2006
New Revision: 478415
URL: http://svn.apache.org/viewvc?view=rev&rev=478415
Log:
Added atomic attribute to scopes
Modified:
incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/CommonCompilationMessages.java
incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/OScope.java
Modified: incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java?view=diff&rev=478415&r1=478414&r2=478415
==============================================================================
--- incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java (original)
+++ incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java Wed Nov 22 16:58:50 2006
@@ -128,6 +128,7 @@
new HashMap<Class,ActivityGenerator>();
private boolean _supressJoinFailure = false;
+ private boolean _atomicScope = false;
/** Syntactic scope stack. */
private StructureStack _structureStack = new StructureStack();
@@ -967,83 +968,95 @@
oscope.debugInfo = createDebugInfo(src, src.toString());
- compile(oscope, src, new Runnable() {
- public void run() {
- for (Variable var : src.getVariables()) {
- try {
- compile(var);
- } catch (CompilationException ce) {
- recoveredFromError(var, ce);
+ boolean previousAtomicScope = _atomicScope;
+ if (src.getAtomicScope() != null) {
+ boolean newValue = src.getAtomicScope().booleanValue();
+ if (_atomicScope)
+ throw new CompilationException(__cmsgs.errAtomicScopeNesting(newValue));
+ else
+ oscope.atomicScope = _atomicScope = newValue;
+ }
+ try {
+ compile(oscope, src, new Runnable() {
+ public void run() {
+ for (Variable var : src.getVariables()) {
+ try {
+ compile(var);
+ } catch (CompilationException ce) {
+ recoveredFromError(var, ce);
+ }
}
- }
- for (CorrelationSet cset : src.getCorrelationSetDecls()) {
- try {
- compile(cset);
- } catch (CompilationException ce) {
- recoveredFromError(cset, ce);
+ for (CorrelationSet cset : src.getCorrelationSetDecls()) {
+ try {
+ compile(cset);
+ } catch (CompilationException ce) {
+ recoveredFromError(cset, ce);
+ }
}
- }
- for (PartnerLink plink : src.getPartnerLinks()) {
- try {
- compile(plink);
- } catch (CompilationException ce) {
- recoveredFromError(plink, ce);
+ for (PartnerLink plink : src.getPartnerLinks()) {
+ try {
+ compile(plink);
+ } catch (CompilationException ce) {
+ recoveredFromError(plink, ce);
+ }
}
- }
- if (!src.getEvents().isEmpty() || !src.getAlarms().isEmpty()) {
- oscope.eventHandler = new OEventHandler(_oprocess);
- oscope.eventHandler.debugInfo = createDebugInfo(src,"Event Handler for " + src);
- }
+ if (!src.getEvents().isEmpty() || !src.getAlarms().isEmpty()) {
+ oscope.eventHandler = new OEventHandler(_oprocess);
+ oscope.eventHandler.debugInfo = createDebugInfo(src,"Event Handler for " + src);
+ }
- for (OnEvent onEvent : src.getEvents()) {
- try {
- compile(onEvent);
- } catch (CompilationException ce) {
- recoveredFromError(src, ce);
+ for (OnEvent onEvent : src.getEvents()) {
+ try {
+ compile(onEvent);
+ } catch (CompilationException ce) {
+ recoveredFromError(src, ce);
+ }
}
- }
- for (OnAlarm onAlarm : src.getAlarms()) {
- try {
- compile(onAlarm);
- } catch (CompilationException ce) {
- recoveredFromError(src, ce);
+ for (OnAlarm onAlarm : src.getAlarms()) {
+ try {
+ compile(onAlarm);
+ } catch (CompilationException ce) {
+ recoveredFromError(src, ce);
+ }
+
}
- }
+ if (init != null)
+ try {
+ init.run();
+ } catch (CompilationException ce) {
+ recoveredFromError(src,ce);
+ }
+
- if (init != null)
try {
- init.run();
- } catch (CompilationException ce) {
- recoveredFromError(src,ce);
+ compile(src.getCompensationHandler());
+ } catch (CompilationException bce) {
+ recoveredFromError(src.getCompensationHandler(), bce);
}
+ try {
+ compile(src.getTerminationHandler());
+ } catch (CompilationException bce) {
+ recoveredFromError(src.getTerminationHandler(), bce);
+ }
- try {
- compile(src.getCompensationHandler());
- } catch (CompilationException bce) {
- recoveredFromError(src.getCompensationHandler(), bce);
- }
-
- try {
- compile(src.getTerminationHandler());
- } catch (CompilationException bce) {
- recoveredFromError(src.getTerminationHandler(), bce);
- }
-
- try {
- compile(src.getFaultHandler());
- } catch (CompilationException bce) {
- recoveredFromError(src.getFaultHandler(), bce);
+ try {
+ compile(src.getFaultHandler());
+ } catch (CompilationException bce) {
+ recoveredFromError(src.getFaultHandler(), bce);
+ }
}
- }
- });
+ });
+ } finally {
+ _atomicScope = previousAtomicScope;
+ }
return oscope;
}
Modified: incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/CommonCompilationMessages.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/CommonCompilationMessages.java?view=diff&rev=478415&r1=478414&r2=478415
==============================================================================
--- incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/CommonCompilationMessages.java (original)
+++ incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/CommonCompilationMessages.java Wed Nov 22 16:58:50 2006
@@ -418,4 +418,11 @@
public CompilationMessage errInvalidRetryDelayValue(String message) {
return this.formatCompilationMessage("The retryDelay attribute must be a positive integer, found {0}", message);
}
+
+ public CompilationMessage errAtomicScopeNesting(boolean atomic) {
+ if (atomic)
+ return this.formatCompilationMessage("Cannot nest atomic scopes inside each other.");
+ else
+ return this.formatCompilationMessage("A scope enclosed inside an atomic scope cannot declare itself as not atomic");
+ }
}
Modified: incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java?view=diff&rev=478415&r1=478414&r2=478415
==============================================================================
--- incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java (original)
+++ incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java Wed Nov 22 16:58:50 2006
@@ -151,6 +151,16 @@
return false;
}
+
+ public Boolean getAtomicScope() {
+ String value = getAttribute("atomic", null);
+ if ("yes".equals(value))
+ return Boolean.TRUE;
+ if ("no".equals(value))
+ return Boolean.FALSE;
+ return null;
+ }
+
/**
* Get a partnerLink declared in this scope.
*
Modified: incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/OScope.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/OScope.java?view=diff&rev=478415&r1=478414&r2=478415
==============================================================================
--- incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/OScope.java (original)
+++ incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/OScope.java Wed Nov 22 16:58:50 2006
@@ -60,6 +60,8 @@
public boolean implicitScope;
+ public boolean atomicScope;
+
public OScope(OProcess owner, OActivity parent) {
super(owner, parent);
}
@@ -124,6 +126,16 @@
public void addCorrelationSet(CorrelationSet ocset) {
correlationSets.put(ocset.name, ocset);
+ }
+
+ public boolean isInAtomicScope() {
+ OActivity current = this;
+ while (current != null) {
+ if (current instanceof OScope && ((OScope)current).atomicScope)
+ return true;
+ current = current.getParent();
+ }
+ return false;
}
public String toString() {