[jbpm-commits] JBoss JBPM SVN: r2448 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model and 9 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Sep 30 06:39:07 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-09-30 06:39:06 -0400 (Tue, 30 Sep 2008)
New Revision: 2448

Added:
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
Modified:
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java
Log:
Improve engine scoping

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -82,11 +82,10 @@
     this.process = process;
   }
 
-  public Process getProcess()
+  public Process getProcess(ProcessEngine engine)
   {
     if (process == null)
     {
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
       DialectHandlerService dhService = engine.getService(DialectHandlerService.class);
       if (dhService == null)
         throw new IllegalStateException("DialectHandlerService not registered");

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,6 +27,7 @@
 
 import javax.management.ObjectName;
 
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.runtime.Attachments;
 
 /**
@@ -46,6 +47,11 @@
   }
 
   /**
+   * Get the associated ProcessEngine
+   */
+  ProcessEngine getProcessEngine();
+  
+  /**
    * Get the unique name.
    */
   String getName();

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -25,7 +25,7 @@
 
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Message;
-import org.jbpm.api.service.Service;
+import org.jbpm.api.service.AbstractService;
 
 /**
  * The MessageBuilder can be used to build a {@link Message} dynamically.
@@ -33,7 +33,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public abstract class MessageBuilderService implements Service
+public abstract class MessageBuilderService extends AbstractService
 {
   /**
    * Locate the default MessageBuilder

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -25,7 +25,7 @@
 
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
-import org.jbpm.api.service.Service;
+import org.jbpm.api.service.AbstractService;
 
 /**
  * The ProcessBuilder can be used to build a {@link Process} dynamically.
@@ -33,7 +33,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public abstract class ProcessBuilderService implements Service
+public abstract class ProcessBuilderService extends AbstractService
 {
   /**
    * Locate the default ProcessBuilder

Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java	                        (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.service;
+
+// $Id$
+
+import org.jbpm.api.client.ProcessEngine;
+
+/**
+ * An abstract Service that gives access to the ProcessEngine
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 18-Jun-2008
+ */
+public class AbstractService implements Service
+{
+  private ProcessEngine engine;
+
+  public ProcessEngine getProcessEngine()
+  {
+    return engine;
+  }
+
+  // Do not expose through the API
+  protected void setProcessEngine(ProcessEngine engine)
+  {
+    this.engine = engine;
+  }
+}


Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -37,7 +37,7 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public abstract class ExecutionService implements Service
+public abstract class ExecutionService extends AbstractService
 {
   private ExecutorService procExecutor = Executors.newCachedThreadPool();
 

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -51,7 +51,7 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public abstract class MessageService implements Service
+public abstract class MessageService extends AbstractService
 {
   // Provide logging
   final Logger log = LoggerFactory.getLogger(MessageService.class);

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -34,7 +34,7 @@
  * @author thomas.diesler at jboss.com
  * @since 17-Sep-2008
  */
-public abstract class PersistenceService implements Service
+public abstract class PersistenceService extends AbstractService
 {
   /**
    * Locate the default PersistenceService

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -44,7 +44,7 @@
  * @author thomas.diesler at jboss.com
  * @since 25-Sep-2008
  */
-public abstract class ProcessService implements Service
+public abstract class ProcessService extends AbstractService
 {
   // Provide logging
   final static Logger log = LoggerFactory.getLogger(ProcessService.class);
@@ -71,13 +71,15 @@
    */
   public ObjectName deploy(Deployment dep)
   {
+    // Get the associated engine
+    ProcessEngine engine = getProcessEngine();
+    
     // Get the process from the deployment
-    Process proc = dep.getProcess();
+    Process proc = dep.getProcess(engine);
     if (proc == null)
       throw new IllegalStateException("Cannot obtain process from: " + dep);
     
     // Save the process if the PersistenceService is registered
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
     PersistenceService dbService = engine.getService(PersistenceService.class);
     if (dbService != null)
       dbService.saveProcess(proc);

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -21,7 +21,9 @@
  */
 package org.jbpm.api.service;
 
+import org.jbpm.api.client.ProcessEngine;
 
+
 //$Id$
 
 /**
@@ -32,4 +34,8 @@
  */
 public interface Service
 {
+  /**
+   * Get the associated ProcessEngine
+   */
+  ProcessEngine getProcessEngine();
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -40,7 +40,7 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public abstract class SignalService implements Service
+public abstract class SignalService extends AbstractService
 {
   // provide logging
   final static Logger log = LoggerFactory.getLogger(SignalService.class);

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -68,15 +68,21 @@
   // The messages caught by this test case
   private List<Message> messages = new ArrayList<Message>();
 
+  protected ProcessEngine getProcessEngine()
+  {
+    return ProcessEngine.getProcessEngine();
+  }
+  
   @Override
   protected void setUp() throws Exception
   {
     log.debug("### START " + getLongName());
     super.setUp();
     
+    ProcessEngine engine = getProcessEngine();
+    
     // Setup the SignalListener
     clearAllSignalListeners();
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
     SignalService sigService = engine.getService(SignalService.class);
     sigService.addSignalListener(getSignalListener());
     synchronized (signals)
@@ -86,30 +92,31 @@
     
     // Setup the MessageListener
     clearAllMessageListeners();
-    MessageService msgService = MessageService.locateMessageService();
+    MessageService msgService = engine.getService(MessageService.class);
     msgService.addMessageListener(getMessageListener());
   }
 
   @Override
   protected void tearDown() throws Exception
   {
+    ProcessEngine engine = getProcessEngine();
+    
     // Tear down the SignalListener
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
     SignalService sigService = engine.getService(SignalService.class);
     sigService.removeSignalListener(getSignalListener());
     
     // Tear down the MessageListener
-    MessageService msgService = MessageService.locateMessageService();
+    MessageService msgService = engine.getService(MessageService.class);
     msgService.removeMessageListener(getTestID());
 
     // Check that there are no registered processes left
-    ProcessService procManager = ProcessService.locateProcessService();
+    ProcessService procManager = engine.getService(ProcessService.class);
     Set<Process> procs = procManager.getProcesses();
     if (procs.size() > 0)
     {
       String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
       System.out.println(logMsg);
-      log.warn(logMsg);
+      System.exit(1);
     }
 
     // Check that there are no registered signal listeners left
@@ -118,7 +125,7 @@
     {
       String logMsg = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
       System.out.println(logMsg);
-      log.warn(logMsg);
+      System.exit(1);
     }
     
     // Check that there are no registered message listeners left
@@ -127,7 +134,7 @@
     {
       String logMsg = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
       System.out.println(logMsg);
-      log.warn(logMsg);
+      System.exit(1);
     }
 
     super.tearDown();
@@ -196,18 +203,17 @@
   
   private void clearAllSignalListeners()
   {
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
-    SignalService sigService = engine.getService(SignalService.class);
+    SignalService sigService = getProcessEngine().getService(SignalService.class);
     Set<SignalListener> sigListeners = sigService.getSignalListeners();
     for (SignalListener sigListener : sigListeners)
     {
       sigService.removeSignalListener(sigListener);
     }
   }
-  
+
   private void clearAllMessageListeners()
   {
-    MessageService msgService = MessageService.locateMessageService();
+    MessageService msgService = getProcessEngine().getService(MessageService.class);
     Set<MessageListener> msgListeners = msgService.getMessageListeners();
     for (MessageListener msgListener : msgListeners)
     {

Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -45,11 +45,11 @@
 
   public void testNoProcessName() throws Exception
   {
-    ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
-    builder.addProcess(null).addStartEvent("Start").addSequenceFlow("Task");
-    builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
     try
     {
+      ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+      builder.addProcess(null).addStartEvent("Start").addSequenceFlow("Task");
+      builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
       builder.getProcess();
       fail("Process name required");
     }

Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -45,12 +45,9 @@
 {
   public void testSequence() throws Exception
   {
-    // Start the Process
     Process proc = getProcess();
     
-    ProcessService procService = ProcessService.locateProcessService();
-    procService.registerProcess(proc);
-    
+    // Start the Process
     proc.startProcess();
     proc.waitForEnd();
 

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,6 +27,7 @@
 
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.service.Service;
+import org.jbpm.ri.service.MutableService;
 
 /**
  * A process engine with public access
@@ -39,5 +40,15 @@
   public void setServices(Set<Service> services)
   {
     this.services = services;
+    
+    // Set this engine on every mutable service
+    for (Service service : services)
+    {
+      if (service instanceof MutableService)
+      {
+        MutableService mutService = (MutableService)service;
+        mutService.setProcessEngine(this);
+      }
+    }
   }
 }

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -119,7 +119,7 @@
     {
       private static final long serialVersionUID = 1L;
       
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcess().getProcessEngine();
       SignalService sigService = engine.getService(SignalService.class);
       public void throwEnterSignal(Token token)
       {

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -85,7 +85,7 @@
     {
       private static final long serialVersionUID = 1L;
       
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcess().getProcessEngine();
       SignalService sigService = engine.getService(SignalService.class);
       public void throwEnterSignal(Token token)
       {

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -82,10 +82,19 @@
   private Set<Property> properties = new HashSet<Property>();
 
   @Transient 
+  private transient ProcessEngine engine;
+  
+  @Transient 
   private transient RuntimeException runtimeException; 
 
-  public ProcessImpl(String name)
+  public ProcessImpl(ProcessEngine engine, String name)
   {
+    if (engine == null)
+      throw new InvalidProcessException("Process engine cannot be null");
+    if (name == null)
+      throw new InvalidProcessException("Process name cannot be null");
+    
+    this.engine = engine;
     this.name = name;
   }
 
@@ -94,6 +103,12 @@
   {
   }
 
+  @Transient
+  public ProcessEngine getProcessEngine()
+  {
+    return engine;
+  }
+
   @Override
   @Transient
   public ObjectName getKey()
@@ -267,7 +282,7 @@
 
   private ObjectName startProcessInternal(Attachments att)
   {
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
+    ProcessEngine engine = getProcessEngine();
     ExecutionService exService = engine.getService(ExecutionService.class);
     exService.startProcess(this, att);
     return getKey();
@@ -290,7 +305,7 @@
    */
   private ProcessStatus waitForEndInternal(long timeout)
   {
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
+    ProcessEngine engine = getProcessEngine();
     ExecutionService exService = engine.getService(ExecutionService.class);
     return exService.waitForEnd(this, timeout);
   }

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -113,7 +113,7 @@
     {
       private static final long serialVersionUID = 1L;
       
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcess().getProcessEngine();
       SignalService sigService = engine.getService(SignalService.class);
       public void throwEnterSignal(Token token)
       {

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -120,7 +120,7 @@
     {
       private static final long serialVersionUID = 1L;
       
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcess().getProcessEngine();
       SignalService sigService = engine.getService(SignalService.class);
       public void throwEnterSignal(Token token)
       {

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,8 +27,6 @@
 import org.jbpm.api.model.Event;
 import org.jbpm.api.model.Signal.SignalType;
 import org.jbpm.api.model.builder.EventBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
 
 /**
  * The EventBuilder can be used to build an {@link Event} dynamically.
@@ -38,9 +36,9 @@
  */
 public class EventBuilderImpl extends ProcessBuilderImpl implements EventBuilder
 {
-  public EventBuilderImpl(ProcessImpl proc, NodeImpl node)
+  public EventBuilderImpl(ProcessBuilderImpl procBuilder)
   {
-    super(proc, node);
+    super(procBuilder);
   }
 
   public EventBuilder addMessageRef(String msgName)

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,10 +24,9 @@
 //$Id$
 
 import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Gateway;
 import org.jbpm.api.model.Expression.ExpressionLanguage;
 import org.jbpm.api.model.builder.GatewayBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
 
 /**
  * The GatewayBuilder can be used to build a {@link Gateway} dynamically.
@@ -37,9 +36,9 @@
  */
 public class GatewayBuilderImpl extends ProcessBuilderImpl implements GatewayBuilder
 {
-  public GatewayBuilderImpl(ProcessImpl proc, NodeImpl node)
+  public GatewayBuilderImpl(ProcessBuilderImpl procBuilder)
   {
-    super(proc, node);
+    super(procBuilder);
   }
 
   public GatewayBuilder addConditionalGate(String targetName, ExpressionLanguage exprLang, String exprBody)

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,6 +24,7 @@
 //$Id$
 
 import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.EndEvent.ResultType;
 import org.jbpm.api.model.Gateway.GatewayType;
@@ -54,22 +55,25 @@
  */
 public class ProcessBuilderImpl implements ProcessBuilder
 {
+  protected ProcessEngine engine;
   protected ProcessImpl proc;
   protected NodeImpl node;
 
-  public ProcessBuilderImpl()
+  public ProcessBuilderImpl(ProcessEngine engine)
   {
+    this.engine = engine;
   }
 
-  protected ProcessBuilderImpl(ProcessImpl proc, NodeImpl node)
+  protected ProcessBuilderImpl(ProcessBuilderImpl procBuilder)
   {
-    this.proc = proc;
-    this.node = node;
+    this.engine = procBuilder.engine;
+    this.proc = procBuilder.proc;
+    this.node = procBuilder.node;
   }
 
   public ProcessBuilder addProcess(String procName)
   {
-    proc = new ProcessImpl(procName);
+    proc = new ProcessImpl(engine, procName);
     return this;
   }
 
@@ -102,7 +106,7 @@
   public EventBuilder addStartEvent(String name)
   {
     addNode(node = new StartEventImpl(name));
-    return new EventBuilderImpl(proc, node);
+    return new EventBuilderImpl(this);
   }
 
   public EventBuilder addStartEvent(String name, TriggerType triggerType)
@@ -110,19 +114,19 @@
     StartEventImpl startImpl = new StartEventImpl(name);
     startImpl.setTriggerType(triggerType);
     addNode(node = startImpl);
-    return new EventBuilderImpl(proc, node);
+    return new EventBuilderImpl(this);
   }
   
   public EventBuilder addEvent(String name)
   {
     addNode(node = new EventImpl(name));
-    return new EventBuilderImpl(proc, node);
+    return new EventBuilderImpl(this);
   }
 
   public EventBuilder addEndEvent(String name)
   {
     addNode(node = new EndEventImpl(name));
-    return new EventBuilderImpl(proc, node);
+    return new EventBuilderImpl(this);
   }
 
   public EventBuilder addEndEvent(String name, ResultType resultType)
@@ -130,13 +134,13 @@
     EndEventImpl endImpl = new EndEventImpl(name);
     endImpl.setResultType(resultType);
     addNode(node = endImpl);
-    return new EventBuilderImpl(proc, node);
+    return new EventBuilderImpl(this);
   }
 
   public TaskBuilder addTask(String name)
   {
     addTask(name, TaskType.None);
-    return new TaskBuilderImpl(proc, node);
+    return new TaskBuilderImpl(this);
   }
 
   public TaskBuilder addTask(String name, TaskType type)
@@ -178,7 +182,7 @@
       throw new IllegalStateException("Task type: " + type);
     }
     addNode(node);
-    return new TaskBuilderImpl(proc, node);
+    return new TaskBuilderImpl(this);
   }
 
   public GatewayBuilder addGateway(String name, GatewayType type)
@@ -200,7 +204,7 @@
       throw new NotImplementedException();
     }
     addNode(node);
-    return new GatewayBuilderImpl(proc, node);
+    return new GatewayBuilderImpl(this);
   }
 
   public <T extends ExecutionHandler> ProcessBuilder addExecutionHandler(Class<T> clazz)

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,9 +24,8 @@
 //$Id$
 
 import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Task;
 import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
 
 /**
  * The TaskBuilder can be used to dynamically build {@link Task}.
@@ -36,9 +35,9 @@
  */
 public class TaskBuilderImpl extends ProcessBuilderImpl implements TaskBuilder
 {
-  public TaskBuilderImpl(ProcessImpl proc, NodeImpl node)
+  public TaskBuilderImpl(ProcessBuilderImpl procBuilder)
   {
-    super(proc, node);
+    super(procBuilder);
   }
 
   public TaskBuilder addMessageRef(String msgName)

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -57,7 +57,7 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public class ExecutionServiceImpl extends ExecutionService
+public class ExecutionServiceImpl extends ExecutionService implements MutableService
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ExecutionServiceImpl.class);
@@ -66,6 +66,12 @@
   private Map<ObjectName, RuntimeProcess> runtimeProcesses = new HashMap<ObjectName, RuntimeProcess>();
 
   @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
+  
+  @Override
   public void startProcess(Process proc, Attachments att)
   {
     // Prepare the process for start
@@ -157,7 +163,7 @@
       throw new IllegalStateException("Cannot start process in state: " + procStatus);
 
     // Register the process if needed
-    ProcessEngine engine = ProcessEngine.getProcessEngine();
+    ProcessEngine engine = getProcessEngine();
     ProcessService procService = engine.getService(ProcessService.class);
     if (procService.getProcessByKey(proc.getKey()) == null)
       procService.registerProcess(proc);
@@ -233,7 +239,7 @@
       // Unregister the process if not done already
       // this could happen when the Process never received a start signal
       // and then we get here because of a ProcessTimeoutException
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcessEngine();
       ProcessService procService = engine.getService(ProcessService.class);
       if (procService.getProcessByKey(proc.getKey()) != null)
         procService.unregisterProcess(proc);
@@ -298,7 +304,7 @@
       ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
       Process proc = rtProc.getProcess();
 
-      ProcessEngine engine = ProcessEngine.getProcessEngine();
+      ProcessEngine engine = getProcessEngine();
       SignalService sigService = engine.getService(SignalService.class);
       
       ObjectName procID = proc.getKey();

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,6 +24,7 @@
 // $Id$
 
 import org.jbpm.api.client.MessageListener;
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Message;
 import org.jbpm.api.service.MessageService;
 
@@ -36,6 +37,11 @@
  * @author thomas.diesler at jboss.com
  * @since 17-Sep-2008
  */
-public class MessageServiceImpl extends MessageService
+public class MessageServiceImpl extends MessageService implements MutableService
 {
+  @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
 }

Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java	                        (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.service;
+
+// $Id$
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.service.Service;
+
+/**
+ * A mutable service
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 18-Jun-2008
+ */
+public interface MutableService extends Service
+{
+  void setProcessEngine(ProcessEngine engine);
+}
\ No newline at end of file


Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -36,6 +36,7 @@
 import org.hibernate.cfg.AnnotationConfiguration;
 import org.hibernate.classic.Session;
 import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.service.PersistenceService;
 import org.jbpm.api.service.Service;
@@ -49,7 +50,7 @@
  * @author thomas.diesler at jboss.com
  * @since 17-Sep-2008
  */
-public class PersistenceServiceImpl extends PersistenceService
+public class PersistenceServiceImpl extends PersistenceService implements MutableService
 {
   // Provide logging
   final Logger log = LoggerFactory.getLogger(PersistenceServiceImpl.class);
@@ -58,6 +59,12 @@
   private SessionFactory sessionFactory;
   private Set<String> annotatedClasses = new HashSet<String>();
 
+  @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
+  
   public void setHibernateConfig(String hibernateConfig)
   {
     this.hibernateConfig = hibernateConfig;

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
 
 // $Id$
 
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.builder.ProcessBuilder;
 import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -34,11 +35,17 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public class ProcessBuilderServiceImpl extends ProcessBuilderService
+public class ProcessBuilderServiceImpl extends ProcessBuilderService implements MutableService
 {
   @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
+  
+  @Override
   public ProcessBuilder getProcessBuilder()
   {
-    return new ProcessBuilderImpl();
+    return new ProcessBuilderImpl(getProcessEngine());
   }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
 
 // $Id$
 
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.service.ProcessService;
 
 /**
@@ -31,6 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 18-Jun-2008
  */
-public class ProcessServiceImpl extends ProcessService
+public class ProcessServiceImpl extends ProcessService implements MutableService
 {
+  @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java	2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java	2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
 
 // $Id$
 
+import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.service.SignalService;
 
 /**
@@ -31,6 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 17-Sep-2008
  */
-public class SignalServiceImpl extends SignalService
+public class SignalServiceImpl extends SignalService implements MutableService
 {
+  @Override
+  public void setProcessEngine(ProcessEngine engine)
+  {
+    super.setProcessEngine(engine);
+  }
 }




More information about the jbpm-commits mailing list