[jbpm-commits] JBoss JBPM SVN: r4342 - in jbpm4/branches/tbaeyens/modules: api/src/main/java/org/jbpm/session and 14 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Mar 27 09:19:48 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-03-27 09:19:48 -0400 (Fri, 27 Mar 2009)
New Revision: 4342

Removed:
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java
Modified:
   jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java
   jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java
   jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java
   jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java
   jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
   jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml
   jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
   jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
   jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
   jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
   jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
   jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml
   jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java
   jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml
Log:
revisiting deployment

Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinition.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -30,12 +30,6 @@
  */
 public interface ProcessDefinition extends Serializable {
 
-  /** the optional package name of this process.  This can be used to create 
-   * hierarchy of process categories for easy lookup.   This is a 
-   * similar way of grouping and creating a structure as in Java. 
-   * We recommend the same conventions as with Java package names. */
-  String getPackageName();
-
   /** the short display name given to this process definition. 
    * Multiple process definitions can have the same as long 
    * as they are given a different {@link #version}.  */
@@ -54,8 +48,4 @@
    * the same {@link ObservableElement#getId() name}. */ 
   int getVersion();
 
-  /** the description name given to this process definition. 
-   * Multiple process definitions can have the same */
-  String getDescription();
-
 }

Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/ProcessDefinitionQuery.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -28,17 +28,21 @@
  */
 public interface ProcessDefinitionQuery {
 
-  String PROPERTY_NAME = "name";
-  String PROPERTY_KEY = "key";
-  String PROPERTY_PACKAGENAME = "packageName";
-  String PROPERTY_VERSION = "version";
-  String PROPERTY_DEPLOYMENTTIME = "deploymentTime";
+  String PROPERTY_ID = "idProperty.stringValue";
+  String PROPERTY_KEY = "keyProperty.stringValue";
+  String PROPERTY_NAME = "idProperty.objectName";
+  String PROPERTY_VERSION = "versionProperty.longValue";
+  String PROPERTY_DEPLOYMENT_TIMESTAMP = "deployment.timestamp";
 
+  ProcessDefinitionQuery id(String id);
+  ProcessDefinitionQuery key(String key);
   ProcessDefinitionQuery nameLike(String name);
-  ProcessDefinitionQuery keyLike(String key);
 
   ProcessDefinitionQuery orderAsc(String property);
   ProcessDefinitionQuery orderDesc(String property);
+
+  ProcessDefinitionQuery page(int firstResult, int maxResults);
   
   List<ProcessDefinition> execute();
+  ProcessDefinition uniqueResult();
 }

Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/RepositoryService.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -35,4 +35,6 @@
 
   InputStream getResourceAsStream(long deploymentDbid, String resourceName);
 
+  ProcessDefinitionQuery createProcessDefinitionQuery();
+
 }
\ No newline at end of file

Modified: jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/api/src/main/java/org/jbpm/session/RepositorySession.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -25,6 +25,8 @@
 import java.util.List;
 
 import org.jbpm.Deployment;
