[jbpm-commits] JBoss JBPM SVN: r5682 - in jbpm4/trunk/modules: bpmn/src/main/java/org/jbpm/bpmn/parser and 12 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sun Oct 4 11:43:29 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-10-04 11:43:28 -0400 (Sun, 04 Oct 2009)
New Revision: 5682

Modified:
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/AbstractTaskBinding.java
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/ServiceTaskBinding.java
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/StartBinding.java
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/TaskBinding.java
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java
   jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/parser/BpmnParser.java
   jbpm4/trunk/modules/db/src/main/java/org/jbpm/db/DbUpgrade.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/JpdlSchemaTest.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/ProcessEngineImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JbpmConfigurationParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/EnvironmentInterceptorBinding.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ProcessEngineRefBinding.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/DescriptionTest.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java
Log:
added language version id

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/AbstractTaskBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/AbstractTaskBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/AbstractTaskBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -53,7 +53,7 @@
 
     String resourceRef = XmlUtil.attribute(performer, "resourceRef", true, parse);
     
-    BpmnProcessDefinition bpmnProcessDefinition = parse.findObject(BpmnProcessDefinition.class);
+    BpmnProcessDefinition bpmnProcessDefinition = parse.contextStackFind(BpmnProcessDefinition.class);
     
     ActivityResource activityResource = new ActivityResource();
     activityResource.setResourceRef(bpmnProcessDefinition.getResource(resourceRef));

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/ServiceTaskBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/ServiceTaskBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/ServiceTaskBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -46,7 +46,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     JavaServiceTaskActivity javaActivity = new JavaServiceTaskActivity();
        
-    BpmnProcessDefinition bpmnProcessDefinition = parse.findObject(BpmnProcessDefinition.class);
+    BpmnProcessDefinition bpmnProcessDefinition = parse.contextStackFind(BpmnProcessDefinition.class);
     Document dom = element.getOwnerDocument();
         
     String operationRef = XmlUtil.attribute(element, "operationRef", true, parse, null);

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/StartBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/StartBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/StartBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -36,8 +36,8 @@
   }
 
   public Object parse(Element element, Parse parse, Parser parser) {
-    ActivityImpl startActivity = parse.findObject(ActivityImpl.class);
-    BpmnProcessDefinition processDefinition = parse.findObject(BpmnProcessDefinition.class);
+    ActivityImpl startActivity = parse.contextStackFind(ActivityImpl.class);
+    BpmnProcessDefinition processDefinition = parse.contextStackFind(BpmnProcessDefinition.class);
     
     if (processDefinition.getInitial()==null) {
       processDefinition.setInitial(startActivity);

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/TaskBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/TaskBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/TaskBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -40,7 +40,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     
     TaskActivity taskActivity = new TaskActivity();
-    ScopeElementImpl scopeElement = parse.findObject(ScopeElementImpl.class);
+    ScopeElementImpl scopeElement = parse.contextStackFind(ScopeElementImpl.class);
     TaskDefinitionImpl taskDefinition = BpmnParser.parseTaskDefinition(element, parse, scopeElement);
     taskActivity.setTaskDefinition(taskDefinition);
 

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/flownodes/UserTaskBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -47,10 +47,10 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     UserTaskActivity taskActivity = new UserTaskActivity();
 
-    ScopeElementImpl scopeElement = parse.findObject(ScopeElementImpl.class);
+    ScopeElementImpl scopeElement = parse.contextStackFind(ScopeElementImpl.class);
     TaskDefinitionImpl taskDefinition = BpmnParser.parseTaskDefinition(element, parse, scopeElement);
 
-    BpmnProcessDefinition bpmnProcessDefinition = parse.findObject(BpmnProcessDefinition.class);
+    BpmnProcessDefinition bpmnProcessDefinition = parse.contextStackFind(BpmnProcessDefinition.class);
     
     //bpmnProcessDefinition.getResource(ref)
     addActivityResources(taskDefinition, taskActivity, element, parse);

Modified: jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/parser/BpmnParser.java
===================================================================
--- jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/parser/BpmnParser.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/bpmn/src/main/java/org/jbpm/bpmn/parser/BpmnParser.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -98,7 +98,7 @@
   public ProcessDefinitionImpl parseProcess(Element processElement, Parse parse) {
     BpmnProcessDefinition processDefinition = new BpmnProcessDefinition();
 
-    parse.pushObject(processDefinition);
+    parse.contextStackPush(processDefinition);
     try {
 
       // process attribues
@@ -136,7 +136,7 @@
       parseTransitions(processElement, parse, processDefinition);
 
     } finally {
-      parse.popObject();
+      parse.contextStackPop();
     }
 
     return processDefinition;
@@ -202,7 +202,7 @@
       }
 
       ActivityImpl activity = compositeElement.createActivity();
-      parse.pushObject(activity);
+      parse.contextStackPush(activity);
       try {
         activity.setType(activityBinding.getTagName());
         activity.setName(id);
@@ -211,7 +211,7 @@
         ActivityBehaviour activityBehaviour = (ActivityBehaviour) activityBinding.parse(nestedElement, parse, this);
         activity.setBehaviour(activityBehaviour);
       } finally {
-        parse.popObject();
+        parse.contextStackPop();
       }
     }
   }
