[jbpm-commits] JBoss JBPM SVN: r2788 - in jbpm3/trunk/modules: core/scripts and 17 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Nov 6 21:04:01 EST 2008


Author: alex.guizar at jboss.com
Date: 2008-11-06 21:04:01 -0500 (Thu, 06 Nov 2008)
New Revision: 2788

Added:
   jbpm3/trunk/modules/core/scripts/antrun-jbpm-schema.xml
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/SystemPropertyTask.java
   jbpm3/trunk/modules/identity/scripts/antrun-jbpm-schema.xml
Modified:
   jbpm3/trunk/modules/core/pom.xml
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmContext.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/AntHelper.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/variableinstance/ByteArrayInstance.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/HibernateHelper.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
   jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml
   jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.hsqldb.xml
   jbpm3/trunk/modules/core/src/main/resources/org/jbpm/ant/jbpm.ant.tasks.properties
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm522/JBPM522Test.java
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/xml/XmlSchemaTest.java
   jbpm3/trunk/modules/enterprise/jar/pom.xml
   jbpm3/trunk/modules/identity/pom.xml
Log:
moved database schema creation before the test suite run to prevent tables from being dropped and recreated several times during the test suite

Modified: jbpm3/trunk/modules/core/pom.xml
===================================================================
--- jbpm3/trunk/modules/core/pom.xml	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/pom.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -172,6 +172,7 @@
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
           <execution>
+            <id>config</id>
             <phase>compile</phase>
             <goals>
               <goal>run</goal>
@@ -183,6 +184,20 @@
               </tasks>
             </configuration>
           </execution>
+          <execution>
+            <id>schema</id>
+            <phase>process-test-resources</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks>
+                <property name="test.classpath" refid="maven.test.classpath" />
+                <property name="log4j.output.dir" location="${basedir}/target" />
+                <ant antfile="scripts/antrun-jbpm-schema.xml" target="create" />
+              </tasks>
+            </configuration>
+          </execution>
         </executions>
       </plugin>
 
@@ -223,6 +238,7 @@
               <excludes>
                 <!-- Concurrent execution not supported on hsqldb -->
                 <exclude>org/jbpm/jbpm983/JBPM983Test.java</exclude>
+                <exclude>org/jbpm/jbpm1072/JBPM1072Test.java</exclude>
                 <!-- https://jira.jboss.org/jira/browse/JBPM-1810  -->
                 <exclude>org/jbpm/db/JbpmSchemaDbTest.java</exclude>
               </excludes>
@@ -252,6 +268,7 @@
               <excludes>
                 <!-- Concurrent execution not supported on hsqldb -->
                 <exclude>org/jbpm/jbpm983/JBPM983Test.java</exclude>
+                <exclude>org/jbpm/jbpm1072/JBPM1072Test.java</exclude>
                 <!-- https://jira.jboss.org/jira/browse/JBPM-1810  -->
                 <exclude>org/jbpm/db/JbpmSchemaDbTest.java</exclude>
               </excludes>
@@ -283,8 +300,6 @@
                 <exclude>org/jbpm/graph/node/ProcessStateDbTest.java</exclude>
                 <!-- https://jira.jboss.org/jira/browse/JBPM-1166 -->
                 <exclude>org/jbpm/seam/JobExecutorCustomizationTest.java</exclude>
-                <!-- https://jira.jboss.org/jira/browse/JBPM-1810  -->
-                <exclude>org/jbpm/db/JbpmSchemaDbTest.java</exclude>
               </excludes>
             </configuration>
           </plugin>
@@ -315,8 +330,6 @@
                 <exclude>org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java</exclude>
                 <!-- https://jira.jboss.org/jira/browse/JBPM-1782 -->
                 <exclude>org/jbpm/jpdl/exe/JoinExecutionDbTest.java</exclude>
-                <!-- https://jira.jboss.org/jira/browse/JBPM-1810  -->
-                <exclude>org/jbpm/db/JbpmSchemaDbTest.java</exclude>
               </excludes>
             </configuration>
           </plugin>
@@ -344,8 +357,6 @@
               <excludes>
                 <!-- https://jira.jboss.org/jira/browse/JBPM-1764 -->
                 <exclude>org/jbpm/job/executor/JobExecutorDbTest</exclude>
-                <!-- https://jira.jboss.org/jira/browse/JBPM-1810  -->
-                <exclude>org/jbpm/db/JbpmSchemaDbTest.java</exclude>
               </excludes>
             </configuration>
           </plugin>