+import org.jbpm.ProcessDefinitionQuery;
+import org.jbpm.client.ClientProcessDefinition;
 
 
 /**
@@ -36,9 +38,13 @@
 
   Object getObject(long deploymentDbid, String objectName);
 
+  InputStream getResourceAsStream(long deploymentDbid, String resourceName);
+
+  ProcessDefinitionQuery createProcessDefinitionQuery();
+
+  
   List<String> findObjectNames(String propertyKey, String propertyValue);
   List<String> findObjectPropertyValues(String objectName, String propertyKey);
   Object findObjectByPropertyValue(String propertyKey, String propertyValue);
-
-  InputStream getResourceAsStream(long deploymentDbid, String resourceName);
+  ClientProcessDefinition findLatestProcessDefinitionByKey(String processDefinitionKey);
 }

Modified: jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/distro/src/main/resources/config-tool/hibernate/mapping.files/jbpm.repository.hbm.xml	2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
                  index="IDX_DEPLPROP_DEPL" />
     <property name="objectName" column="OBJNAME_" />
     <property name="key" column="KEY_" />
-    <property name="value" column="VALUE_" />
+    <property name="stringValue" column="STRINGVAL_" />
+    <property name="longValue" column="LONGVAL_" />
   </class> 
 
 </hibernate-mapping>
\ No newline at end of file

Modified: jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/examples/src/test/resources/jbpm.repository.hbm.xml	2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
                  index="IDX_DEPLPROP_DEPL" />
     <property name="objectName" column="OBJNAME_" />
     <property name="key" column="KEY_" />
-    <property name="value" column="VALUE_" />
+    <property name="stringValue" column="STRINGVAL_" />
+    <property name="longValue" column="LONGVAL_" />
   </class> 
 
 </hibernate-mapping>
\ No newline at end of file

Modified: jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/integration/console/src/main/java/org/jbpm/integration/console/ModelAdaptor.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -49,10 +49,9 @@
     def.setId( p0.getId() );
     def.setName(p0.getName());
     def.setVersion(p0.getVersion());
-
     def.setKey( p0.getKey() );
-    def.setDescription(p0.getDescription());
-    def.setPackageName(p0.getPackageName());
+    // def.setDescription(p0.getDescription());
+    // def.setPackageName(p0.getPackageName());
     
     return def;
 

Modified: jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/repository/JpdlDeployer.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -24,6 +24,8 @@
 import java.io.InputStream;
 import java.util.List;
 
+import org.jbpm.ProcessDefinition;
+import org.jbpm.ProcessDefinitionQuery;
 import org.jbpm.env.Environment;
 import org.jbpm.internal.log.Log;
 import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
@@ -60,21 +62,25 @@
 
           processDefinition.setDeploymentDbid(deployment.getDbid());
 
-          String key = deployment.getObjectProperty(processDefinitionName, "jpdl.key");
-          if (key != null) {
-            String id = deployment.getObjectProperty(processDefinitionName, "jpdl.id");
+          if (deployment.hasObjectProperties(processDefinitionName)) {
+            String key = (String) deployment.getObjectProperty(processDefinitionName, "key");
+            String id = (String) deployment.getObjectProperty(processDefinitionName, "id");
+            String version = (String) deployment.getObjectProperty(processDefinitionName, "version");
             processDefinition.setId(id);
             processDefinition.setKey(key);
-            deployment.addObject(processDefinitionName, processDefinition);
+            processDefinition.setVersion(Integer.parseInt(version));
 
           } else {
             checkKey(processDefinition, deployment);
+            checkVersion(processDefinition, deployment);
             checkId(processDefinition, deployment);
 
-            deployment.addObject(processDefinitionName, processDefinition);
-            deployment.addObjectProperty(processDefinitionName, "jpdl.key", processDefinition.getKey());
-            deployment.addObjectProperty(processDefinitionName, "jpdl.id", processDefinition.getId());
+            deployment.addObjectProperty(processDefinitionName, "key", processDefinition.getKey());
+            deployment.addObjectProperty(processDefinitionName, "version", new Long(processDefinition.getVersion()));
+            deployment.addObjectProperty(processDefinitionName, "id", processDefinition.getId());
           }
+
+          deployment.addObject(processDefinitionName, processDefinition);
         }
       }
     }
@@ -111,8 +117,8 @@
   protected void checkId(ProcessDefinitionImpl processDefinition, DeploymentImpl deployment) {
     String id = processDefinition.getId();
     if (id==null) {
-      id = processDefinition.getKey()+"-"+deployment.getDbid();
-      log.trace("created id '"+id+"' for "+processDefinition);
+      id = processDefinition.getKey()+"-"+processDefinition.getVersion();
+      if (log.isTraceEnabled()) log.trace("created id '"+id+"' for "+processDefinition);
       processDefinition.setId(id);
     }
     
@@ -121,4 +127,27 @@
       deployment.addProblem("process '" + id + "' already exists");
     }
   }
+  
+  protected void checkVersion(ProcessDefinitionImpl processDefinition, DeploymentImpl deployment) {
+    int version = processDefinition.getVersion();
+    String key = processDefinition.getKey();
+    if (version==ProcessDefinitionImpl.UNASSIGNED_VERSION) {
+      RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
+      
+      ProcessDefinition latestDeployedVersion = repositorySession
+          .createProcessDefinitionQuery()
+          .key(key)
+          .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
+          .page(0, 1)
+          .uniqueResult();
+
+      if (latestDeployedVersion!=null) {
+        version = latestDeployedVersion.getVersion() + 1;
+      } else {
+        version = 1;
+      }
+      if (log.isTraceEnabled()) log.trace("assigning version "+version+" to process definition "+key);
+      processDefinition.setVersion(version);
+    }
+  }
 }

Modified: jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/jpdl/src/test/resources/jbpm.repository.hbm.xml	2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
                  index="IDX_DEPLPROP_DEPL" />
     <property name="objectName" column="OBJNAME_" />
     <property name="key" column="KEY_" />
-    <property name="value" column="VALUE_" />
+    <property name="stringValue" column="STRINGVAL_" />
+    <property name="longValue" column="LONGVAL_" />
   </class> 
 
 </hibernate-mapping>
\ No newline at end of file

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartExecutionInLatestCmd.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -56,7 +56,7 @@
     
     RepositorySession repositorySession = environment.get(RepositorySession.class);
     processDefinition = (ClientProcessDefinition) repositorySession
-          .findObjectByPropertyValue("jpdl.key", processDefinitionKey);
+          .findObjectByPropertyValue("key", processDefinitionKey);
 
     if (processDefinition==null) {
       throw new JbpmException("no process definition with key '"+processDefinitionKey+"'");

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -1024,7 +1024,7 @@
          && (processDefinitionId!=null) 
        ) {
       RepositorySession repositorySession = Environment.getFromCurrent(RepositorySession.class);
-      processDefinition = (ProcessDefinitionImpl) repositorySession.findObjectByPropertyValue("jpdl.id", processDefinitionId);
+      processDefinition = (ProcessDefinitionImpl) repositorySession.findObjectByPropertyValue("id", processDefinitionId);
       if (processDefinition==null) {
         throw new JbpmException("couldn't find process definition "+processDefinitionId+" in the repository");
       }

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/AbstractQuery.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -22,9 +22,11 @@
 package org.jbpm.pvm.internal.query;
 
 import java.io.ObjectStreamException;
+import java.util.List;
 
 import org.hibernate.Query;
 import org.hibernate.Session;
+import org.jbpm.ProcessDefinition;
 import org.jbpm.cmd.Command;
 import org.jbpm.cmd.CommandService;
 import org.jbpm.env.Environment;
@@ -37,6 +39,7 @@
 
   private static final long serialVersionUID = 1L;
   
+  protected Session session;
   protected CommandService commandService;
   protected String orderByClause = null;
   protected Page page = null;
@@ -46,6 +49,10 @@
     this.commandService = commandService;
   }
 
+  public AbstractQuery(Session session) {
+    this.session = session;
+  }
+
   protected abstract void applyParameters(Query query);
 
   public abstract String hql();
@@ -53,20 +60,31 @@
   /* reuse by copy and paste:
    * (return type can't be changed)
   public ConcreteQuery page(int firstResult, int maxResults) {
-    this.page = new Page{firstResult, maxResults};
+    this.page = new Page(firstResult, maxResults);
     return this;
   } 
   */
 