@@ -330,7 +330,7 @@
     // String form = XmlUtil.attribute(element, "form");
     // taskDefinition.setForm(form);
 
-    BpmnProcessDefinition processDefinition = parse.findObject(BpmnProcessDefinition.class);
+    BpmnProcessDefinition processDefinition = parse.contextStackFind(BpmnProcessDefinition.class);
     if (processDefinition.getTaskDefinition(taskName) != null) {
       parse.addProblem("duplicate task name " + taskName, element);
     } else {

Modified: jbpm4/trunk/modules/db/src/main/java/org/jbpm/db/DbUpgrade.java
===================================================================
--- jbpm4/trunk/modules/db/src/main/java/org/jbpm/db/DbUpgrade.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/db/src/main/java/org/jbpm/db/DbUpgrade.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -21,7 +21,9 @@
  */
 package org.jbpm.db;
 
+import org.jbpm.api.JbpmException;
 
+
 /**
  * @author Tom Baeyens
  */
@@ -35,6 +37,8 @@
       }
     }
     
+    throw new JbpmException("TODO initialize langid deployproperties for existing processes");
+    
 //    String dbVersion = getDbVersion();
 //    String distroVersion = "4.2";
 //    

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -74,7 +74,7 @@
     
     boolean hasConditions = false;
     List<Element> transitionElements = XmlUtil.elements(element, "transition");