Added: jbpm3/trunk/modules/core/scripts/antrun-jbpm-schema.xml
===================================================================
--- jbpm3/trunk/modules/core/scripts/antrun-jbpm-schema.xml	                        (rev 0)
+++ jbpm3/trunk/modules/core/scripts/antrun-jbpm-schema.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--  JBoss, the OpenSource J2EE webOS                                      -->
+<!--                                                                        -->
+<!--  Distributable under LGPL license.                                     -->
+<!--  See terms of license at http://www.gnu.org.                           -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<!-- $Id: antrun-jbpm-config.xml 2611 2008-10-24 15:25:58Z thomas.diesler at jboss.com $ -->
+
+<project default="create">
+
+  <target name="create">
+    <taskdef resource="org/jbpm/ant/jbpm.ant.tasks.properties">
+      <classpath path="${test.classpath}" />
+    </taskdef>
+    <systemproperty key="log4j.output.dir" value="${log4j.output.dir}"/>
+    <jbpmschema />
+  </target>
+
+</project>
\ No newline at end of file

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmContext.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmContext.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/JbpmContext.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -524,81 +524,81 @@
 
   /**
    * gets the hibernate session factory from the default configured persistence service.
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * @return the hibernate session factory, or <code>null</code> if a nonstandard
+   * persistence service is configured
    */
   public SessionFactory getSessionFactory()
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return null;
-    return persistenceService.getSessionFactory();
+    PersistenceService persistenceService = getPersistenceService();
+    return persistenceService instanceof DbPersistenceService
+      ? ((DbPersistenceService) persistenceService).getSessionFactory()
+      : null;
   }
 
   /**
    * sets the hibernate session factory into the default configured persistence service, overwriting the configured session factory (if there is one configured).
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * if a nonstandard persistence service is configured, then this call has no effect.
    */
   public void setSessionFactory(SessionFactory sessionFactory)
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return;
-    persistenceService.setSessionFactory(sessionFactory);
+    PersistenceService persistenceService = getPersistenceService();
+    if (persistenceService instanceof DbPersistenceService) {
+      DbPersistenceService dbPersistenceService = (DbPersistenceService) persistenceService;
+      dbPersistenceService.setSessionFactory(sessionFactory);
+    }
   }
 
   /**
    * gets the hibernate session from the default configured persistence service.
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * @return the hibernate session, or <code>null</code> if a nonstandard
+   * persistence service is configured.
    */
   public Session getSession()
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return null;
-    return persistenceService.getSession();
+    PersistenceService persistenceService = getPersistenceService();
+    return persistenceService instanceof DbPersistenceService
+      ? ((DbPersistenceService) persistenceService).getSession()
+      : null;
   }
 
   /**
    * sets the hibernate session into the default configured persistence service, preventing the creation of a session from the configured session factory (if there is
    * one configured).
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * if a nonstandard persistence service is configured, then this call has no effect.
    */
   public void setSession(Session session)
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return;
-    persistenceService.setSession(session);
+    PersistenceService persistenceService = getPersistenceService();
+    if (persistenceService instanceof DbPersistenceService) {
+      DbPersistenceService dbPersistenceService = (DbPersistenceService) persistenceService;
+      dbPersistenceService.setSession(session);
+    }
   }
 
   /**
    * gets the jdbc connection from the default configured persistence service.
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * @return the jdbc connectoin, or <code>null</code> if a nonstandard
+   * persistence service is configured.
    */
   public Connection getConnection()
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return null;
-    return persistenceService.getConnection();
+    PersistenceService persistenceService = getPersistenceService();
+    return persistenceService instanceof DbPersistenceService
+      ? ((DbPersistenceService) persistenceService).getConnection()
+      : null;
   }
 
   /**
    * allows users to provide a jdbc connection to be used when the hibernate session is created.
-   * 
-   * @throws ClassCastException if another persistence service is configured then the default.
+   * if a nonstandard persistence service is configured, then this call has no effect.
    */
   public void setConnection(Connection connection)
   {
-    DbPersistenceService persistenceService = (DbPersistenceService)getPersistenceService();
-    if (persistenceService == null)
-      return;
-    persistenceService.setConnection(connection);
+    PersistenceService persistenceService = getPersistenceService();
+    if (persistenceService instanceof DbPersistenceService) {
+      DbPersistenceService dbPersistenceService = (DbPersistenceService) persistenceService;
+      dbPersistenceService.setConnection(connection);
+    }
   }
 
   // jbpm database access sessions
@@ -704,9 +704,7 @@
 
   PersistenceService getPersistenceService()
   {
-    if (services == null)
-      return null;
-    return services.getPersistenceService();
+    return services != null ? services.getPersistenceService() : null;
   }
 
   public JbpmConfiguration getJbpmConfiguration()

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/AntHelper.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/AntHelper.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/AntHelper.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -42,6 +42,10 @@
   final static Map configurations = new HashMap();
   final static Map jbpmConfigurations = new HashMap();
 
+  private AntHelper() {
+    // prevent instantiation
+  }
+
   public static Configuration getConfiguration(String hibernateCfgResource, String hibernatePropertiesResource) {
     Object key = getKey(hibernateCfgResource,hibernatePropertiesResource);
     Configuration configuration = (Configuration) configurations.get(key);

Added: jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/SystemPropertyTask.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/SystemPropertyTask.java	                        (rev 0)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/ant/SystemPropertyTask.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -0,0 +1,47 @@
+/*
+ * 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.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * @author Alejandro Guizar
+ */
+public class SystemPropertyTask extends Task {
+
+  private String key;
+  private String value;
+
+  @Override
+  public void execute() throws BuildException {
+    System.setProperty(key, value);
+  }
+
+  public void setKey(String key) {
+    this.key = key;
+  }
+
+  public void setValue(String value) {
+    this.value = value;
+  }
+}

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -54,7 +54,7 @@
   }
   
   public String toString() {
-    return "TokenVariableMap"+( (token!=null)&&(token.getName()!=null) ? "["+token.getName()+"]" : Integer.toHexString(System.identityHashCode(this)));
+    return "TokenVariableMap"+( (token!=null) ? "["+token.getFullName()+"]" : "@" + Integer.toHexString(System.identityHashCode(this)));
   }
 
   // protected ////////////////////////////////////////////////////////////////

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/variableinstance/ByteArrayInstance.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/variableinstance/ByteArrayInstance.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/context/exe/variableinstance/ByteArrayInstance.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -21,6 +21,8 @@
  */
 package org.jbpm.context.exe.variableinstance;
 
+import org.hibernate.Session;
+import org.jbpm.JbpmContext;
 import org.jbpm.bytes.ByteArray;
 import org.jbpm.context.exe.VariableInstance;
 import org.jbpm.context.log.variableinstance.ByteArrayUpdateLog;