+  public List execute() {
+    if (commandService!=null) {
+      return (List) commandService.execute(this);
+    } 
+    return (List) execute(session); 
+  }
+
   public Object execute(Environment environment) throws Exception {
     Session session = environment.get(Session.class);
+    return execute(session);
+  }
+  
+  public Object execute(Session session) {
     String hql = hql();
     Query query = session.createQuery(hql);
     applyParameters(query);
     applyPage(query);
     return query.list();
   }
-  
+
   protected void appendWhereClause(String whereClause, StringBuffer hql) {
     if (isWhereAdded) {
       hql.append("  and ");

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/ProcessDefinitionQueryImpl.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -21,13 +21,21 @@
  */
 package org.jbpm.pvm.internal.query;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import org.hibernate.Query;
+import org.hibernate.Session;
+import org.jbpm.JbpmException;
 import org.jbpm.ProcessDefinition;
 import org.jbpm.ProcessDefinitionQuery;
 import org.jbpm.cmd.CommandService;
 import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.repository.DeploymentImpl;
+import org.jbpm.pvm.internal.repository.DeploymentProperty;
 
 
 /**
@@ -37,32 +45,85 @@
   
   private static final long serialVersionUID = 1L;
 
-  private static final String NEWLINE = System.getProperty("line.separator");
-  
+  protected String id;
+  protected String key;
   protected String nameLike;
-  protected String keyLike;
+  protected String versionSortDirection;
   
   public ProcessDefinitionQueryImpl(CommandService commandService) {
     super(commandService);
   }
 
-  public List<ProcessDefinition> execute() {
-    return (List) commandService.execute(this);
+  public ProcessDefinitionQueryImpl(Session session) {
+    super(session);
   }
 
+  public ProcessDefinition uniqueResult() {
+    List list = execute();
+    if (list.isEmpty()) {
+      return null;
+    }
+    if (list.size()>1) {
+      throw new JbpmException("result not unique: "+list.size());
+    }
+    return (ProcessDefinition) list.get(0);
+  }
+
+  public Object execute(Session session) {
+    List<Map<String, Object>> propertyMaps = (List<Map<String, Object>>) super.execute(session);
+    
+    List<ProcessDefinition> processDefinitions = new ArrayList<ProcessDefinition>();
+    for (Map<String, Object> properties: propertyMaps) {
+      ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
+      processDefinition.setName((String)properties.get("name"));
+      processDefinition.setKey((String)properties.get("key"));
+      processDefinition.setId((String)properties.get("id"));
+      Long versionLong = (Long)properties.get("version");
+      processDefinition.setVersion(versionLong.intValue());
+      
+      processDefinitions.add(processDefinition);
+    }
+    
+    return processDefinitions;
+  }
+
   public String hql() {
     StringBuffer hql = new StringBuffer();
-    hql.append("select pd ");
+    hql.append("select new map( idProperty.objectName as name, " +
+    		                   "idProperty.stringValue as id, " +
+    		                   "keyProperty.stringValue as key," +
+    		                   "versionProperty.longValue as version ) ");
     hql.append("from ");
-    hql.append(ProcessDefinitionImpl.class.getName());
-    hql.append(" as pd ");
+    hql.append(DeploymentImpl.class.getName());
+    hql.append(" as deployment, ");
+    hql.append(DeploymentProperty.class.getName());
+    hql.append(" as idProperty, ");
+    hql.append(DeploymentProperty.class.getName());
+    hql.append(" as keyProperty, ");
+    hql.append(DeploymentProperty.class.getName());
+    hql.append(" as versionProperty ");
+    
+    appendWhereClause("idProperty.key = 'id'", hql);
+    appendWhereClause("idProperty.deployment = deployment ", hql);
 
+    appendWhereClause("keyProperty.key = 'key' ", hql);
+    appendWhereClause("keyProperty.objectName = idProperty.objectName ", hql);
+    appendWhereClause("keyProperty.deployment = deployment ", hql);
+
+    appendWhereClause("versionProperty.key = 'version' ", hql);
+    appendWhereClause("versionProperty.objectName = idProperty.objectName ", hql);
+    appendWhereClause("versionProperty.deployment = deployment ", hql);
+
+    if (id!=null) {
+      appendWhereClause("idProperty = '"+id+"'", hql);
+    }
+
     if (nameLike!=null) {
-      appendWhereClause("pd.name like '"+nameLike+"'", hql);
+      appendWhereClause("idProperty.objectName like '"+nameLike+"' ", hql);
     }
 
-    if (keyLike!=null) {
-      appendWhereClause("pd.key like '"+keyLike+"'", hql);
+    if (key!=null) {
+      appendWhereClause("keyProperty.stringValue = '"+key+"' ", hql);
     }
     
     appendOrderByClause(hql);
@@ -73,23 +134,33 @@
   protected void applyParameters(Query query) {
   }
 
-  public ProcessDefinitionQuery nameLike(String name) {
-    this.nameLike = name;
+  public ProcessDefinitionQuery id(String id) {
+    this.id = id;
     return this;
   }
 
-  public ProcessDefinitionQuery keyLike(String key) {
-    this.keyLike = key;
+  public ProcessDefinitionQuery key(String key) {
+    this.key = key;
     return this;
   }
 
+  public ProcessDefinitionQuery nameLike(String name) {
+    this.nameLike = name;
+    return this;
+  }
+
   public ProcessDefinitionQuery orderAsc(String property) {
-    addOrderByClause("pd."+property+" asc");
+    addOrderByClause(property+" asc");
     return this;
   }
 
   public ProcessDefinitionQuery orderDesc(String property) {
-    addOrderByClause("pd."+property+" desc");
+    addOrderByClause(property+" desc");
     return this;
   }
+
+  public ProcessDefinitionQuery page(int firstResult, int maxResults) {
+    this.page = new Page(firstResult, maxResults);
+    return this;
+  } 
 }

Deleted: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployCmd.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -1,62 +0,0 @@
-/*
- * 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.pvm.internal.repository;
-
-import org.jbpm.JbpmException;
-import org.jbpm.cmd.Command;
-import org.jbpm.env.Environment;
-import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.repository.DeploymentImpl;
-import org.jbpm.session.RepositorySession;
-
-
-/**
- * @author Tom Baeyens
- */
-public class DeployCmd implements Command<Long> {
-
-  private static final long serialVersionUID = 1L;
-  
-  private static Log log = Log.getLog(DeployCmd.class.getName());
-  
-  DeploymentImpl deployment;
-  
-  public DeployCmd(DeploymentImpl deployment) {
-    this.deployment = deployment;
-  }
-
-  public Long execute(Environment environment) throws Exception {
-    RepositorySession repositorySession = environment.get(RepositorySession.class);
-    long deploymentDbid = repositorySession.deploy(deployment);
-    
-    if (deployment.hasProblems()) {
-      String problemsText = deployment.getProblemsText();
-      if (problemsText!=null) {
-        String errorMsg = "problems during deployment of "+deployment+": "+problemsText;
-        log.info(errorMsg);
-        throw new JbpmException(errorMsg);
-      }
-    }
-    
-    return deploymentDbid;
-  }
-}

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeployerManager.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -31,10 +31,9 @@
   
   List<Deployer> deployers;
   
-  public Object deploy(DeploymentImpl deployment) {
+  public void deploy(DeploymentImpl deployment) {
     for (Deployer deployer: deployers) {
       deployer.deploy(deployment);
     }
-    return null;
   }
 }

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentImpl.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -146,14 +146,16 @@
     objects.put(objectName, object);
   }
 
-  public void addObjectProperty(String objectName, String key, String value) {
+  public void addObjectProperty(String objectName, String key, Object value) {
     if (objectProperties==null) {
       objectProperties = new HashSet<DeploymentProperty>();
     }
-    objectProperties.add(new DeploymentProperty(this, objectName, key, value));
+    DeploymentProperty deploymentProperty = new DeploymentProperty(this, objectName, key);
+    deploymentProperty.setValue(value);
+    objectProperties.add(deploymentProperty);
   }
 
-  public String getObjectProperty(String objectName, String key) {
+  public Object getObjectProperty(String objectName, String key) {
     if (objectProperties!=null) {
       for (DeploymentProperty deploymentProperty: objectProperties) {
         if ( (deploymentProperty.getObjectName().equals(objectName))
@@ -166,6 +168,17 @@
     return null;
   }
 
+  public boolean hasObjectProperties(String objectName) {
+    if (objectProperties!=null) {
+      for (DeploymentProperty deploymentProperty: objectProperties) {
+        if (deploymentProperty.getObjectName().equals(objectName)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   protected Object writeReplace() throws ObjectStreamException {
     commandService = null;
     return this;

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/DeploymentProperty.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -23,7 +23,9 @@
 
 import java.io.Serializable;
 
+import org.jbpm.JbpmException;
 
+
 /**
  * @author Tom Baeyens
  */
@@ -35,20 +37,20 @@
   protected DeploymentImpl deployment;
   protected String objectName;
   protected String key;
-  protected String value;
+  protected String stringValue;
+  protected Long longValue;
   
   public DeploymentProperty() {
   }
   
-  public DeploymentProperty(DeploymentImpl deployment, String objectName, String key, String value) {
+  public DeploymentProperty(DeploymentImpl deployment, String objectName, String key) {
     this.deployment = deployment;
     this.objectName = objectName;
     this.key = key;
-    this.value = value;
   }
   
   public String toString() {
-    return "{"+objectName+","+key+","+value+"}";
+    return "{"+objectName+","+key+","+(stringValue!=null?stringValue:longValue)+"}";
   }
 
   public String getObjectName() {
@@ -57,10 +59,39 @@
   public String getKey() {
     return key;
   }
-  public String getValue() {
-    return value;
-  }
   public DeploymentImpl getDeployment() {
     return deployment;
   }
+  public String getStringValue() {
+    return stringValue;
+  }
+  public Long getLongValue() {
+    return longValue;
+  }
+  public void setStringValue(String stringValue) {
+    this.stringValue = stringValue;
+  }
+  public void setLongValue(Long longValue) {
+    this.longValue = longValue;
+  }
+
+  public void setValue(Object value) {
+    if (value==null) {
+      stringValue = null;
+      longValue = null;
+    } else if (value instanceof String) {
+      stringValue = (String)value;
+    } else if (value instanceof Long) {
+      longValue = (Long)value;
+    } else {
+      throw new JbpmException("value type "+value.getClass().getName()+" not supported (only string and long)");
+    }
+  }
+  
+  public Object getValue() {
+    if (stringValue!=null) {
+      return stringValue;
+    }
+    return longValue;
+  }
 }

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositoryServiceImpl.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -24,9 +24,11 @@
 import java.io.InputStream;
 
 import org.jbpm.Deployment;
+import org.jbpm.ProcessDefinitionQuery;
 import org.jbpm.RepositoryService;
 import org.jbpm.cmd.CommandService;
 import org.jbpm.pvm.internal.cmd.GetResourceAsStream;
+import org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl;
 
 /**
  * @author Tom Baeyens
@@ -45,4 +47,8 @@
   public InputStream getResourceAsStream(long deploymentDbid, String resource) {
     return commandService.execute(new GetResourceAsStream(deploymentDbid, resource));
   }
+
+  public ProcessDefinitionQuery createProcessDefinitionQuery() {
+    return new ProcessDefinitionQueryImpl(commandService);
+  }
 }

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/RepositorySessionImpl.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -29,7 +29,10 @@
 import org.jbpm.Deployment;
 import org.jbpm.JbpmException;
 import org.jbpm.Problem;
+import org.jbpm.ProcessDefinitionQuery;
+import org.jbpm.client.ClientProcessDefinition;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl;
 import org.jbpm.session.RepositorySession;
 
 /**
@@ -39,9 +42,9 @@
   
   private static Log log = Log.getLog(RepositorySessionImpl.class.getName());
   
-  Session session;
-  RepositoryCache repositoryCache;
-  DeployerManager deployerManager;
+  protected Session session;
+  protected RepositoryCache repositoryCache;
+  protected DeployerManager deployerManager;
 
   public long deploy(Deployment deployment) {
     DeploymentImpl deploymentImpl = (DeploymentImpl) deployment;
@@ -89,15 +92,30 @@
     }
     return object;
   }
+  
+  public InputStream getResourceAsStream(long deploymentDbid, String resourceName) {
+    DeploymentImpl deployment = getDeployment(deploymentDbid);
+    if (deployment==null) {
+      throw new JbpmException("deployment "+deploymentDbid+" doesn't exist");
+    }
+    return deployment.getResourceAsStream(resourceName);
+  }
 
+  // queries //////////////////////////////////////////////////////////////////
+  
+  public ProcessDefinitionQuery createProcessDefinitionQuery() {
+    return new ProcessDefinitionQueryImpl(session);
+  }
+
+
   public Object findObjectByPropertyValue(String key, String value) {
     DeploymentProperty deploymentProperty = (DeploymentProperty) session.createQuery(
       "select deploymentProperty " +
       "from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
       "where deploymentProperty.key = '"+key+"' " +
-      "  and deploymentProperty.value = '"+value+"' " +
+      "  and deploymentProperty.stringValue = '"+value+"' " +
       "order by deploymentProperty.deployment.timestamp desc "
-    ).uniqueResult();
+    ).setMaxResults(1).uniqueResult();
     
     if (deploymentProperty!=null) {
       long deploymentDbid = deploymentProperty.getDeployment().getDbid();
@@ -114,24 +132,20 @@
       "select distinct deploymentProperty.objectName " +
       "from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
       "where deploymentProperty.key = '"+key+"' " +
-      "  and deploymentProperty.value = '"+value+"' "
+      "  and deploymentProperty.stringValue = '"+value+"' "
     ).list();
   }
 
   public List<String> findObjectPropertyValues(String objectName, String key) {
     return session.createQuery(
-      "select distinct deploymentProperty.value " +
+      "select distinct deploymentProperty.stringValue " +
       "from "+DeploymentProperty.class.getName()+" as deploymentProperty " +
       "where deploymentProperty.objectName = '"+objectName+"' " +
       "  and deploymentProperty.key = '"+key+"' "
     ).list();
   }
 
-  public InputStream getResourceAsStream(long deploymentDbid, String resourceName) {
-    DeploymentImpl deployment = getDeployment(deploymentDbid);
-    if (deployment==null) {
-      throw new JbpmException("deployment "+deploymentDbid+" doesn't exist");
-    }
-    return deployment.getResourceAsStream(resourceName);
+  public ClientProcessDefinition findLatestProcessDefinitionByKey(String processDefinitionKey) {
+    return (ClientProcessDefinition) findObjectByPropertyValue("key", processDefinitionKey);
   }
 }

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -297,7 +297,7 @@
             
             if (autoWireValue!=null) {
               try {
-                log.debug("auto wiring field "+fieldName+" in "+name);
+                if (log.isTraceEnabled()) log.trace("auto wiring field "+fieldName+" in "+name);
                 ReflectUtil.set(field, object, autoWireValue);
               } catch (JbpmException e) {
                 if(e.getCause() instanceof IllegalArgumentException) {

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -36,20 +36,6 @@
  */
 public class BuilderTest extends BaseJbpmTestCase {
   
-  public void testBuilderProcessDefinitionProperties() {
-    ClientProcessDefinition processDefinition = ProcessDefinitionBuilder
-    .startProcess("p")
-      .key("k")
-      .version(5)
-      .description("the description")
-    .endProcess();
-    
-    assertEquals("p", processDefinition.getName());
-    assertEquals("k", processDefinition.getKey());
-    assertEquals(5, processDefinition.getVersion());
-    assertEquals("the description", processDefinition.getDescription());
-  }
-
   public void testBuilderInitialActivity() {
     ClientProcessDefinition processDefinition = ProcessDefinitionBuilder
     .startProcess("p")

Modified: jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/pvm/src/test/resources/jbpm.repository.hbm.xml	2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
                  index="IDX_DEPLPROP_DEPL" />
     <property name="objectName" column="OBJNAME_" />
     <property name="key" column="KEY_" />
-    <property name="value" column="VALUE_" />
+    <property name="stringValue" column="STRINGVAL_" />
+    <property name="longValue" column="LONGVAL_" />
   </class> 
 
 </hibernate-mapping>
\ No newline at end of file

Modified: jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java
===================================================================
--- jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/test-db/src/test/java/org/jbpm/test/process/ProcessDefinitionQueryTest.java	2009-03-27 13:19:48 UTC (rev 4342)
@@ -72,7 +72,7 @@
       "</process>"
     );
 
-    List<ProcessDefinition> processDefinitions = processService.createProcessDefinitionQuery()
+    List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
       .nameLike("%make%")
       .orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)
       .execute();
@@ -125,15 +125,14 @@
       "</process>"
     );
 
-    List<ProcessDefinition> processDefinitions = processService.createProcessDefinitionQuery()
-      .keyLike("make%")
-      .orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)
-      .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)
+    List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
+      .nameLike("make%")
+      .orderAsc(ProcessDefinitionQuery.PROPERTY_ID)
       .execute();
 
-    assertEquals("make_friends-3", processDefinitions.get(0).getId());
+    assertEquals("make_friends-1", processDefinitions.get(0).getId());
     assertEquals("make_friends-2", processDefinitions.get(1).getId());
-    assertEquals("make_friends-1", processDefinitions.get(2).getId());
+    assertEquals("make_friends-3", processDefinitions.get(2).getId());
     assertEquals("make_print-1",   processDefinitions.get(3).getId());
   }
 }

Modified: jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml
===================================================================
--- jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml	2009-03-26 21:46:59 UTC (rev 4341)
+++ jbpm4/branches/tbaeyens/modules/test-db/src/test/resources/jbpm.repository.hbm.xml	2009-03-27 13:19:48 UTC (rev 4342)
@@ -43,7 +43,8 @@
                  index="IDX_DEPLPROP_DEPL" />
     <property name="objectName" column="OBJNAME_" />
     <property name="key" column="KEY_" />
-    <property name="value" column="VALUE_" />
+    <property name="stringValue" column="STRINGVAL_" />
+    <property name="longValue" column="LONGVAL_" />
   </class> 
 
 </hibernate-mapping>
\ No newline at end of file




More information about the jbpm-commits mailing list