-    ActivityImpl activity = parse.findObject(ActivityImpl.class);
+    ActivityImpl activity = parse.contextStackFind(ActivityImpl.class);
     List<TransitionImpl> transitions = (List) activity.getOutgoingTransitions();
     
     for (int i=0; i<transitionElements.size(); i++) {

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -40,7 +40,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     GroupActivity groupActivity = new GroupActivity();
     
-    ActivityImpl activity = parse.findObject(ActivityImpl.class);
+    ActivityImpl activity = parse.contextStackFind(ActivityImpl.class);
 
     JpdlParser jpdlParser = (JpdlParser) parser;
     jpdlParser.parseActivities(element, parse, activity);

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JpdlBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -45,7 +45,7 @@
   protected static final WireParser wireParser = JpdlParser.wireParser;
 
   public JpdlBinding(String tagName) {
-    super(tagName, JpdlParser.JPDL_NAMESPACE, null);
+    super(tagName, null, null);
   }
 
   public void parseName(Element element, ActivityImpl activity, Parse parse) {
@@ -68,7 +68,7 @@
 
   public void parseTransitions(Element element, ActivityImpl activity, Parse parse, JpdlParser jpdlParser) {
     List<Element> transitionElements = XmlUtil.elements(element, "transition");
-    UnresolvedTransitions unresolvedTransitions = parse.findObject(UnresolvedTransitions.class);
+    UnresolvedTransitions unresolvedTransitions = parse.contextStackFind(UnresolvedTransitions.class);
     for (Element transitionElement: transitionElements) {
       String transitionName = XmlUtil.attribute(transitionElement, "name", false, parse);
 

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StartBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -39,8 +39,8 @@
   }
 
   public Object parse(Element element, Parse parse, Parser parser) {
-    ActivityImpl startActivity = parse.findObject(ActivityImpl.class);
-    JpdlProcessDefinition processDefinition = parse.findObject(JpdlProcessDefinition.class);
+    ActivityImpl startActivity = parse.contextStackFind(ActivityImpl.class);
+    JpdlProcessDefinition processDefinition = parse.contextStackFind(JpdlProcessDefinition.class);
     
     if (processDefinition.getInitial()==null) {
       processDefinition.setInitial(startActivity);

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -42,7 +42,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     TaskActivity taskActivity = new TaskActivity();
 
-    ScopeElementImpl scopeElement = parse.findObject(ScopeElementImpl.class);
+    ScopeElementImpl scopeElement = parse.contextStackFind(ScopeElementImpl.class);
     TaskDefinitionImpl taskDefinition = JpdlParser.parseTaskDefinition(element, parse, scopeElement);
     taskActivity.setTaskDefinition(taskDefinition);
     

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -59,6 +59,7 @@
 import org.jbpm.pvm.internal.model.VariableDefinitionImpl;
 import org.jbpm.pvm.internal.model.VariableOutDefinitionImpl;
 import org.jbpm.pvm.internal.model.VariableOutDefinitionSet;
+import org.jbpm.pvm.internal.repository.DeploymentImpl;
 import org.jbpm.pvm.internal.task.AssignableDefinitionImpl;
 import org.jbpm.pvm.internal.task.SwimlaneDefinitionImpl;
 import org.jbpm.pvm.internal.task.TaskDefinitionImpl;
@@ -83,8 +84,13 @@
   
   private static final Log log = Log.getLog(JpdlParser.class.getName());
 
-  public static final String JPDL_NAMESPACE = "http://jbpm.org/4.0/jpdl";
+  public static final String NAMESPACE_JPDL_40 = "http://jbpm.org/4.0/jpdl";
+  public static final String NAMESPACE_JPDL_42 = "http://jbpm.org/4.2/jpdl";
 
+  public static final String CURRENT_VERSION_JBPM = "4.2";
+  public static final String CURRENT_VERSION_NAMESPACE = "http://jbpm.org/"+CURRENT_VERSION_JBPM+"/jpdl";
+  public static final String CURRENT_VERSION_PROCESS_LANGUAGE_ID = "jpdl-"+CURRENT_VERSION_JBPM;
+
   public static final WireParser wireParser = WireParser.getInstance();
 
   // array elements are mutable, even when final
@@ -180,12 +186,40 @@
     
     processDefinitions.add(processDefinition);
     
-    parse.pushObject(processDefinition);
+    parse.contextStackPush(processDefinition);
     try {
       // process attribues
       String name = XmlUtil.attribute(documentElement, "name", true, parse);
       processDefinition.setName(name);
-      
+
+      // make the process language version available for bindings
+      // to allow for specific parsing behaviour per version
+      DeploymentImpl deployment = (DeploymentImpl) parse.contextMapGet(Parse.CONTEXT_KEY_DEPLOYMENT);
+      if (deployment!=null) {
+        String processLanguageId = deployment.getProcessLanguageId(name);
+        if (processLanguageId==null) {
+          String namespaceUri = documentElement.getNamespaceURI();
+          if (namespaceUri!=null) {
+            processLanguageId = "jpdl-"+namespaceUri.substring(16, 19);
+          } else {
+            // specify the jpdltestversion with "mvn -Djpdltestversion=jpdl-4.3 clean install"
+            // that way, the whole test suite will be use the specified parser
+            String jpdlTest = System.getProperty("jpdltestversion");
+            if (jpdlTest!=null) {
+              processLanguageId = jpdlTest;
+              throw new RuntimeException("USING TEST LANGUAGE VERSION "+processLanguageId);
+            } else {
+              processLanguageId = CURRENT_VERSION_PROCESS_LANGUAGE_ID;
+            }
+          }
+          // saving the process language will make sure that  
+          // the right parser version is used after an upgrade of jbpm
+          // as the old format xml will still be in the db
+          deployment.setProcessLanguageId(name, processLanguageId);
+        }
+        parse.contextMapPut(Parse.CONTEXT_KEY_PROCESS_LANGUAGE_ID, processLanguageId);
+      }
+
       String packageName = XmlUtil.attribute(documentElement, "package");
       processDefinition.setPackageName(packageName);
 
@@ -206,7 +240,7 @@
       }
       
       UnresolvedTransitions unresolvedTransitions = new UnresolvedTransitions();
-      parse.pushObject(unresolvedTransitions);
+      parse.contextStackPush(unresolvedTransitions);
       
       // swimlanes
       List<Element> swimlaneElements = XmlUtil.elements(documentElement, "swimlane");
@@ -229,7 +263,7 @@
       resolveTransitionDestinations(parse, processDefinition, unresolvedTransitions);
 
     } finally {
-      parse.popObject();
+      parse.contextStackPop();
     }
 
     if (processDefinition.getInitial()==null) {
@@ -264,7 +298,7 @@
       }
 
       ActivityImpl activity = compositeElement.createActivity();
-      parse.pushObject(activity);
+      parse.contextStackPush(activity);
       try {
         activity.setType(activityBinding.getTagName());
         activityBinding.parseName(nestedElement, activity, parse);
@@ -318,7 +352,7 @@
           parse.addProblem("invalid coordinates g=\"" + g + "\" in " + activity, nestedElement);
         }
       } finally {
-        parse.popObject();
+        parse.contextStackPop();
       }
     }
   }
@@ -438,7 +472,7 @@
 
   public void parseTransitions(Element element, ActivityImpl activity, Parse parse) {
     List<Element> transitionElements = XmlUtil.elements(element, "transition");
-    UnresolvedTransitions unresolvedTransitions = parse.findObject(UnresolvedTransitions.class);
+    UnresolvedTransitions unresolvedTransitions = parse.contextStackFind(UnresolvedTransitions.class);
     for (Element transitionElement: transitionElements) {
       String transitionName = XmlUtil.attribute(transitionElement, "name", false, parse);
 
@@ -499,7 +533,7 @@
     String form = XmlUtil.attribute(element, "form");
     taskDefinition.setFormResourceName(form);
     
-    ProcessDefinitionImpl processDefinition = parse.findObject(ProcessDefinitionImpl.class);
+    ProcessDefinitionImpl processDefinition = parse.contextStackFind(ProcessDefinitionImpl.class);
     if (processDefinition.getTaskDefinition(taskName)!=null) {
       parse.addProblem("duplicate task name "+taskName, element);
     } else {
@@ -508,7 +542,7 @@
 
     String swimlaneName = XmlUtil.attribute(element, "swimlane");
     if (swimlaneName!=null) {
-      JpdlProcessDefinition jpdlProcessDefinition = parse.findObject(JpdlProcessDefinition.class);
+      JpdlProcessDefinition jpdlProcessDefinition = parse.contextStackFind(JpdlProcessDefinition.class);
       SwimlaneDefinitionImpl swimlaneDefinition = jpdlProcessDefinition.getSwimlaneDefinition(swimlaneName);
       if (swimlaneDefinition!=null) {
         taskDefinition.setSwimlaneDefinition(swimlaneDefinition);

Modified: jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/JpdlSchemaTest.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/JpdlSchemaTest.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/jpdl/src/test/java/org/jbpm/jpdl/parsing/JpdlSchemaTest.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -32,10 +32,10 @@
  */
 public class JpdlSchemaTest extends JpdlParseTestCase {
 
-  public void testSimplestValidProcess() {
+  public void testSimplestValidProcessWithPrefix() {
     List<Problem> problems = jpdlParser.createParse()
       .setString(
-          "<jpdl:process xmlns:jpdl='"+JpdlParser.JPDL_NAMESPACE+"' " +
+          "<jpdl:process xmlns:jpdl='"+JpdlParser.CURRENT_VERSION_NAMESPACE+"' " +
           "              name='p' >" +
           "  <jpdl:start name='n' />" +
           "</jpdl:process>"

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/ProcessEngineImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/ProcessEngineImpl.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/ProcessEngineImpl.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -179,7 +179,7 @@
     isConfigured = true;
     JbpmConfigurationParser.getInstance()
       .createParse()
-      .pushObject(this)
+      .contextStackPush(this)
       .setStreamSource(streamSource)
       .execute()
       .checkErrors("jbpm configuration " + streamSource);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JbpmConfigurationParser.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JbpmConfigurationParser.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JbpmConfigurationParser.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -57,7 +57,7 @@
     Element documentElement = document.getDocumentElement();
     
     // if the default environment factory was already set in the parse
-    ProcessEngineImpl processEngineImpl = (ProcessEngineImpl) parse.findObject(ProcessEngineImpl.class);
+    ProcessEngineImpl processEngineImpl = (ProcessEngineImpl) parse.contextStackFind(ProcessEngineImpl.class);
     if (processEngineImpl==null) {
       processEngineImpl = new ProcessEngineImpl();
     }
@@ -67,7 +67,7 @@
         String resource = importElement.getAttribute("resource");
         Parse importParse = createParse()
           .setResource(resource)
-          .pushObject(processEngineImpl)
+          .contextStackPush(processEngineImpl)
           .execute();
         
         parse.addProblems(importParse.getProblems());
@@ -77,22 +77,22 @@
     Element processEngineElement = XmlUtil.element(documentElement, "process-engine-context");
     if (processEngineElement != null) {
       WireDefinition processEngineContextDefinition = processEngineImpl.getProcessEngineWireContext().getWireDefinition();
-      parse.pushObject(processEngineContextDefinition);
+      parse.contextStackPush(processEngineContextDefinition);
       try {
         processEngineContextParser.parseDocumentElement(processEngineElement, parse);
       } finally {
-        parse.popObject();
+        parse.contextStackPop();
       }
     }
 
     Element txCtxElement = XmlUtil.element(documentElement, "transaction-context");
     if (txCtxElement != null) {
       WireDefinition transactionContextDefinition = processEngineImpl.getTransactionWireDefinition();
-      parse.pushObject(transactionContextDefinition);
+      parse.contextStackPush(transactionContextDefinition);
       try {
         transactionContextParser.parseDocumentElement(txCtxElement, parse);
       } finally {
-        parse.popObject();
+        parse.contextStackPop();
       }
     }
 

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -60,6 +60,7 @@
   
   private static final long serialVersionUID = 1L;
 
+  public static final String KEY_PROCESS_LANGUAGE_ID = "langid";
   public static final String KEY_PROCESS_DEFINITION_ID = "pdid";
   public static final String KEY_PROCESS_DEFINITION_KEY = "pdkey";
   public static final String KEY_PROCESS_DEFINITION_VERSION = "pdversion";
@@ -197,7 +198,16 @@
   public Long getProcessDefinitionVersion(String processDefinitionName) {
     return (Long) getObjectProperty(processDefinitionName, KEY_PROCESS_DEFINITION_VERSION);
   }
+  
+  public String getProcessLanguageId(String processDefinitionName) {
+    return (String) getObjectProperty(processDefinitionName, KEY_PROCESS_LANGUAGE_ID);
+  }
 
+  public void setProcessLanguageId(String processDefinitionName, String processLanguageId) {
+    setObjectProperty(processDefinitionName, KEY_PROCESS_LANGUAGE_ID, processLanguageId);
+  }
+
+
   public void setObjectProperty(String objectName, String key, Object value) {
     if (objectProperties==null) {
       objectProperties = new HashSet<DeploymentProperty>();
@@ -236,7 +246,9 @@
   public boolean hasObjectProperties(String objectName) {
     if (objectProperties!=null) {
       for (DeploymentProperty deploymentProperty: objectProperties) {
-        if (deploymentProperty.getObjectName().equals(objectName)) {
+        if ( deploymentProperty.getObjectName().equals(objectName)
+             && KEY_PROCESS_DEFINITION_ID.equals(deploymentProperty.getKey())
+           ) {
           return true;
         }
       }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -58,6 +58,7 @@
         byte[] bytes = deployment.getBytes(resourceName);
         InputStream inputStream = new ByteArrayInputStream(bytes);
         Parse parse = parser.createParse();
+        parse.contextMapPut(Parse.CONTEXT_KEY_DEPLOYMENT, deployment);
         parse.setProblems(deployment.getProblems());
         parse.setInputStream(inputStream);
         parse.execute();

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/EnvironmentInterceptorBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/EnvironmentInterceptorBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/EnvironmentInterceptorBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -41,7 +41,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     EnvironmentInterceptorDescriptor environmentInterceptorDescriptor = new EnvironmentInterceptorDescriptor();
 
-    EnvironmentFactory environmentFactory = (EnvironmentFactory) parse.findObject(ProcessEngineImpl.class);
+    EnvironmentFactory environmentFactory = (EnvironmentFactory) parse.contextStackFind(ProcessEngineImpl.class);
     environmentInterceptorDescriptor.setEnvironmentFactory(environmentFactory);
     
     if ( element.hasAttribute("policy")

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -51,7 +51,7 @@
     ProvidedObjectDescriptor templateRegistryDescriptor;
     MailTemplateRegistry templateRegistry;
 
-    WireDefinition wireDefinition = parse.findObject(WireDefinition.class);
+    WireDefinition wireDefinition = parse.contextStackFind(WireDefinition.class);
     String templateRegistryDescriptorName = (wireDefinition != null ? wireDefinition.getDescriptorName(MailTemplateRegistry.class) : null);
     
     if (templateRegistryDescriptorName != null) {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ProcessEngineRefBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ProcessEngineRefBinding.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ProcessEngineRefBinding.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -42,7 +42,7 @@
   }
 
   public Object parse(Element element, Parse parse, Parser parser) {
-    ProcessEngine processEngine = (ProcessEngine) parse.findObject(ProcessEngine.class);
+    ProcessEngine processEngine = (ProcessEngine) parse.contextStackFind(ProcessEngine.class);
     return new ProcessEngineDescriptor(processEngine);
   }
 }
\ No newline at end of file

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -56,7 +56,7 @@
       }
       
       if (binding!=null) {
-        Bindings bindings = parse.findObject(Bindings.class);
+        Bindings bindings = parse.contextStackFind(Bindings.class);
         bindings.addBinding(binding);
       }
     }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -189,12 +189,12 @@
     List<Element> elements = XmlUtil.elements(documentElement);
 
     
-    WireDefinition wireDefinition = parse.findObject(WireDefinition.class);
+    WireDefinition wireDefinition = parse.contextStackFind(WireDefinition.class);
     if (wireDefinition==null) {
       wireDefinition = new WireDefinition();
     }
     
-    parse.pushObject(wireDefinition);
+    parse.contextStackPush(wireDefinition);
     try {
       for (Element descriptorElement: elements) {
         Descriptor descriptor = (Descriptor) parseElement(descriptorElement, parse, CATEGORY_DESCRIPTOR);
@@ -207,7 +207,7 @@
         }
       }
     } finally {
-      parse.popObject();
+      parse.contextStackPop();
     }
 
     return wireDefinition;
@@ -283,7 +283,7 @@
           log.trace("loading wire bindings from resource: "+resourceUrl);
           bindingParser.createParse()
             .setUrl(resourceUrl)
-            .pushObject(defaultBindings)
+            .contextStackPush(defaultBindings)
             .execute()
             .checkErrors(resourceUrl.toString());
         }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -25,7 +25,9 @@
 import java.io.File;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.HashMap;
 import java.util.ListIterator;
+import java.util.Map;
 import java.util.Stack;
 
 import javax.xml.parsers.DocumentBuilder;
@@ -49,6 +51,9 @@
 public class Parse extends ProblemList implements ErrorHandler {
 
   private static final long serialVersionUID = 1L;
+
+  public static final String CONTEXT_KEY_DEPLOYMENT = "deployment";
+  public static final String CONTEXT_KEY_PROCESS_LANGUAGE_ID = "proclangid";
   
   protected Parser parser;
   
@@ -59,7 +64,8 @@
   protected DocumentBuilder documentBuilder = null;
   protected Document document = null;
 
-  protected Stack<Object> objectStack;
+  protected Map<String, Object> contextMap;
+  protected Stack<Object> contextStack;
   protected Object documentObject;
   
   protected Parse(Parser parser) {
@@ -184,39 +190,63 @@
     return this;
   }
 
-  // contextual objects ///////////////////////////////////////////////////////
+  // context map //////////////////////////////////////////////////////////////
 
+  public Parse contextMapPut(String key, Object value) {
+    if (contextMap==null) {
+      contextMap = new HashMap<String, Object>();
+    }
+    contextMap.put(key, value);
+    return this;
+  }
+
+  public Object contextMapGet(String key) {
+    if (contextMap!=null) {
+      return contextMap.get(key);
+    }
+    return null;
+  }
+
+  public Parse contextMapRemove(String key) {
+    if (contextMap!=null) {    
+      contextMap.remove(key);
+    }
+    return this;
+  }
+
+  // contex stack /////////////////////////////////////////////////////////////
+
   /** push a contextual object on the stack of this parse. */
-  public Parse pushObject(Object object) {
-    if (objectStack==null) {
-      objectStack = new Stack<Object>();
+  public Parse contextStackPush(Object object) {
+    if (contextStack==null) {
+      contextStack = new Stack<Object>();
     }
-    objectStack.push(object);
+    contextStack.push(object);
     return this;
   }
 
   /** remove a contextual object from the stack. */
-  public Object popObject() {
-    if (objectStack!=null) {
-      return objectStack.pop();
+  public Object contextStackPop() {
+    if (contextStack!=null) {
+      return contextStack.pop();
     }
     return null;
   }
 
   /** look up the top contextual object from the stack. */
-  public Object peekObject() {
-    if (objectStack!=null) {
-      return objectStack.peek();
+  public Object contextStackPeek() {
+    if (contextStack!=null) {
+      return contextStack.peek();
     }
     return null;
   }
   
   /** search a contextual object in the stack by type. */
-  public <T> T findObject(Class<T> clazz) {
-    if ( (objectStack!=null)
-         && (! objectStack.isEmpty())
+  public <T> T contextStackFind(Class<T> clazz) {
+    if ( (contextStack!=null)
+         && (! contextStack.isEmpty())
        ) {
-      ListIterator<Object> listIter = objectStack.listIterator(objectStack.size());
+      ListIterator<Object> listIter = contextStack.listIterator(contextStack.size());
       while (listIter.hasPrevious()) {
         Object object = listIter.previous();
         if (clazz.isInstance(object)) {

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/DescriptionTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/DescriptionTest.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/process/DescriptionTest.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -22,7 +22,6 @@
 package org.jbpm.test.process;
 
 import org.jbpm.api.ProcessDefinition;
-import org.jbpm.jpdl.internal.xml.JpdlParser;
 import org.jbpm.test.JbpmTestCase;
 
 
@@ -33,7 +32,7 @@
 
   public void testProcessDefinitionDescription() {
     deployJpdlXmlString(
-      "<process name='make print' xmlns='"+JpdlParser.JPDL_NAMESPACE+"' >" +
+      "<process name='make print'>" +
       "  <description>This process makes a print</description>" +
       "  <start />" +
       "</process>"

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java	2009-10-04 14:33:48 UTC (rev 5681)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/taskactivity/TaskReassignTest.java	2009-10-04 15:43:28 UTC (rev 5682)
@@ -26,7 +26,6 @@
 import org.jbpm.api.ProcessInstance;
 import org.jbpm.api.history.HistoryTask;
 import org.jbpm.api.task.Task;
-import org.jbpm.jpdl.internal.xml.JpdlParser;
 import org.jbpm.test.JbpmTestCase;
 
 /**
@@ -36,7 +35,7 @@
 
   public void testReassignHistory() {
     deployJpdlXmlString(
-      "<process name='ReassignTest' xmlns='"+JpdlParser.JPDL_NAMESPACE+"'>" +
+      "<process name='ReassignTest'>" +
       "  <start>" +
       "    <transition to='write email'/>" +
       "  </start>" +



More information about the jbpm-commits mailing list