@@ -42,6 +44,15 @@
 
   protected void setObject(Object value) {
     if (token!=null) token.addLog(new ByteArrayUpdateLog(this, this.value, (ByteArray) value));
+    // delete old value, otherwise it will be unreachable
+    if (this.value != null) {
+      JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
+      if (jbpmContext != null) {
+        Session session = jbpmContext.getSession();
+        if (session != null) session.delete(this.value);
+      }      
+    }
+    // set new value
     this.value = (ByteArray) value;
   }
 }

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JbpmSchema.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -29,7 +29,6 @@
 import java.io.InputStream;
 import java.io.PrintStream;
 import java.io.Serializable;
-import java.lang.reflect.Field;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -44,9 +43,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.hibernate.cfg.Configuration;
-import org.hibernate.cfg.Environment;
+import org.hibernate.cfg.Settings;
 import org.hibernate.connection.ConnectionProvider;
-import org.hibernate.connection.ConnectionProviderFactory;
 import org.hibernate.dialect.Dialect;
 import org.hibernate.engine.Mapping;
 import org.hibernate.mapping.ForeignKey;
@@ -64,8 +62,7 @@
   private static final long serialVersionUID = 1L;
 
   Configuration configuration = null;
-  Properties properties = null;
-  Dialect dialect = null;
+  Settings settings;
   Mapping mapping = null;
   String[] createSql = null;
   String[] dropSql = null;
@@ -78,26 +75,15 @@
   public JbpmSchema(Configuration configuration)
   {
     this.configuration = configuration;
-    this.properties = configuration.getProperties();
-    this.dialect = Dialect.getDialect(properties);
-    try
-    {
-      // get the mapping field via reflection :-(
-      Field mappingField = Configuration.class.getDeclaredField("mapping");
-      mappingField.setAccessible(true);
-      this.mapping = (Mapping)mappingField.get(configuration);
-    }
-    catch (Exception e)
-    {
-      throw new JbpmException("couldn't get the hibernate mapping", e);
-    }
+    this.settings = configuration.buildSettings();
+    this.mapping = configuration.buildMapping();
   }
 
   public String[] getCreateSql()
   {
     if (createSql == null)
     {
-      createSql = configuration.generateSchemaCreationScript(dialect);
+      createSql = configuration.generateSchemaCreationScript(settings.getDialect());
     }
     return createSql;
   }
@@ -106,7 +92,7 @@
   {
     if (dropSql == null)
     {
-      dropSql = configuration.generateDropSchemaScript(dialect);
+      dropSql = configuration.generateDropSchemaScript(settings.getDialect());
     }
     return dropSql;
   }
@@ -116,10 +102,11 @@
     if (cleanSql == null)
     {
       new SchemaExport(configuration);
-      
-      String catalog = properties.getProperty(Environment.DEFAULT_CATALOG);
-      String schema = properties.getProperty(Environment.DEFAULT_SCHEMA);
 
+      Dialect dialect = settings.getDialect();
+      String catalog = settings.getDefaultCatalogName();
+      String schema = settings.getDefaultSchemaName();
+
       // loop over all foreign key constraints
       List dropForeignKeysSql = new ArrayList();
       List createForeignKeysSql = new ArrayList();
@@ -351,8 +338,7 @@
   public void execute(String[] sqls)
   {
     String sql = null;
-    String showSqlText = properties.getProperty("hibernate.show_sql");
-    boolean showSql = ("true".equalsIgnoreCase(showSqlText));
+    boolean showSql = settings.isShowSqlEnabled();
 
     try
     {
@@ -410,7 +396,7 @@
 
   void createConnection() throws SQLException
   {
-    connectionProvider = ConnectionProviderFactory.newConnectionProvider(properties);
+    connectionProvider = settings.getConnectionProvider();
     connection = connectionProvider.getConnection();
     if (!connection.getAutoCommit())
     {
@@ -421,7 +407,7 @@
 
   public Properties getProperties()
   {
-    return properties;
+    return configuration.getProperties();
   }
 
   // sql delimiter ////////////////////////////////////////////////////////////
@@ -432,7 +418,7 @@
   {
     if (sqlDelimiter == null)
     {
-      sqlDelimiter = properties.getProperty("jbpm.sql.delimiter", ";");
+      sqlDelimiter = getProperties().getProperty("jbpm.sql.delimiter", ";");
     }
     return sqlDelimiter;
   }

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/HibernateHelper.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/HibernateHelper.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/HibernateHelper.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -39,13 +39,6 @@
 
 public abstract class HibernateHelper {
 
-  /** maps SessionFactory's to Configurations.         */
-  /** by default, configuration lookup will be enabled */
-  static Map configurations = new HashMap();
-  public static void clearConfigurationsCache() {
-    configurations = new HashMap();
-  }
-
   public static SessionFactory createSessionFactory() {
     return createSessionFactory(null, null, true);
   }
@@ -64,11 +57,7 @@
   }
 
   public static SessionFactory createSessionFactory(Configuration configuration, boolean isConfigLookupEnabled) {
-    SessionFactory sessionFactory = configuration.buildSessionFactory();
-    if (isConfigLookupEnabled) {
-      configurations.put(sessionFactory, configuration);
-    }
-    return sessionFactory;
+    return configuration.buildSessionFactory();
   }
 
   public static Configuration createConfiguration(String cfgXmlResource, String propertiesResource) {
@@ -102,23 +91,6 @@
     return configuration;
   }
 
-  public static Configuration getConfiguration(SessionFactory sessionFactory) {
-    return (Configuration) configurations.get(sessionFactory);
-  }
-  
-  public static SchemaExport createSchemaExport(SessionFactory sessionFactory) {
-    return new SchemaExport(getConfiguration(sessionFactory));
-  }
-
-  public static boolean createSchemaExportScript(SessionFactory sessionFactory) {
-    boolean script = false;
-    String showSql = getConfiguration(sessionFactory).getProperty("hibernate.show_sql");
-    if ("true".equalsIgnoreCase(showSql)) {
-      script = true;
-    }
-    return script;
-  }
-
   public static void clearHibernateCache(SessionFactory sessionFactory) {
     sessionFactory.evictQueries();
     

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -156,6 +156,11 @@
     }
   }
 
+  public void finalize() throws Throwable
+  {
+    close();
+  }
+
   public String getDataSourceJndiName()
   {
     return dataSourceJndiName;

Modified: jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/resources/hibernate.common.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -17,10 +17,6 @@
     <!-- # common settings                 # -->
     <!-- ################################### -->
 
-    <!-- Automatic schema creation (begin) -->
-    <property name="hibernate.hbm2ddl.auto">create</property>
-    <!-- Automatic schema creation (end) -->
-
     <!-- Simple memory-only cache -->
     <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
 

Modified: jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.hsqldb.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.hsqldb.xml	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.hsqldb.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -8,3 +8,7 @@
     <property name="hibernate.connection.username">sa</property>
     <property name="hibernate.connection.password"></property>
     <!-- JDBC connection properties (end) -->
+
+    <!-- Automatic schema creation (begin) -->
+    <property name="hibernate.hbm2ddl.auto">create</property>
+    <!-- Automatic schema creation (end) -->
\ No newline at end of file

Modified: jbpm3/trunk/modules/core/src/main/resources/org/jbpm/ant/jbpm.ant.tasks.properties
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/org/jbpm/ant/jbpm.ant.tasks.properties	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/main/resources/org/jbpm/ant/jbpm.ant.tasks.properties	2008-11-07 02:04:01 UTC (rev 2788)
@@ -3,4 +3,5 @@
 startjboss=org.jbpm.ant.StartJBossTask
 starthsqldb=org.jbpm.ant.StartHsqldbTask
 shutdownhsqldb=org.jbpm.ant.ShutDownHsqldb
-loadidentities=org.jbpm.identity.ant.LoadIdentitiesTask
+systemproperty=org.jbpm.ant.SystemPropertyTask
+!loadidentities=org.jbpm.identity.ant.LoadIdentitiesTask

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -37,12 +37,7 @@
   String testRootDir = FileDefinitionFileSystemConfigTest.class.getProtectionDomain().getCodeSource().getLocation().getFile().toString();
   
   static Set excusedClasses = new HashSet(Arrays.asList(new String[] {
-      "org.jbpm.ant.DeployProcessTask",
-      "org.jbpm.ant.JbpmSchemaTask",
-      "org.jbpm.ant.Launcher",
-      "org.jbpm.ant.ShutDownHsqldb",
-      "org.jbpm.ant.StartHsqldbTask",
-      "org.jbpm.ant.StartJBossTask",
+      "org.jbpm.ant",
       "org.jbpm.context.exe.JbpmType",
       "org.jbpm.db.hibernate.ConverterEnumType",
       "org.jbpm.db.hibernate.Converters",

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -1,6 +1,10 @@
 package org.jbpm.db;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.jbpm.context.exe.ContextInstance;
+import org.jbpm.context.exe.VariableInstance;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
@@ -116,6 +120,8 @@
   }
 
   public void testDeleteProcessInstanceWithConcurrentPathsOfExecution() {
+    ensureCleanVariableInstanceTable();
+
     ProcessDefinition makeFondue = ProcessDefinition.parseXmlString(
       "<process-definition name='make fondue'>" +
       "  <start-state>" +
@@ -167,4 +173,16 @@
       jbpmContext.getGraphSession().deleteProcessDefinition(makeFondue.getId());
     }
   }
+
+  private void ensureCleanVariableInstanceTable() {
+    List variableInstances = session.createCriteria(VariableInstance.class).list();
+    if (!variableInstances.isEmpty()) {
+      System.err.println("FIXME: "+ getClass().getName() + "." + getName() +
+          " found " + variableInstances.size() + " variable instances left over");
+      for (Iterator i = variableInstances.iterator(); i.hasNext();) {
+        VariableInstance variableInstance = (VariableInstance) i.next();
+        session.delete(variableInstance);
+      }
+    }
+  }
 }

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -29,17 +29,14 @@
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
 
-public class GraphSessionDbTest extends AbstractDbTestCase
-{
+public class GraphSessionDbTest extends AbstractDbTestCase {
 
-  public void testProcessDefinitionSaveAndLoad()
-  {
+  public void testProcessDefinitionSaveAndLoad() {
     // create a process definition
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
     // save it in the database
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       // get the assigned id
       long processDefinitionId = processDefinition.getId();
       // start a new transaction
@@ -49,16 +46,15 @@
       // check the result
       assertEquals("auction", processDefinition.getName());
     }
-    finally
-    {
-      // cleanup 
+    finally {
+      // cleanup
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
-  public void testFindProcessDefinitionByNameAndVersion()
-  {
-    // put 3 process definitions in the database with the same name, but different versions
+  public void testFindProcessDefinitionByNameAndVersion() {
+    // put 3 process definitions in the database with the same name, but
+    // different versions
     ProcessDefinition processDefinitionOne = new ProcessDefinition("auction");
     processDefinitionOne.setVersion(1);
     graphSession.saveProcessDefinition(processDefinitionOne);
@@ -81,11 +77,11 @@
     assertEquals(secondVersionProcessDefinitionId, processDefinitionTwo.getId());
     assertEquals("auction", processDefinitionTwo.getName());
     assertEquals(2, processDefinitionTwo.getVersion());
-    
+
     // start a new transaction
     newTransaction();
 
-    // cleanup 
+    // cleanup
     graphSession.deleteProcessDefinition(processDefinitionOne.getId());
     newTransaction();
     graphSession.deleteProcessDefinition(processDefinitionTwo.getId());
@@ -93,9 +89,9 @@
     graphSession.deleteProcessDefinition(processDefinitionThree.getId());
   }
 
-  public void testFindLatestProcessDefinition() throws Exception
-  {
-    // put 3 process definitions in the database with the same name, but different versions
+  public void testFindLatestProcessDefinition() throws Exception {
+    // put 3 process definitions in the database with the same name, but
+    // different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
     processDefinition.setVersion(1);
     graphSession.saveProcessDefinition(processDefinition);
@@ -119,7 +115,7 @@
 
     newTransaction();
 
-    // cleanup 
+    // cleanup
     processDefinition = graphSession.findProcessDefinition("auction", 1);
     graphSession.deleteProcessDefinition(processDefinition.getId());
 
@@ -130,9 +126,11 @@
     graphSession.deleteProcessDefinition(processDefinition.getId());
   }
 
-  public void testFindAllProcessDefinitions() throws Exception
-  {
-    // put 3 process definitions in the database with the same name, but different versions
+  public void testFindAllProcessDefinitions() throws Exception {
+    ensureCleanProcessDefinitionTable();
+
+    // put 3 process definitions in the database with the same name, but
+    // different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
     processDefinition.setVersion(1);
     graphSession.saveProcessDefinition(processDefinition);
@@ -155,41 +153,43 @@
 
     newTransaction();
 
-    List allProcessDefinitions = graphSession.findAllProcessDefinitions();
-    assertEquals(5, allProcessDefinitions.size());
-    assertEquals(3, ((ProcessDefinition)allProcessDefinitions.get(0)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitions.get(0)).getName());
-    assertEquals(2, ((ProcessDefinition)allProcessDefinitions.get(1)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitions.get(1)).getName());
-    assertEquals(1, ((ProcessDefinition)allProcessDefinitions.get(2)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitions.get(2)).getName());
-    assertEquals(2, ((ProcessDefinition)allProcessDefinitions.get(3)).getVersion());
-    assertEquals("bake cake", ((ProcessDefinition)allProcessDefinitions.get(3)).getName());
-    assertEquals(1, ((ProcessDefinition)allProcessDefinitions.get(4)).getVersion());
-    assertEquals("bake cake", ((ProcessDefinition)allProcessDefinitions.get(4)).getName());
+    try {
+      List allProcessDefinitions = graphSession.findAllProcessDefinitions();
+      assertEquals(5, allProcessDefinitions.size());
+      assertEquals(3, ((ProcessDefinition) allProcessDefinitions.get(0)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(0)).getName());
+      assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(1)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(1)).getName());
+      assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(2)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(2)).getName());
+      assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(3)).getVersion());
+      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(3)).getName());
+      assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(4)).getVersion());
+      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(4)).getName());
 
-    newTransaction();
+      newTransaction();
+    }
+    finally {
+      processDefinition = graphSession.findProcessDefinition("auction", 1);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    // cleanup 
-    processDefinition = graphSession.findProcessDefinition("auction", 1);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("auction", 2);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("auction", 2);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("auction", 3);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("auction", 3);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("bake cake", 1);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("bake cake", 1);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    processDefinition = graphSession.findProcessDefinition("bake cake", 2);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("bake cake", 2);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testFindAllProcessDefinitionVersions() throws Exception
-  {
-    // put 3 process definitions in the database with the same name, but different versions
+  public void testFindAllProcessDefinitionVersions() throws Exception {
+    // put 3 process definitions in the database with the same name, but
+    // different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
     processDefinition.setVersion(1);
     graphSession.saveProcessDefinition(processDefinition);
@@ -212,184 +212,213 @@
 
     newTransaction();
 
-    List allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("auction");
-    assertEquals(3, allProcessDefinitionVersions.size());
-    assertEquals(3, ((ProcessDefinition)allProcessDefinitionVersions.get(0)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitionVersions.get(0)).getName());
-    assertEquals(2, ((ProcessDefinition)allProcessDefinitionVersions.get(1)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitionVersions.get(1)).getName());
-    assertEquals(1, ((ProcessDefinition)allProcessDefinitionVersions.get(2)).getVersion());
-    assertEquals("auction", ((ProcessDefinition)allProcessDefinitionVersions.get(2)).getName());
+    try {
+      List allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("auction");
+      assertEquals(3, allProcessDefinitionVersions.size());
+      assertEquals(3, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
+      assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
+      assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getVersion());
+      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getName());
 
-    allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("bake cake");
-    assertEquals(2, allProcessDefinitionVersions.size());
-    assertEquals(2, ((ProcessDefinition)allProcessDefinitionVersions.get(0)).getVersion());
-    assertEquals("bake cake", ((ProcessDefinition)allProcessDefinitionVersions.get(0)).getName());
-    assertEquals(1, ((ProcessDefinition)allProcessDefinitionVersions.get(1)).getVersion());
-    assertEquals("bake cake", ((ProcessDefinition)allProcessDefinitionVersions.get(1)).getName());
+      allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("bake cake");
+      assertEquals(2, allProcessDefinitionVersions.size());
+      assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
+      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
+      assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
+      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
 
-    newTransaction();
+      newTransaction();
+    }
+    finally {
+      processDefinition = graphSession.findProcessDefinition("auction", 1);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    // cleanup 
-    processDefinition = graphSession.findProcessDefinition("auction", 1);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("auction", 2);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("auction", 2);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("auction", 3);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("auction", 3);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("bake cake", 1);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
 
-    processDefinition = graphSession.findProcessDefinition("bake cake", 1);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    processDefinition = graphSession.findProcessDefinition("bake cake", 2);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      processDefinition = graphSession.findProcessDefinition("bake cake", 2);
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testSaveAndLoadProcessInstance()
-  {
+  public void testSaveAndLoadProcessInstance() {
     ProcessInstance processInstance = new ProcessInstance();
     processInstance = saveAndReload(processInstance);
-    assertNotNull(processInstance);
-    
-    // cleanup 
-    session.delete(processInstance);
+    try {
+      assertNotNull(processInstance);
+    }
+    finally {
+      graphSession.deleteProcessInstance(processInstance);
+    }
   }
 
-  public void testUpdateProcessInstance()
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + "  <start-state name='s' />" + "  <node name='n' />"
+  public void testUpdateProcessInstance() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+        + "  <start-state name='s' />"
+        + "  <node name='n' />"
         + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
+    
+    try {
+      ProcessInstance processInstance = new ProcessInstance(processDefinition);
 
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      processInstance = saveAndReload(processInstance);
+      long pid = processInstance.getId();
 
-    processInstance = saveAndReload(processInstance);
-    long pid = processInstance.getId();
+      assertEquals("s", processInstance.getRootToken().getNode().getName());
+      processInstance.getRootToken().setNode(processInstance.getProcessDefinition().getNode("n"));
 
-    assertEquals("s", processInstance.getRootToken().getNode().getName());
-    processInstance.getRootToken().setNode(processInstance.getProcessDefinition().getNode("n"));
+      processInstance = saveAndReload(processInstance);
+      assertEquals("n", processInstance.getRootToken().getNode().getName());
+      assertEquals(pid, processInstance.getId());
 
-    processInstance = saveAndReload(processInstance);
-    assertEquals("n", processInstance.getRootToken().getNode().getName());
-    assertEquals(pid, processInstance.getId());
-
-    newTransaction();
-
-    // cleanup 
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      newTransaction();
+    }
+    finally {
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testFindProcessInstancesByProcessDefinition()
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + "  <start-state name='s' />" + "  <node name='n' />"
+  public void testFindProcessInstancesByProcessDefinition() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+        + "  <start-state name='s' />"
+        + "  <node name='n' />"
         + "</process-definition>");
 
     graphSession.saveProcessDefinition(processDefinition);
 
-    jbpmContext.save(new ProcessInstance(processDefinition));
-    jbpmContext.save(new ProcessInstance(processDefinition));
-    jbpmContext.save(new ProcessInstance(processDefinition));
+    try {
+      jbpmContext.save(new ProcessInstance(processDefinition));
+      jbpmContext.save(new ProcessInstance(processDefinition));
+      jbpmContext.save(new ProcessInstance(processDefinition));
 
-    newTransaction();
+      newTransaction();
 
-    List processInstances = graphSession.findProcessInstances(processDefinition.getId());
-    assertEquals(3, processInstances.size());
+      List processInstances = graphSession.findProcessInstances(processDefinition.getId());
+      assertEquals(3, processInstances.size());
 
-    // process instances should be ordered from recent to old
-    long previousStart = System.currentTimeMillis();
-    Iterator iter = processInstances.iterator();
-    while (iter.hasNext())
-    {
-      ProcessInstance processInstance = (ProcessInstance)iter.next();
-      long processStart = processInstance.getStart().getTime();
-      assertTrue(previousStart >= processStart);
-      previousStart = processStart;
+      // process instances should be ordered from recent to old
+      long previousStart = System.currentTimeMillis();
+      Iterator iter = processInstances.iterator();
+      while (iter.hasNext()) {
+        ProcessInstance processInstance = (ProcessInstance) iter.next();
+        long processStart = processInstance.getStart().getTime();
+        assertTrue(previousStart >= processStart);
+        previousStart = processStart;
+      }
+
+      newTransaction();
     }
-    
-    newTransaction();
-
-    // cleanup 
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+    finally {
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testDeleteProcessInstance()
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + "  <start-state name='s' />" + "  <node name='n' />"
+  public void testDeleteProcessInstance() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+        + "  <start-state name='s' />"
+        + "  <node name='n' />"
         + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
-    jbpmContext.save(processInstance);
 
-    newTransaction();
+    try {
+      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      jbpmContext.save(processInstance);
 
-    graphSession.deleteProcessInstance(processInstance.getId());
+      newTransaction();
 
-    newTransaction();
+      graphSession.deleteProcessInstance(processInstance.getId());
 
-    assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
-    
-    newTransaction();
+      newTransaction();
 
-    // cleanup 
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
+
+      newTransaction();
+    }
+    finally {
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testDeleteProcessInstanceWithVariables()
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + "  <start-state name='start'>" + "    <transition to='fork' />"
-        + "  </start-state>" + "  <fork name='fork'>" + "    <transition name='a' to='a' />" + "    <transition name='b' to='b' />" + "  </fork>"
-        + "  <state name='a' />" + "  <state name='b' />" + "</process-definition>");
+  public void testDeleteProcessInstanceWithVariables() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+        + "  <start-state name='start'>"
+        + "    <transition to='fork' />"
+        + "  </start-state>"
+        + "  <fork name='fork'>"
+        + "    <transition name='a' to='a' />"
+        + "    <transition name='b' to='b' />"
+        + "  </fork>"
+        + "  <state name='a' />"
+        + "  <state name='b' />"
+        + "</process-definition>");
 
     graphSession.saveProcessDefinition(processDefinition);
 
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
-    processInstance.signal();
-    Token tokenA = processInstance.findToken("/a");
-    Token tokenB = processInstance.findToken("/b");
+    try {
+      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      processInstance.signal();
+      Token tokenA = processInstance.findToken("/a");
+      Token tokenB = processInstance.findToken("/b");
 
-    ContextInstance contextInstance = processInstance.getContextInstance();
-    contextInstance.setVariable("r", "rrrrrr");
-    contextInstance.createVariable("a", "aaaaaa", tokenA);
-    contextInstance.createVariable("b", "bbbbbb", tokenB);
+      ContextInstance contextInstance = processInstance.getContextInstance();
+      contextInstance.setVariable("r", "rrrrrr");
+      contextInstance.createVariable("a", "aaaaaa", tokenA);
+      contextInstance.createVariable("b", "bbbbbb", tokenB);
 
-    processInstance = saveAndReload(processInstance);
+      processInstance = saveAndReload(processInstance);
 
-    graphSession.deleteProcessInstance(processInstance);
+      graphSession.deleteProcessInstance(processInstance);
 
-    newTransaction();
+      newTransaction();
 
-    List processInstances = graphSession.findProcessInstances(processDefinition.getId());
-    assertEquals(0, processInstances.size());
-    
-    newTransaction();
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      List processInstances = graphSession.findProcessInstances(processDefinition.getId());
+      assertEquals(0, processInstances.size());
+
+      newTransaction();
+    }
+    finally {
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
   }
 
-  public void testDeleteProcessDefinition()
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>" + "  <start-state name='s' />" + "  <node name='n' />"
+  public void testDeleteProcessDefinition() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='deleteme'>"
+        + "  <start-state name='s' />"
+        + "  <node name='n' />"
         + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    jbpmContext.save(new ProcessInstance(processDefinition));
-    jbpmContext.save(new ProcessInstance(processDefinition));
-    jbpmContext.save(new ProcessInstance(processDefinition));
-    jbpmContext.save(new ProcessInstance(processDefinition));
 
-    newTransaction();
+    try {
+      jbpmContext.save(new ProcessInstance(processDefinition));
+      jbpmContext.save(new ProcessInstance(processDefinition));
+      jbpmContext.save(new ProcessInstance(processDefinition));
+      jbpmContext.save(new ProcessInstance(processDefinition));
 
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+      newTransaction();
+    }
+    finally {
+      graphSession.deleteProcessDefinition(processDefinition.getId());
+    }
 
     newTransaction();
 
-    assertEquals(0, graphSession.findAllProcessDefinitions().size());
+    assertEquals(0, graphSession.findAllProcessDefinitionVersions(processDefinition.getName()).size());
     assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
   }
 
-  public void testLatestProcessDefinitions()
-  {
+  public void testLatestProcessDefinitions() {
+    ensureCleanProcessDefinitionTable();
+
     ProcessDefinition websale = new ProcessDefinition("websale");
     jbpmContext.deployProcessDefinition(websale);
     jbpmContext.deployProcessDefinition(websale);
@@ -413,14 +442,23 @@
     graphSession.deleteProcessDefinition(changeNappy.getId());
   }
 
-  private int getVersionOfProcess(String name, List latestProcessDefinitions)
-  {
+  private void ensureCleanProcessDefinitionTable() {
+    List processDefinitions = session.createCriteria(ProcessDefinition.class).list();
+    if (!processDefinitions.isEmpty()) {
+      System.err.println("FIXME: "+ getClass().getName() + "." + getName() +
+          " found " + processDefinitions.size() + " process definitions left over");
+      for (Iterator i = processDefinitions.iterator(); i.hasNext();) {
+        ProcessDefinition processDefinition = (ProcessDefinition) i.next();
+        graphSession.deleteProcessDefinition(processDefinition);
+      }
+    }
+  }
+
+  private int getVersionOfProcess(String name, List latestProcessDefinitions) {
     Iterator iter = latestProcessDefinitions.iterator();
-    while (iter.hasNext())
-    {
-      ProcessDefinition processDefinition = (ProcessDefinition)iter.next();
-      if (name.equals(processDefinition.getName()))
-      {
+    while (iter.hasNext()) {
+      ProcessDefinition processDefinition = (ProcessDefinition) iter.next();
+      if (name.equals(processDefinition.getName())) {
         return processDefinition.getVersion();
       }
     }

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm522/JBPM522Test.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm522/JBPM522Test.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jbpm522/JBPM522Test.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -45,38 +45,47 @@
   public void testDeployProcess()
   {
     runTarget("deploy.process");
-    List processDefinitions = graphSession.findAllProcessDefinitions();
+    List processDefinitions = graphSession.findAllProcessDefinitionVersions("timerProcess");
     assertEquals(1, processDefinitions.size());
     ProcessDefinition processDefinition = (ProcessDefinition)processDefinitions.get(0);
     assertEquals("timerProcess", processDefinition.getName());
-    session.delete(processDefinition);
+    graphSession.deleteProcessDefinition(processDefinition);
   }
 
   public void testDeployBadProcess()
   {
     runTarget("deploy.bad.process");
-    List processDefinitions = graphSession.findAllProcessDefinitions();
+    List processDefinitions = graphSession.findAllProcessDefinitionVersions("sequential process");
     assertEquals(0, processDefinitions.size());
   }
 
   public void testDeployProcesses()
   {
     runTarget("deploy.processes");
-    List processDefinitions = graphSession.findAllProcessDefinitions();
-    assertEquals(2, processDefinitions.size());
+    List processDefinitions = graphSession.findAllProcessDefinitionVersions("classLoadingProcess");
+    assertEquals(1, processDefinitions.size());
     ProcessDefinition processDefinition = (ProcessDefinition)processDefinitions.get(0);
     assertEquals("classLoadingProcess", processDefinition.getName());
-    session.delete(processDefinition);
-    processDefinition = (ProcessDefinition)processDefinitions.get(1);
+    graphSession.deleteProcessDefinition(processDefinition);
+
+    processDefinitions = graphSession.findAllProcessDefinitionVersions("timerProcess");
+    assertEquals(1, processDefinitions.size());
+    processDefinition = (ProcessDefinition)processDefinitions.get(0);
     assertEquals("timerProcess", processDefinition.getName());
-    session.delete(processDefinition);
+    graphSession.deleteProcessDefinition(processDefinition);
   }
 
   public void testDeployProcessesIncludingBad()
   {
     runTarget("deploy.processes.including.bad");
-    List processDefinitions = graphSession.findAllProcessDefinitions();
+    List processDefinitions = graphSession.findAllProcessDefinitionVersions("timerProcess");
     assertEquals(0, processDefinitions.size());
+
+    processDefinitions = graphSession.findAllProcessDefinitionVersions("sequential process");
+    assertEquals(0, processDefinitions.size());
+
+    processDefinitions = graphSession.findAllProcessDefinitionVersions("classLoadingProces");
+    assertEquals(0, processDefinitions.size());
   }
 
   private static void runTarget(String target)

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -23,10 +23,6 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
@@ -37,10 +33,6 @@
 
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.exe.ProcessInstance;
-import org.jbpm.instantiation.ProcessClassLoader;
-import org.jbpm.taskmgmt.def.Task;
-import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
 import org.jbpm.util.ClassLoaderUtil;
 import org.jbpm.util.IoUtil;
 
@@ -70,7 +62,7 @@
     {
       newTransaction();
 
-      List allProcessDefinitions = graphSession.findAllProcessDefinitions();
+      List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName()); 
       assertEquals(1, allProcessDefinitions.size());
       
       processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
@@ -100,7 +92,7 @@
     {
       newTransaction();
 
-      List allProcessDefinitions = graphSession.findAllProcessDefinitions();
+      List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName());
       assertEquals(1, allProcessDefinitions.size());
       processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
       byte[] processBytes = processDefinition.getFileDefinition().getBytes("classes/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class");
@@ -135,12 +127,15 @@
     ProcessDefinition processDefinitionTwo = ProcessDefinition.parseParZipInputStream(zipInputStream);
     jbpmContext.deployProcessDefinition(processDefinitionTwo);
 
+    String processDefinitionName = processDefinitionTwo.getName();
+    assertEquals(processDefinitionName, processDefinitionOne.getName());
+
     newTransaction();
 
     try
     {
-      assertEquals(2, graphSession.findAllProcessDefinitions().size());
-      assertEquals(2, graphSession.findLatestProcessDefinition("the deployable process").getVersion());
+      assertEquals(2, graphSession.findAllProcessDefinitionVersions(processDefinitionName).size());
+      assertEquals(2, graphSession.findLatestProcessDefinition(processDefinitionName).getVersion());
     }
     finally
     {

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/xml/XmlSchemaTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/xml/XmlSchemaTest.java	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/xml/XmlSchemaTest.java	2008-11-07 02:04:01 UTC (rev 2788)
@@ -70,7 +70,7 @@
   }
 
   public void testMultipleNamespaces() {
-    JpdlParser.addSchemaResource("org/jbpm/jpdl/xml/files/sitemap.xsd");
+    JpdlParser.addSchemaResource("org/jbpm/jpdl/xml/sitemap.xsd");
     try {
       parseXmlForThisMethod();
       fail("expected exception");

Modified: jbpm3/trunk/modules/enterprise/jar/pom.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/jar/pom.xml	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/enterprise/jar/pom.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -258,7 +258,7 @@
             <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
               <excludes>
-                <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+                <!-- xa datasource not available for hsqldb -->
                 <exclude>org/jbpm/scheduler/ejbtimer/EjbSchedulerTest.java</exclude>
               </excludes>
             </configuration>
@@ -285,7 +285,7 @@
             <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
               <excludes>
-                <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+                <!-- xa datasource not available for hsqldb -->
                 <exclude>org/jbpm/scheduler/ejbtimer/EjbSchedulerTest.java</exclude>
               </excludes>
             </configuration>

Modified: jbpm3/trunk/modules/identity/pom.xml
===================================================================
--- jbpm3/trunk/modules/identity/pom.xml	2008-11-06 21:42:10 UTC (rev 2787)
+++ jbpm3/trunk/modules/identity/pom.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -88,12 +88,33 @@
           </execution>
         </executions>
       </plugin>
+
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
           <showDeprecation>false</showDeprecation>
         </configuration>
       </plugin>
+
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>schema</id>
+            <phase>process-test-resources</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks>
+                <property name="test.classpath" refid="maven.test.classpath" />
+                <property name="log4j.output.dir" location="${basedir}/target" />
+                <ant antfile="scripts/antrun-jbpm-schema.xml" target="create" />
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
\ No newline at end of file

Added: jbpm3/trunk/modules/identity/scripts/antrun-jbpm-schema.xml
===================================================================
--- jbpm3/trunk/modules/identity/scripts/antrun-jbpm-schema.xml	                        (rev 0)
+++ jbpm3/trunk/modules/identity/scripts/antrun-jbpm-schema.xml	2008-11-07 02:04:01 UTC (rev 2788)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--  JBoss, the OpenSource J2EE webOS                                      -->
+<!--                                                                        -->
+<!--  Distributable under LGPL license.                                     -->
+<!--  See terms of license at http://www.gnu.org.                           -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<!-- $Id: antrun-jbpm-config.xml 2611 2008-10-24 15:25:58Z thomas.diesler at jboss.com $ -->
+
+<project default="create">
+
+  <target name="create">
+    <taskdef resource="org/jbpm/ant/jbpm.ant.tasks.properties">
+      <classpath path="${test.classpath}" />
+    </taskdef>
+    <systemproperty key="log4j.output.dir" value="${log4j.output.dir}"/>
+    <jbpmschema />
+  </target>
+
+</project>
\ No newline at end of file




More information about the jbpm-commits mailing list