[jboss-svn-commits] JBL Code SVN: r21900 - in labs/jbossrules/trunk/drools-process/drools-process-task: src/main/java/org/drools and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 26 02:22:52 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-08-26 02:22:51 -0400 (Tue, 26 Aug 2008)
New Revision: 21900

Added:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AccessType.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Allowed.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/BooleanExpression.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Comment.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadline.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadlines.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Delegation.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Escalation.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Group.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/IL8NText.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Notification.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/NotificationPresentationElements.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/OrganizationalEntity.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/PeopleAssignments.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Reassignment.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Status.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/StatusChange.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Task.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskPresentationElements.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/User.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/utils/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/utils/CollectionUtils.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/TestModelPersistence.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.xml
Removed:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/ws_ht/
Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/.classpath
   labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
Log:
JBRULES-1745 WS-Human-Task
-dumped JAXB/Hyperjaxb as db model was too bad
-Created custom pojo model with full round trip testing

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/.classpath	2008-08-26 05:21:22 UTC (rev 21899)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/.classpath	2008-08-26 06:22:51 UTC (rev 21900)
@@ -5,22 +5,22 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.6/jaxb-impl-2.1.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.77/h2-1.0.77.jar"/>
+  <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.2/slf4j-api-1.5.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.0.SP1/hibernate-core-3.3.0.SP1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/2.0-dp4/mvel-2.0-dp4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.1-b1/stringtemplate-3.1-b1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.10/janino-2.5.10.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jvnet/hyperjaxb3/hyperjaxb3-ejb-runtime/0.3/hyperjaxb3-ejb-runtime-0.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/jvnet/jaxb2_commons/runtime/0.2.GA/runtime-0.2.GA.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml	2008-08-26 05:21:22 UTC (rev 21899)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/pom.xml	2008-08-26 06:22:51 UTC (rev 21900)
@@ -1,72 +1,57 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>drools</artifactId>
-    <groupId>org.drools</groupId>
-    <version>5.0.0.SNAPSHOT</version>
-  </parent>
-
-  <artifactId>drools-process-task</artifactId>
-  <packaging>jar</packaging>
-  <name>Drools :: Process :: Task</name>
-  
-    <repositories>
-    	<repository>
-    		<id>maven2-repository.dev.java.net</id>
-    		<url>http://download.java.net/maven/2</url>
-    	</repository>
-    	<repository>
-    		<id>maven-repository.dev.java.net</id>
-    		<url>http://download.java.net/maven/1</url>
-    		<layout>legacy</layout>
-    	</repository>
-    	<repository>
-    		<id>maven2-repository.jboss.com</id>
-    		<url>http://repository.jboss.com/maven2</url>
-    	</repository>
-    	<repository>
-    		<id>jfrog.org</id>
-    		<url>http://www.jfrog.org/artifactory/plugins-releases@repo</url>
-    	</repository>
-    </repositories>
-    <pluginRepositories>
-    	<pluginRepository>
-    		<id>maven2-repository.dev.java.net</id>
-    		<url>http://download.java.net/maven/2</url>
-    	</pluginRepository>
-    	<pluginRepository>
-    		<id>maven-repository.dev.java.net</id>
-    		<url>http://download.java.net/maven/1</url>
-    		<layout>legacy</layout>
-    	</pluginRepository>
-    </pluginRepositories>  
-  
-      <dependencies>
-         <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-core</artifactId>
-            <version>${project.version}</version>  
-         </dependency>                     
-
-         <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-compiler</artifactId>
-            <version>${project.version}</version>  
-            <scope>test</scope>
-         </dependency>   
-         
-    	<dependency>
-    		<groupId>com.sun.xml.bind</groupId>
-    		<artifactId>jaxb-impl</artifactId>
-    		<version>2.1.6</version>
-    	</dependency>
-    	<dependency>
-    		<groupId>org.jvnet.hyperjaxb3</groupId>
-    		<artifactId>hyperjaxb3-ejb-runtime</artifactId>
-    		<version>0.3</version>
-    	</dependency>         
-      </dependencies>            
-         
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>drools</artifactId>
+    <groupId>org.drools</groupId>
+    <version>5.0.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-process-task</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Process :: Task</name> 
+    
+      <dependencies> 	        
+    	
+    	<dependency>
+    		<groupId>org.slf4j</groupId>
+    		<artifactId>slf4j-jdk14</artifactId>
+    		<version>1.5.2</version>
+    	</dependency>     	       	
+
+    	<dependency>
+    		<groupId>org.slf4j</groupId>
+    		<artifactId>slf4j-api</artifactId>
+    		<version>1.5.2</version>
+    	</dependency>          	 
+   	
+    	<!-- Hibernate -->
+    	<dependency>
+    		<groupId>org.hibernate</groupId>
+    		<artifactId>hibernate-entitymanager</artifactId>
+    		<version>3.4.0.GA</version>
+    		<scope>test</scope>
+    	</dependency>
+    	<!-- HSQLDB -->
+    	<dependency>
+    		<groupId>com.h2database</groupId>
+    		<artifactId>h2</artifactId>
+    		<version>1.0.77</version>
+    		<scope>test</scope>
+    	</dependency>    	
+    	  
+        <dependency>
+            <groupId>com.thoughtworks.xstream</groupId>
+            <artifactId>xstream</artifactId>
+            <scope>test</scope>
+        </dependency>    
+        
+        <dependency>
+            <groupId>org.mvel</groupId>
+            <artifactId>mvel</artifactId>
+            <scope>test</scope>
+        </dependency>              	  
+      </dependencies>              
+                  
+</project>

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AccessType.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AccessType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AccessType.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,8 @@
+/**
+ * 
+ */
+package org.drools.task;
+
+public enum AccessType {
+    Inline, Url;
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Allowed.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Allowed.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Allowed.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,8 @@
+/**
+ * 
+ */
+package org.drools.task;
+
+public enum Allowed {
+    Anybody, Nobody, PotentialOwners, Other;
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,140 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.OneToOne;
+
+ at Entity
+public class Attachment implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long   id;
+
+    /**
+     * Several attachments may have the same name
+     */
+    private String name;
+
+    /**
+     * current "inline" and "URL" are allowed, this is extendable though and others may be added
+     */
+    private AccessType accessType;
+
+    /**
+     * MIME type
+     */
+    private String contentType;
+
+    private Date   attachedAt;
+
+    @OneToOne
+    private User   attachedBy;
+
+    @Lob
+    private byte[] attachment;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public AccessType getAccessType() {
+        return accessType;
+    }
+
+    public void setAccessType(AccessType accessType) {
+        this.accessType = accessType;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    public Date getAttachedAt() {
+        return attachedAt;
+    }
+
+    public void setAttachedAt(Date attachedAt) {
+        this.attachedAt = attachedAt;
+    }
+
+    public User getAttachedBy() {
+        return attachedBy;
+    }
+
+    public void setAttachedBy(User attachedBy) {
+        this.attachedBy = attachedBy;
+    }
+
+    public byte[] getAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(byte[] attachment) {
+        this.attachment = attachment;
+    }        
+    
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((accessType == null) ? 0 : accessType.hashCode());
+        result = prime * result + ((attachedAt == null) ? 0 : attachedAt.hashCode());
+        result = prime * result + ((attachedBy == null) ? 0 : attachedBy.hashCode());
+        result = prime * result + Arrays.hashCode( attachment );
+        result = prime * result + ((contentType == null) ? 0 : contentType.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Attachment) ) return false;
+        Attachment other = (Attachment) obj;
+        if ( accessType == null ) {
+            if ( other.accessType != null ) return false;
+        } else if ( !accessType.equals( other.accessType ) ) return false;
+        if ( attachedAt == null ) {
+            if ( other.attachedAt != null ) return false;            
+        } else if ( attachedAt.getTime() != other.attachedAt.getTime() ) return false;
+        if ( attachedBy == null ) {
+            if ( other.attachedBy != null ) return false;
+        } else if ( !attachedBy.equals( other.attachedBy ) ) return false;
+        if ( !Arrays.equals( attachment,
+                             other.attachment ) ) return false;
+        if ( contentType == null ) {
+            if ( other.contentType != null ) return false;
+        } else if ( !contentType.equals( other.contentType ) ) return false;
+        if ( name == null ) {
+            if ( other.name != null ) return false;
+        } else if ( !name.equals( other.name ) ) return false;
+        return true;
+    }
+    
+    
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/BooleanExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/BooleanExpression.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/BooleanExpression.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,79 @@
+package org.drools.task;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+
+ at Entity
+public class BooleanExpression implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long   id;
+    private String type;
+    
+    @Lob
+    private String expression;
+    
+    public BooleanExpression() {
+        
+    }
+    
+    public BooleanExpression(String type, String expression) {
+        this.type = type;
+        this.expression = expression;        
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getExpression() {
+        return expression;
+    }
+
+    public void setExpression(String expression) {
+        this.expression = expression;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((expression == null) ? 0 : expression.hashCode());
+        result = prime * result + ((type == null) ? 0 : type.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof BooleanExpression) ) return false;
+        BooleanExpression other = (BooleanExpression) obj;
+        if ( expression == null ) {
+            if ( other.expression != null ) return false;
+        } else if ( !expression.equals( other.expression ) ) return false;
+        if ( type == null ) {
+            if ( other.type != null ) return false;
+        } else if ( !type.equals( other.type ) ) return false;
+        return true;
+    }
+
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Comment.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Comment.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Comment.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,88 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.OneToOne;
+
+ at Entity
+public class Comment implements Serializable  {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    @Lob
+    private String text;
+    
+    private Date addedDate;
+    
+    @OneToOne
+    private User addedBy;
+    
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public Date getAddedDate() {
+        return addedDate;
+    }
+
+    public void setAddedDate(Date addedDate) {
+        this.addedDate = addedDate;
+    }
+
+    public User getAddedBy() {
+        return addedBy;
+    }
+
+    public void setAddedBy(User addedBy) {
+        this.addedBy = addedBy;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((addedBy == null) ? 0 : addedBy.hashCode());
+        result = prime * result + ((addedDate == null) ? 0 : addedDate.hashCode());
+        result = prime * result + ((text == null) ? 0 : text.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Comment) ) return false;
+        Comment other = (Comment) obj;
+        if ( addedBy == null ) {
+            if ( other.addedBy != null ) return false;
+        } else if ( !addedBy.equals( other.addedBy ) ) return false;
+        if ( addedDate == null ) {
+            if ( other.addedDate != null ) return false;
+        } else if ( addedDate.getTime() != other.addedDate.getTime() ) return false;
+        if ( text == null ) {
+            if ( other.text != null ) return false;
+        } else if ( !text.equals( other.text ) ) return false;
+        return true;
+    }    
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadline.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadline.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadline.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,90 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Entity
+public class Deadline implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)    
+    private long             id;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Deadline_Documentation_Id", nullable = true)     
+    private List<IL8NText>   documentation = Collections.emptyList();
+
+    private Date             date;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Deadline_Escalation_Id", nullable = true)    
+    private List<Escalation> escalations = Collections.emptyList();
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public List<IL8NText> getDocumentation() {
+        return documentation;
+    }
+
+    public void setDocumentation(List<IL8NText> documentation) {
+        this.documentation = documentation;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public List<Escalation> getEscalations() {
+        return escalations;
+    }
+
+    public void setEscalations(List<Escalation> escalations) {
+        this.escalations = escalations;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((date == null) ? 0 : date.hashCode());
+        result = prime * result + CollectionUtils.hashCode( documentation );
+        result = prime * result + CollectionUtils.hashCode( escalations );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Deadline) ) return false;
+        Deadline other = (Deadline) obj;
+        if ( date == null ) {
+            if ( other.date != null ) return false;
+        } else if ( date.getTime() != other.date.getTime() ) return false;
+        
+        return CollectionUtils.equals( documentation, other.documentation ) && CollectionUtils.equals( escalations, other.escalations );
+    }
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadlines.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadlines.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Deadlines.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,60 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class Deadlines implements Serializable {    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Deadlines_StartDeadLine_Id", nullable = true)    
+    private List<Deadline> startDeadlines = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Deadlines_EndDeadLine_Id", nullable = true)    
+    private List<Deadline> endDeadlines  = Collections.emptyList();       
+      
+    public List<Deadline> getStartDeadlines() {
+        return startDeadlines;
+    }
+    
+    public void setStartDeadlines(List<Deadline> startDeadlines) {
+        this.startDeadlines = startDeadlines;
+    }
+    
+    public List<Deadline> getEndDeadLines() {
+        return endDeadlines;
+    }
+    
+    public void setEndDeadlines(List<Deadline> endDeadlines) {
+        this.endDeadlines = endDeadlines;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( endDeadlines );
+        result = prime * result + CollectionUtils.hashCode( startDeadlines );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Deadlines) ) return false;
+        Deadlines other = (Deadlines) obj;       
+        
+        return CollectionUtils.equals( endDeadlines, other.endDeadlines ) && CollectionUtils.equals( startDeadlines, other.startDeadlines );
+    }
+                   
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Delegation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Delegation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Delegation.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,67 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.Embeddable;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class Delegation implements Serializable {
+    @Enumerated(EnumType.STRING)      
+    private Allowed                    allowed;
+    
+    @OneToMany
+    @JoinColumn(name = "Delegates_Id", nullable = true)
+    private List<OrganizationalEntity> delegates = Collections.emptyList();
+
+    public Allowed getAllowed() {
+        return allowed;
+    }    
+    
+    public void setAllowed(Allowed allowed) {
+        this.allowed = allowed;
+    }
+
+    public List<OrganizationalEntity> getDelegates() {
+        return delegates;
+    }
+    
+
+    public void setDelegates(List<OrganizationalEntity> delegates) {
+        this.delegates = delegates;
+    }    
+    
+    
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((allowed == null) ? 0 : allowed.hashCode());
+        result = prime * result + CollectionUtils.hashCode( delegates );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Delegation) ) return false;
+        Delegation other = (Delegation) obj;
+        if ( allowed == null ) {
+            if ( other.allowed != null ) return false;
+        } else if ( !allowed.equals( other.allowed ) ) return false;
+        
+        return CollectionUtils.equals( delegates, other.delegates );
+    }
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Escalation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Escalation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Escalation.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,109 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Entity
+public class Escalation
+    implements
+    Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long                    id;
+
+    private String                  name;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Escalation_Constraints_Id", nullable = true)
+    private List<BooleanExpression> constraints   = Collections.emptyList();
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Escalation_Notifications_Id", nullable = true)
+    private List<Notification>      notifications = Collections.emptyList();
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Escalation_Reassignments_Id", nullable = true)
+    private List<Reassignment>      reassignments = Collections.emptyList();
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public List<BooleanExpression> getConstraints() {
+        return constraints;
+    }
+
+    public void setConstraints(List<BooleanExpression> constraints) {
+        this.constraints = constraints;
+    }
+
+    public List<Notification> getNotifications() {
+        return notifications;
+    }
+
+    public void setNotifications(List<Notification> notifications) {
+        this.notifications = notifications;
+    }
+
+    public List<Reassignment> getReassignments() {
+        return reassignments;
+    }
+
+    public void setReassignments(List<Reassignment> reassignments) {
+        this.reassignments = reassignments;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( constraints );
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + CollectionUtils.hashCode( notifications );
+        result = prime * result + CollectionUtils.hashCode( reassignments );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Escalation) ) return false;
+        Escalation other = (Escalation) obj;
+
+        if ( name == null ) {
+            if ( other.name != null ) return false;
+        } else if ( !name.equals( other.name ) ) return false;
+
+        return CollectionUtils.equals( constraints,
+                                       other.constraints ) && CollectionUtils.equals( notifications,
+                                                                                      other.notifications ) && CollectionUtils.equals( reassignments,
+                                                                                                                                       other.reassignments );
+
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Group.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Group.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Group.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,55 @@
+package org.drools.task;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+ at Entity
+public class Group extends OrganizationalEntity implements Serializable {    
+      private String name;
+      
+      public Group() {
+          
+      }
+      
+      public Group(String name) {
+          this.name = name;
+      }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Group) ) return false;
+        Group other = (Group) obj;
+        if ( name == null ) {
+            if ( other.name != null ) return false;
+        } else if ( !name.equals( other.name ) ) return false;
+        return true;
+    }
+
+
+      
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/IL8NText.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/IL8NText.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/IL8NText.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,82 @@
+package org.drools.task;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+
+ at Entity
+public class IL8NText implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long   id;
+
+    private String language;
+
+    @Lob
+    private String text;
+
+    public IL8NText() {
+
+    }
+
+    public IL8NText(String language,
+                    String text) {
+        this.language = language;
+        this.text = text;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((language == null) ? 0 : language.hashCode());
+        result = prime * result + ((text == null) ? 0 : text.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof IL8NText) ) return false;
+        IL8NText other = (IL8NText) obj;
+        if ( language == null ) {
+            if ( other.language != null ) return false;
+        } else if ( !language.equals( other.language ) ) return false;
+        if ( text == null ) {
+            if ( other.text != null ) return false;
+        } else if ( !text.equals( other.text ) ) return false;
+        return true;
+    }
+
+
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Notification.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Notification.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Notification.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,119 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.AttributeOverride;
+import javax.persistence.CascadeType;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.PrimaryKeyJoinColumn;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Entity
+public class Notification implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long                             id;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Notification_Documentation_Id", nullable = true)
+    private List<IL8NText>                   documentation = Collections.emptyList();
+
+    private int                              priority;
+
+    @OneToMany
+    @JoinColumn(name = "Notification_Recipients_Id", nullable = true)
+    private List<OrganizationalEntity>       recipients = Collections.emptyList();;
+
+    @OneToMany
+    @JoinColumn(name = "Notification_BusinessAdministrators_Id", nullable = true)
+    private List<OrganizationalEntity>       businessAdministrators = Collections.emptyList();
+
+    @Embedded
+    private NotificationPresentationElements presentationElements;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public List<IL8NText> getDocumentation() {
+        return documentation;
+    }
+
+    public void setDocumentation(List<IL8NText> documentation) {
+        this.documentation = documentation;
+    }
+
+    public int getPriority() {
+        return priority;
+    }
+
+    public void setPriority(int priority) {
+        this.priority = priority;
+    }
+
+    public List<OrganizationalEntity> getRecipients() {
+        return recipients;
+    }
+
+    public void setRecipients(List<OrganizationalEntity> recipients) {
+        this.recipients = recipients;
+    }
+
+    public List<OrganizationalEntity> getBusinessAdministrators() {
+        return businessAdministrators;
+    }
+
+    public void setBusinessAdministrators(List<OrganizationalEntity> businessAdministrators) {
+        this.businessAdministrators = businessAdministrators;
+    }
+
+    public NotificationPresentationElements getNotificationPresentationElements() {
+        return presentationElements;
+    }
+
+    public void setNotificationPresentationElements(NotificationPresentationElements presentationElements) {
+        this.presentationElements = presentationElements;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( businessAdministrators );
+        result = prime * result + CollectionUtils.hashCode( documentation );
+        result = prime * result + ((presentationElements == null) ? 0 : presentationElements.hashCode());
+        result = prime * result + priority;
+        result = prime * result + CollectionUtils.hashCode( recipients );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Notification) ) return false;
+        Notification other = (Notification) obj;
+        
+        if ( presentationElements == null ) {
+            if ( other.presentationElements != null ) return false;
+        } else if ( !presentationElements.equals( other.presentationElements ) ) return false;
+        
+        return CollectionUtils.equals( businessAdministrators, other.businessAdministrators ) && CollectionUtils.equals( documentation, other.documentation )
+        && CollectionUtils.equals( recipients, other.recipients );
+    }
+                
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/NotificationPresentationElements.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/NotificationPresentationElements.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/NotificationPresentationElements.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,86 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class NotificationPresentationElements implements Serializable {
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "NotificationPresentationElements_Names_Id", nullable = true)    
+    private List<IL8NText> names        = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "NotificationPresentationElements_Subjects_Id", nullable = true)    
+    private List<IL8NText> subjects     = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "NotificationPresentationElements_Descriptions_Id", nullable = true)
+    private List<IL8NText> descriptions = Collections.emptyList();  
+    
+    public NotificationPresentationElements() {
+        
+    }
+
+
+    public List<IL8NText> getNames() {
+        return names;
+    }
+
+    public void setNames(List<IL8NText> names) {
+        this.names = names;
+    }
+
+    public List<IL8NText> getSubjects() {
+        return subjects;
+    }
+
+    public void setSubjects(List<IL8NText> subjects) {
+        this.subjects = subjects;
+    }
+    
+    public List<IL8NText> getDescriptions() {
+        return descriptions;
+    }
+
+    public void setDescriptions(List<IL8NText> descriptions) {
+        this.descriptions = descriptions;
+    }
+
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( descriptions );
+        result = prime * result + CollectionUtils.hashCode( names );
+        result = prime * result + CollectionUtils.hashCode( subjects );
+        return result;
+    }
+
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof NotificationPresentationElements) ) return false;
+        NotificationPresentationElements other = (NotificationPresentationElements) obj;
+        
+        return CollectionUtils.equals( descriptions, other.descriptions ) && CollectionUtils.equals( names, other.names )
+        && CollectionUtils.equals( subjects, other.subjects );
+    }
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/OrganizationalEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/OrganizationalEntity.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/OrganizationalEntity.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,23 @@
+package org.drools.task;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+ at Entity
+public abstract class OrganizationalEntity {    
+    private long id;
+    
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+  
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/PeopleAssignments.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/PeopleAssignments.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/PeopleAssignments.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,122 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.Embeddable;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class PeopleAssignments implements Serializable {
+    @OneToOne
+    private User                       taskInitiator;
+
+    @OneToMany
+    @JoinColumn(name = "PeopleAssignments_PotentialOwners_Id", nullable = true)
+    private List<OrganizationalEntity> potentialOwners        = Collections.emptyList();
+
+    @OneToMany
+    @JoinColumn(name = "PeopleAssignments_ExcludedOwners_Id", nullable = true)
+    private List<OrganizationalEntity> excludedOwners         = Collections.emptyList();
+
+    @OneToMany
+    @JoinColumn(name = "PeopleAssignments_TaskStakeholders_Id", nullable = true)
+    private List<OrganizationalEntity> taskStakeholders       = Collections.emptyList();
+
+    @OneToMany
+    @JoinColumn(name = "PeopleAssignments_BusinessAdministrators_Id", nullable = true)
+    private List<OrganizationalEntity> businessAdministrators = Collections.emptyList();
+
+    @OneToMany
+    @JoinColumn(name = "PeopleAssignments_Recipients_Id", nullable = true)
+    private List<OrganizationalEntity> recipients             = Collections.emptyList();
+    
+    public PeopleAssignments() {
+        
+    }
+
+    public User getTaskInitiator() {
+        return taskInitiator;
+    }
+
+    public void setTaskInitiator(User taskInitiator) {
+        this.taskInitiator = taskInitiator;
+    }
+
+    public List<OrganizationalEntity> getPotentialOwners() {
+        return potentialOwners;
+    }
+
+    public void setPotentialOwners(List<OrganizationalEntity> potentialOwners) {
+        this.potentialOwners = potentialOwners;
+    }
+
+    public List<OrganizationalEntity> getExcludedOwners() {
+        return excludedOwners;
+    }
+
+    public void setExcludedOwners(List<OrganizationalEntity> excludedOwners) {
+        this.excludedOwners = excludedOwners;
+    }
+
+    public List<OrganizationalEntity> getTaskStakeholders() {
+        return taskStakeholders;
+    }
+
+    public void setTaskStakeholders(List<OrganizationalEntity> taskStakeholders) {
+        this.taskStakeholders = taskStakeholders;
+    }
+
+    public List<OrganizationalEntity> getBusinessAdministrators() {
+        return businessAdministrators;
+    }
+
+    public void setBusinessAdministrators(List<OrganizationalEntity> businessAdministrators) {
+        this.businessAdministrators = businessAdministrators;
+    }
+
+    public List<OrganizationalEntity> getRecipients() {
+        return recipients;
+    }
+
+    public void setRecipients(List<OrganizationalEntity> recipients) {
+        this.recipients = recipients;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( businessAdministrators );
+        result = prime * result + CollectionUtils.hashCode( excludedOwners );
+        result = prime * result + CollectionUtils.hashCode( potentialOwners );
+        result = prime * result + CollectionUtils.hashCode( recipients );
+        result = prime * result + ((taskInitiator == null) ? 0 : taskInitiator.hashCode());
+        result = prime * result + CollectionUtils.hashCode( taskStakeholders );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof PeopleAssignments) ) return false;
+        PeopleAssignments other = (PeopleAssignments) obj;
+        
+        if ( taskInitiator == null ) {
+            if ( other.taskInitiator != null ) return false;
+        } else if ( !taskInitiator.equals( other.taskInitiator ) ) return false;
+        
+        return CollectionUtils.equals( businessAdministrators, other.businessAdministrators ) && CollectionUtils.equals( excludedOwners, other.excludedOwners )
+        && CollectionUtils.equals( potentialOwners, other.potentialOwners ) && CollectionUtils.equals( recipients, other.recipients )
+        && CollectionUtils.equals( taskStakeholders, other.taskStakeholders );
+    }
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Reassignment.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Reassignment.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Reassignment.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,76 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Entity
+public class Reassignment implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)    
+    private long                       id;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "Reassignment_Documentation_Id", nullable = true)     
+    private List<IL8NText>             documentation = Collections.emptyList();;
+
+    @OneToMany
+    @JoinColumn(name = "Reassignment_potentialOwners_Id", nullable = true)    
+    private List<OrganizationalEntity> potentialOwners = Collections.emptyList();;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public List<IL8NText> getDocumentation() {
+        return documentation;
+    }
+
+    public void setDocumentation(List<IL8NText> documentation) {
+        this.documentation = documentation;
+    }
+
+    public List<OrganizationalEntity> getPotentialOwners() {
+        return potentialOwners;
+    }
+
+    public void setPotentialOwners(List<OrganizationalEntity> potentialOwners) {
+        this.potentialOwners = potentialOwners;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( documentation );
+        result = prime * result + CollectionUtils.hashCode( potentialOwners );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Reassignment) ) return false;
+        Reassignment other = (Reassignment) obj;
+        return CollectionUtils.equals( documentation, other.documentation ) && CollectionUtils.equals( potentialOwners, other.potentialOwners );
+    }
+    
+    
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Status.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Status.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Status.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,7 @@
+package org.drools.task;
+
+import javax.persistence.Entity;
+
+public enum Status {
+    Created, Ready, Reserved, InProgress, Suspended, Completed, Failed, Error, Exited, Obselete;
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/StatusChange.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/StatusChange.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/StatusChange.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,10 @@
+package org.drools.task;
+
+import java.util.Date;
+
+public class StatusChange {
+    private User   user;
+
+    private Date   date;
+    private Status status;
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Task.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Task.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Task.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,142 @@
+package org.drools.task;
+
+import java.io.Serializable;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+ at Entity
+public class Task implements Serializable {
+    /**
+     * WSHT uses a name for the unique identifier, for now we use a generated ID which is also the key, which can be 
+     * mapped to the name or a unique name field added later.
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)        
+    private long                 id;
+
+    /**
+     * While WSHT says this is an expression, it always resolves to an integer, so resolve before setting
+     * default value is 0.
+     */
+    private int                  priority;
+
+    @Embedded
+    private PeopleAssignments    peopleAssignments;
+    
+
+    @Embedded    
+    private Delegation           delegation;
+
+    @Embedded
+    private TaskPresentationElements presentationElements;
+
+    @Embedded
+    private TaskData             taskData;   
+    
+    @Embedded 
+    private Deadlines            deadlines;
+    
+    public Task() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public int getPriority() {
+        return priority;
+    }
+
+    public void setPriority(int priority) {
+        this.priority = priority;
+    }
+
+    public PeopleAssignments getPeopleAssignments() {
+        return peopleAssignments;
+    }
+
+    public void setPeopleAssignments(PeopleAssignments peopleAssignments) {
+        this.peopleAssignments = peopleAssignments;
+    }
+
+    public Delegation getDelegation() {
+        return delegation;
+    }
+
+    public void setDelegation(Delegation delegation) {
+        this.delegation = delegation;
+    }
+
+
+    public TaskPresentationElements getTaskPresentationElements() {
+        return presentationElements;
+    }
+
+    public void setTaskPresentationElements(TaskPresentationElements presentationElements) {
+        this.presentationElements = presentationElements;
+    }
+
+    public TaskData getTaskData() {
+        return taskData;
+    }
+
+    public void setTaskData(TaskData taskData) {
+        this.taskData = taskData;
+    }
+
+    public Deadlines getDeadlines() {
+        return deadlines;
+    }
+
+    public void setDeadlines(Deadlines deadlines) {
+        this.deadlines = deadlines;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((deadlines == null) ? 0 : deadlines.hashCode());
+        result = prime * result + ((delegation == null) ? 0 : delegation.hashCode());
+        result = prime * result + ((peopleAssignments == null) ? 0 : peopleAssignments.hashCode());
+        result = prime * result + ((presentationElements == null) ? 0 : presentationElements.hashCode());
+        result = prime * result + priority;
+        result = prime * result + ((taskData == null) ? 0 : taskData.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof Task) ) return false;
+        Task other = (Task) obj;
+        if ( deadlines == null ) {
+            if ( other.deadlines != null ) return false;
+        } else if ( !deadlines.equals( other.deadlines ) ) return false;
+        if ( delegation == null ) {
+            if ( other.delegation != null ) return false;
+        } else if ( !delegation.equals( other.delegation ) ) return false;
+        if ( peopleAssignments == null ) {
+            if ( other.peopleAssignments != null ) return false;
+        } else if ( !peopleAssignments.equals( other.peopleAssignments ) ) return false;
+        if ( presentationElements == null ) {
+            if ( other.presentationElements != null ) return false;
+        } else if ( !presentationElements.equals( other.presentationElements ) ) return false;
+        if ( priority != other.priority ) return false;
+        if ( taskData == null ) {
+            if ( other.taskData != null ) return false;
+        } else if ( !taskData.equals( other.taskData ) ) return false;
+        return true;
+    }        
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,134 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class TaskData implements Serializable {    
+    @Enumerated(EnumType.STRING)    
+    private Status           status = Status.Created; // initial default state
+
+    private Date             createdOn;
+    
+    private Date             activationTime;
+    
+    private Date             expirationTime;
+    
+    private boolean          isSkipable;
+
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "TaskData_Comments_Id", nullable = true)    
+    private List<Comment>    comments = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "TaskData_Attachments_Id", nullable = true)    
+    private List<Attachment> attachments = Collections.emptyList();   
+    
+    public Status getStatus() {
+        return status;
+    }
+    
+    public void setStatus(Status status) {
+        this.status = status;
+    }
+    
+    public Date getCreatedOn() {
+        return createdOn;
+    }
+    
+    public void setCreatedOn(Date createdOn) {
+        this.createdOn = createdOn;
+    }
+    
+    public Date getActivationTime() {
+        return activationTime;
+    }
+    
+    public void setActivationTime(Date activationTime) {
+        this.activationTime = activationTime;
+    }
+    
+    public Date getExpirationTime() {
+        return expirationTime;
+    }
+    
+    public void setExpirationTime(Date expirationTime) {
+        this.expirationTime = expirationTime;
+    }
+    
+    public boolean isSkipable() {
+        return isSkipable;
+    }
+    
+    public void setSkipable(boolean isSkipable) {
+        this.isSkipable = isSkipable;
+    }
+      
+    public List<Comment> getComments() {
+        return comments;
+    }
+    
+    public void setComments(List<Comment> comments) {
+        this.comments = comments;
+    }
+    
+    public List<Attachment> getAttachments() {
+        return attachments;
+    }
+    
+    public void setAttachments(List<Attachment> attachments) {
+        this.attachments = attachments;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((activationTime == null) ? 0 : activationTime.hashCode());
+        result = prime * result + CollectionUtils.hashCode( attachments );
+        result = prime * result + CollectionUtils.hashCode( comments );
+        result = prime * result + ((createdOn == null) ? 0 : createdOn.hashCode());
+        result = prime * result + ((expirationTime == null) ? 0 : expirationTime.hashCode());
+        result = prime * result + (isSkipable ? 1231 : 1237);
+        result = prime * result + ((status == null) ? 0 : status.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof TaskData) ) return false;
+        TaskData other = (TaskData) obj;
+        
+        if ( createdOn == null ) {
+            if ( other.createdOn != null ) return false;
+            
+        } else if ( createdOn.getTime() != other.createdOn.getTime() ) return false;
+        if ( expirationTime == null ) {
+            if ( other.expirationTime != null ) return false;            
+        } else if ( expirationTime.getTime() != other.expirationTime.getTime() ) return false;
+        if ( isSkipable != other.isSkipable ) return false;
+        if ( status == null ) {
+            if ( other.status != null ) return false;
+        } else if ( !status.equals( other.status ) ) return false;        
+        if ( activationTime == null ) {
+            if ( other.activationTime != null ) return false;
+        } else if ( activationTime.getTime() != other.activationTime.getTime() ) return false;                
+        
+        return CollectionUtils.equals( attachments, other.attachments ) && CollectionUtils.equals( comments, other.comments );
+    }
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskPresentationElements.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskPresentationElements.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskPresentationElements.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,86 @@
+package org.drools.task;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.drools.task.utils.CollectionUtils;
+
+ at Embeddable
+public class TaskPresentationElements implements Serializable {
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "TaskPresentationElements_Names_Id", nullable = true)    
+    private List<IL8NText> names        = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "TaskPresentationElements_Subjects_Id", nullable = true)    
+    private List<IL8NText> subjects     = Collections.emptyList();
+    
+    @OneToMany(cascade = CascadeType.ALL)
+    @JoinColumn(name = "TaskPresentationElements_Descriptions_Id", nullable = true)
+    private List<IL8NText> descriptions = Collections.emptyList();  
+    
+    public TaskPresentationElements() {
+        
+    }
+
+
+    public List<IL8NText> getNames() {
+        return names;
+    }
+
+    public void setNames(List<IL8NText> names) {
+        this.names = names;
+    }
+
+    public List<IL8NText> getSubjects() {
+        return subjects;
+    }
+
+    public void setSubjects(List<IL8NText> subjects) {
+        this.subjects = subjects;
+    }
+    
+    public List<IL8NText> getDescriptions() {
+        return descriptions;
+    }
+
+    public void setDescriptions(List<IL8NText> descriptions) {
+        this.descriptions = descriptions;
+    }
+
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + CollectionUtils.hashCode( descriptions );
+        result = prime * result + CollectionUtils.hashCode( names );
+        result = prime * result + CollectionUtils.hashCode( subjects );
+        return result;
+    }
+
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof TaskPresentationElements) ) return false;
+        TaskPresentationElements other = (TaskPresentationElements) obj;
+        
+        return CollectionUtils.equals( descriptions, other.descriptions ) && CollectionUtils.equals( names, other.names )
+        && CollectionUtils.equals( subjects, other.subjects );
+    }
+    
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/User.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/User.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/User.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,67 @@
+package org.drools.task;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+
+ at Entity
+public class User extends OrganizationalEntity implements Serializable {
+    private String firstName;
+    private String lastName;
+    
+    public User() {
+        
+    }
+    
+    public User(String firstName, String lastName) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+    }
+    
+    public String getFirstName() {
+        return firstName;
+    }
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+    public String getLastName() {
+        return lastName;
+    }
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
+        result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof User) ) return false;
+        User other = (User) obj;
+        if ( firstName == null ) {
+            if ( other.firstName != null ) return false;
+        } else if ( !firstName.equals( other.firstName ) ) return false;
+        if ( lastName == null ) {
+            if ( other.lastName != null ) return false;
+        } else if ( !lastName.equals( other.lastName ) ) return false;
+        return true;
+    }
+
+
+
+    
+        
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/utils/CollectionUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/utils/CollectionUtils.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/utils/CollectionUtils.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,53 @@
+package org.drools.task.utils;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.print.attribute.HashAttributeSet;
+
+public class CollectionUtils {
+    public static boolean equals(List list1, List list2) {
+        if ( list1 == null && list2 == null ) {
+            return true;
+        }
+        
+        if ( list1.size() != list2.size() ) {
+            return false;
+        } 
+        
+        if ( list1.isEmpty() && list2.isEmpty() ) {
+            return true;
+        }
+        
+       
+        for ( Object item1 : list1) {
+            boolean exists = false;
+            for ( Object item2 : list2 ) {
+                if ( item1.equals( item2 )) {
+                    exists = true;
+                    break;
+                }
+            }  
+            if ( !exists ) {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    public static int hashCode(List list) {
+        if ( list == null ) {
+            return 0;
+        }
+        
+        final int prime = 31;
+        int result = 1;        
+        for ( Iterator it = list.iterator(); it.hasNext(); ) {
+            result = prime * result + it.next().hashCode();
+        }        
+        return result;
+    }
+}

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-08-26 05:21:22 UTC (rev 21899)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-08-26 06:22:51 UTC (rev 21900)
@@ -1,151 +1,37 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
 http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence">
-    <persistence-unit name="org.drools.ws_ht:org.drools.ws_ht.api.xsd:org.drools.ws_ht.api">
-        <class>org.drools.ws_ht.api.xsd.Nominate</class>
-        <class>org.drools.ws_ht.TNotification</class>
-        <class>org.drools.ws_ht.api.xsd.GetFault</class>
-        <class>org.drools.ws_ht.api.xsd.GetTaskDescription</class>
-        <class>org.drools.ws_ht.api.xsd.GetRenderingTypesResponse</class>
-        <class>org.drools.ws_ht.TNotifications</class>
-        <class>org.drools.ws_ht.api.xsd.Release</class>
-        <class>org.drools.ws_ht.api.xsd.GetFaultResponse</class>
-        <class>org.drools.ws_ht.api.xsd.SetPriority</class>
-        <class>org.drools.ws_ht.api.xsd.SetOutputResponse</class>
-        <class>org.drools.ws_ht.api.xsd.CompleteResponse</class>
-        <class>org.drools.ws_ht.api.xsd.Stop</class>
-        <class>org.drools.ws_ht.api.xsd.SuspendUntilResponse</class>
-        <class>org.drools.ws_ht.api.xsd.Query</class>
-        <class>org.drools.ws_ht.TText</class>
-        <class>org.drools.ws_ht.api.xsd.Fail</class>
-        <class>org.drools.ws_ht.TArgument</class>
-        <class>org.drools.ws_ht.api.xsd.Resume</class>
-        <class>org.drools.ws_ht.api.xsd.GetTaskInfoResponse</class>
-        <class>org.drools.ws_ht.TReassignment</class>
-        <class>org.drools.ws_ht.api.xsd.Forward</class>
-        <class>org.drools.ws_ht.TGrouplist$GroupItem</class>
-        <class>org.drools.ws_ht.TExtension</class>
-        <class>org.drools.ws_ht.api.xsd.GetRenderingTypesResponse$RenderingTypeItem</class>
-        <class>org.drools.ws_ht.api.xsd.Complete</class>
-        <class>org.drools.ws_ht.api.xsd.AddAttachment</class>
-        <class>org.drools.ws_ht.api.xsd.GetInput</class>
-        <class>org.drools.ws_ht.api.TTask</class>
-        <class>org.drools.ws_ht.THumanInteractions</class>
-        <class>org.drools.ws_ht.api.xsd.Activate</class>
-        <class>org.drools.ws_ht.api.xsd.Suspend</class>
-        <class>org.drools.ws_ht.TTaskInterface</class>
-        <class>org.drools.ws_ht.TPeopleAssignments$GenericHumanRoleItem</class>
-        <class>org.drools.ws_ht.api.xsd.ResumeResponse</class>
-        <class>org.drools.ws_ht.TToParts</class>
-        <class>org.drools.ws_ht.TPresentationElements</class>
-        <class>org.drools.ws_ht.api.xsd.Remove</class>
-        <class>org.drools.ws_ht.TDurationExpr</class>
-        <class>org.drools.ws_ht.api.xsd.SetOutput</class>
-        <class>org.drools.ws_ht.api.xsd.GetAttachmentInfos</class>
-        <class>org.drools.ws_ht.api.xsd.GetTaskDescriptionResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetRenderingResponse</class>
-        <class>org.drools.ws_ht.TExtensibleMixedContentElements$ContentItem</class>
-        <class>org.drools.ws_ht.api.xsd.DelegateResponse</class>
-        <class>org.drools.ws_ht.TDeadlines</class>
-        <class>org.drools.ws_ht.api.xsd.QueryResponse</class>
-        <class>org.drools.ws_ht.TDelegation</class>
-        <class>org.drools.ws_ht.api.xsd.GetOutput</class>
-        <class>org.drools.ws_ht.api.TTaskQueryResultRow</class>
-        <class>org.drools.ws_ht.api.xsd.GetTaskInfo</class>
-        <class>org.drools.ws_ht.TExtensibleElements$AnyItem</class>
-        <class>org.drools.ws_ht.TLogicalPeopleGroup</class>
-        <class>org.drools.ws_ht.api.xsd.ForwardResponse</class>
-        <class>org.drools.ws_ht.api.TTaskQueryResultSet</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTaskAbstracts$StatusItem</class>
-        <class>org.drools.ws_ht.TExpression</class>
-        <class>org.drools.ws_ht.api.xsd.AddCommentResponse</class>
-        <class>org.drools.ws_ht.TDocumentation$ContentItem</class>
-        <class>org.drools.ws_ht.api.xsd.Skip</class>
-        <class>org.drools.ws_ht.api.xsd.StartResponse</class>
-        <class>org.drools.ws_ht.api.xsd.AddComment</class>
-        <class>org.drools.ws_ht.TExpression$ContentItem</class>
-        <class>org.drools.ws_ht.TPresentationParameters</class>
-        <class>org.drools.ws_ht.TRenderings</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteFaultResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetOutputResponse</class>
-        <class>org.drools.ws_ht.api.TComment</class>
-        <class>org.drools.ws_ht.TEscalation</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTasksResponse</class>
-        <class>org.drools.ws_ht.TDeadline</class>
-        <class>org.drools.ws_ht.api.xsd.ClaimResponse</class>
-        <class>org.drools.ws_ht.api.xsd.ActivateResponse</class>
-        <class>org.drools.ws_ht.TUserlist$UserItem</class>
-        <class>org.drools.ws_ht.TUserlist</class>
-        <class>org.drools.ws_ht.TPresentationParameter</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTaskAbstracts</class>
-        <class>org.drools.ws_ht.TLocalNotification</class>
-        <class>org.drools.ws_ht.api.xsd.StopResponse</class>
-        <class>org.drools.ws_ht.TTask</class>
-        <class>org.drools.ws_ht.api.xsd.Claim</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTasks</class>
-        <class>org.drools.ws_ht.TNotificationInterface</class>
-        <class>org.drools.ws_ht.api.xsd.Start</class>
-        <class>org.drools.ws_ht.api.TTaskAbstract$AnyItem</class>
-        <class>org.drools.ws_ht.api.TTaskQueryResultRow$IdOrTaskTypeOrNameItem</class>
-        <class>org.drools.ws_ht.api.xsd.NominateResponse</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteOutputResponse</class>
-        <class>org.drools.ws_ht.TGenericHumanRole</class>
-        <class>org.drools.ws_ht.api.xsd.RemoveResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetInputResponse</class>
-        <class>org.drools.ws_ht.TTasks</class>
-        <class>org.drools.ws_ht.api.xsd.SetGenericHumanRoleResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetRenderingTypes</class>
-        <class>org.drools.ws_ht.api.TAttachmentInfo</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteFault</class>
-        <class>org.drools.ws_ht.TLiteral$ContentItem</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteAttachmentsResponse</class>
-        <class>org.drools.ws_ht.TFrom</class>
-        <class>org.drools.ws_ht.api.TAttachment</class>
-        <class>org.drools.ws_ht.TImport</class>
-        <class>org.drools.ws_ht.TExtensibleMixedContentElements</class>
-        <class>org.drools.ws_ht.TQuery$ContentItem</class>
-        <class>org.drools.ws_ht.api.xsd.ReleaseResponse</class>
-        <class>org.drools.ws_ht.api.xsd.IllegalState</class>
-        <class>org.drools.ws_ht.TToPart</class>
-        <class>org.drools.ws_ht.api.xsd.TTime</class>
-        <class>org.drools.ws_ht.api.TTask$AnyItem</class>
-        <class>org.drools.ws_ht.api.TAttachmentInfo$AnyItem</class>
-        <class>org.drools.ws_ht.TDocumentation</class>
-        <class>org.drools.ws_ht.api.xsd.SuspendResponse</class>
-        <class>org.drools.ws_ht.TGrouplist</class>
-        <class>org.drools.ws_ht.api.xsd.SetGenericHumanRole</class>
-        <class>org.drools.ws_ht.api.xsd.GetCommentsResposne</class>
-        <class>org.drools.ws_ht.TLiteral</class>
-        <class>org.drools.ws_ht.TLogicalPeopleGroups</class>
-        <class>org.drools.ws_ht.TPriority</class>
-        <class>org.drools.ws_ht.TQuery</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTaskAbstractsResponse</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteAttachments</class>
-        <class>org.drools.ws_ht.TRendering</class>
-        <class>org.drools.ws_ht.api.xsd.AddAttachmentResponse</class>
-        <class>org.drools.ws_ht.api.TTaskAbstract</class>
-        <class>org.drools.ws_ht.TParameter</class>
-        <class>org.drools.ws_ht.api.xsd.SkipResponse</class>
-        <class>org.drools.ws_ht.TPeopleAssignments</class>
-        <class>org.drools.ws_ht.api.xsd.SuspendUntil</class>
-        <class>org.drools.ws_ht.TBooleanExpr</class>
-        <class>org.drools.ws_ht.api.xsd.GetMyTasks$StatusItem</class>
-        <class>org.drools.ws_ht.TDescription</class>
-        <class>org.drools.ws_ht.api.TComment$AnyItem</class>
-        <class>org.drools.ws_ht.api.xsd.FailResponse</class>
-        <class>org.drools.ws_ht.TExtensions</class>
-        <class>org.drools.ws_ht.api.xsd.GetAttachmentsResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetRendering</class>
-        <class>org.drools.ws_ht.api.xsd.SetFault</class>
-        <class>org.drools.ws_ht.api.xsd.GetAttachments</class>
-        <class>org.drools.ws_ht.TExtensibleElements</class>
-        <class>org.drools.ws_ht.api.xsd.SetFaultResponse</class>
-        <class>org.drools.ws_ht.api.xsd.GetAttachmentInfosResponse</class>
-        <class>org.drools.ws_ht.TOrganizationalEntity</class>
-        <class>org.drools.ws_ht.api.xsd.SetPriorityResponse</class>
-        <class>org.drools.ws_ht.api.xsd.Delegate</class>
-        <class>org.drools.ws_ht.api.xsd.GetComments</class>
-        <class>org.drools.ws_ht.api.xsd.DeleteOutput</class>
-        <class>org.drools.ws_ht.TDeadlineExpr</class>
+    <persistence-unit name="org.drools.task">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        <class>org.drools.task.User</class>
+        <class>org.drools.task.Attachment</class>
+        <class>org.drools.task.BooleanExpression</class>        
+        <class>org.drools.task.Comment</class>
+        <class>org.drools.task.Deadline</class>
+        <class>org.drools.task.Comment</class>
+        <class>org.drools.task.Deadline</class>
+        <class>org.drools.task.Delegation</class>
+        <class>org.drools.task.Escalation</class>
+        <class>org.drools.task.Group</class>
+        <class>org.drools.task.IL8NText</class>
+        <class>org.drools.task.Notification</class>
+        <class>org.drools.task.PeopleAssignments</class>
+        <class>org.drools.task.Reassignment</class>
+        <class>org.drools.task.Status</class>
+        <class>org.drools.task.Task</class>
+        <class>org.drools.task.TaskData</class>
+
+	    <properties>
+	        <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
+	        <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
+	        <property name="hibernate.connection.username" value="sa"/>
+	        <property name="hibernate.connection.password" value=""/>
+	        <!--  property name="hibernate.connection.url" value="jdbc:h2:file:\dev\drools\trunk7\drools-process\drools-process-task\mydb"/ -->
+	        <property name="hibernate.connection.url" value="jdbc:h2:mem:mydb"/>	        
+	        <property name="hibernate.max_fetch_depth" value="3"/>
+		    <property name="hibernate.hbm2ddl.auto" value="create"/>
+            <property name="hibernate.show_sql" value="true" />		    
+	    </properties>        
     </persistence-unit>
+    
 </persistence>

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/TestModelPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/TestModelPersistence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/TestModelPersistence.java	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,467 @@
+package org.drools.task;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.Serializable;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.drools.task.Attachment;
+import org.drools.task.BooleanExpression;
+import org.drools.task.Comment;
+import org.drools.task.Deadline;
+import org.drools.task.Deadlines;
+import org.drools.task.Delegation;
+import org.drools.task.Escalation;
+import org.drools.task.Group;
+import org.drools.task.IL8NText;
+import org.drools.task.Notification;
+import org.drools.task.NotificationPresentationElements;
+import org.drools.task.OrganizationalEntity;
+import org.drools.task.PeopleAssignments;
+import org.drools.task.Reassignment;
+import org.drools.task.TaskPresentationElements;
+import org.drools.task.Status;
+import org.drools.task.Task;
+import org.drools.task.TaskData;
+import org.drools.task.User;
+import org.mvel.MVEL;
+import org.mvel.ParserContext;
+import org.mvel.compiler.ExpressionCompiler;
+import org.mvel.util.MVELClassLoader;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
+
+import junit.framework.TestCase;
+
+public class TestModelPersistence extends TestCase {
+
+    public Object eval(Reader reader, Map vars) {
+        try {
+            int charValue = 0;
+            StringBuffer sb = new StringBuffer( 1024 );
+            while ( (charValue = reader.read()) != -1 ) {
+                //result = result + (char) charValue;
+                sb.append( (char) charValue );
+            }
+            return eval( sb.toString(), vars );
+        } catch ( IOException e ) {
+            throw new RuntimeException( "Exception Thrown",
+                                        e );
+        }
+    }
+
+    public Object eval(String str, Map vars) {
+        ExpressionCompiler compiler = new ExpressionCompiler( str.trim() );
+
+        ParserContext context = new ParserContext();
+        context.addPackageImport( "org.drools.task" );
+        context.addPackageImport( "java.util" );
+        
+        context.addImport( "AccessType", AccessType.class );
+        context.addImport( "Allowed", Allowed.class );
+        context.addImport( "Attachment", Attachment.class );
+        context.addImport( "BooleanExpression", BooleanExpression.class );
+        context.addImport( "Comment", Comment.class );
+        context.addImport( "Deadline", Deadline.class );
+        context.addImport( "Deadlines", Deadlines.class );
+        context.addImport( "Delegation", Delegation.class );
+        context.addImport( "Escalation", Escalation.class );
+        context.addImport( "Group", Group.class );
+        context.addImport( "IL8NText", IL8NText.class );
+        context.addImport( "Notification", Notification.class );
+        context.addImport( "NotificationPresentationElements", NotificationPresentationElements.class );
+        context.addImport( "OrganizationalEntity", OrganizationalEntity.class );
+        context.addImport( "PeopleAssignments", PeopleAssignments.class );
+        context.addImport( "Reassignment", Reassignment.class );
+        context.addImport( "Status", Status.class );
+        context.addImport( "Task", Task.class );
+        context.addImport( "TaskData", TaskData.class );
+        context.addImport( "TaskPresentationElements", TaskPresentationElements.class );
+        context.addImport( "User", User.class );
+
+        return MVEL.executeExpression( compiler.compile( context ), vars );
+    }
+
+    public void fullHibernateRoundtripWithAdditionalMVELCheck() throws Exception {
+        // Use persistence.xml configuration
+        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.task" );
+        EntityManager em = emf.createEntityManager(); // Retrieve an application managed entity manager
+
+        em.getTransaction().begin();
+
+        Task task1 = new Task();
+        task1.setPriority( 100 );
+
+        PeopleAssignments peopleAssignments = new PeopleAssignments();
+        task1.setPeopleAssignments( peopleAssignments );
+
+        User darth = new User( "Darth",
+                               "Vader" );
+        peopleAssignments.setTaskInitiator( darth );
+        em.persist( darth );
+
+        List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>();
+        peopleAssignments.setPotentialOwners( potentialOwners );
+        User bobba = new User( "Bobba",
+                               "Fet" );
+        potentialOwners.add( bobba );
+        em.persist( bobba );
+
+        User jabba = new User( "Jabba",
+                               "Hutt" );
+        potentialOwners.add( jabba );
+        em.persist( jabba );
+
+        List<OrganizationalEntity> excludedOwners = new ArrayList<OrganizationalEntity>();
+        peopleAssignments.setExcludedOwners( excludedOwners );
+        User dalai = new User( "Dalai",
+                               "Lama" );
+        excludedOwners.add( dalai );
+        em.persist( dalai );
+
+        User christoper = new User( "Christoper",
+                                    "Columbus" );
+        excludedOwners.add( christoper );
+        em.persist( christoper );
+
+        List<OrganizationalEntity> stakeholders = new ArrayList<OrganizationalEntity>();
+        peopleAssignments.setTaskStakeholders( stakeholders );
+        User stuart = new User( "Stuart",
+                              "Little" );
+        stakeholders.add( stuart );
+        em.persist( stuart );
+
+        User jane = new User( "Jane",
+                              "Austin" );
+        stakeholders.add( jane );
+        em.persist( jane );
+
+        List<OrganizationalEntity> businessAdmin = new ArrayList<OrganizationalEntity>();
+        peopleAssignments.setBusinessAdministrators( businessAdmin );
+        User peter = new User( "Peter",
+                               "Parker" );
+        businessAdmin.add( peter );
+        em.persist( peter );
+
+        User steve = new User( "Steve",
+                               "Rogers" );
+        businessAdmin.add( steve );
+        em.persist( steve );
+
+        List<OrganizationalEntity> recipients = new ArrayList<OrganizationalEntity>();
+        peopleAssignments.setRecipients( recipients );
+        User sly = new User( "Sly",
+                             "Stalone" );
+        recipients.add( sly );
+        em.persist( sly );
+
+        User liz = new User( "Elizabeth",
+                             "Windsor" );
+        recipients.add( liz );
+        em.persist( liz );
+
+        TaskData taskData = new TaskData();
+        task1.setTaskData( taskData );
+
+        taskData.setActivationTime( new Date( 10000000 ) );
+        taskData.setCreatedOn( new Date( 10000000 ) );
+        taskData.setExpirationTime( new Date( 10000000 ) );
+        taskData.setStatus( Status.Created );
+
+        List<Attachment> attachments = new ArrayList<Attachment>();
+        taskData.setAttachments( attachments );
+
+        Attachment attachment = new Attachment();
+        attachment.setAccessType( AccessType.Inline );
+        attachment.setAttachedAt( new Date( 10000000 ) );
+        attachment.setAttachedBy( liz );
+        attachment.setContentType( "text" );
+        attachment.setName( "file.txt" );
+        attachment.setAttachment( new byte[]{1, 0, 0, 1} );
+        attachments.add( attachment );
+
+        attachment = new Attachment();
+        attachment.setAccessType( AccessType.Url );
+        attachment.setAttachedAt( new Date( 10000000 ) );
+        attachment.setAttachedBy( liz );
+        attachment.setContentType( "text" );
+        attachment.setName( "file2.txt" );
+        attachment.setAttachment( new String( "http://domain.org/file.txt" ).getBytes() );
+        attachments.add( attachment );
+
+        List<Comment> comments = new ArrayList<Comment>();
+        taskData.setComments( comments );
+        Comment comment = new Comment();
+        comment.setAddedBy( peter );
+        comment.setAddedDate( new Date( 10000000 ) );
+        comment.setText( "this is a short comment" );
+        comments.add( comment );
+
+        comment = new Comment();
+        comment.setAddedBy( steve );
+        comment.setAddedDate( new Date( 10000000 ) );
+        comment.setText( "this is a loooooooooooooooooooooooooooooooooooooooooooooooong comment" );
+        comments.add( comment );
+
+        TaskPresentationElements tpresentationElements = new TaskPresentationElements();
+        task1.setTaskPresentationElements( tpresentationElements );
+        List<IL8NText> names = new ArrayList<IL8NText>();
+        tpresentationElements.setNames( names );
+        List<IL8NText> subjects = new ArrayList<IL8NText>();
+        tpresentationElements.setSubjects( subjects );
+        List<IL8NText> descriptions = new ArrayList<IL8NText>();
+        tpresentationElements.setDescriptions( descriptions );
+
+        names.add( new IL8NText( "en-UK",
+                                 "This is my task name" ) );
+        names.add( new IL8NText( "en-DK",
+                                 "Dies ist mein task Name" ) );
+
+        subjects.add( new IL8NText( "en-UK",
+                                    "This is my task subject" ) );
+        subjects.add( new IL8NText( "en-DK",
+                                    "Das ist mein task Thema" ) );
+
+        descriptions.add( new IL8NText( "en-UK",
+                                        "This is my task description" ) );
+        descriptions.add( new IL8NText( "en-DK",
+                                        "Das ist mein task Beschreibung" ) );
+
+        Delegation delegation = new Delegation();
+        task1.setDelegation( delegation );
+        delegation.setAllowed( Allowed.PotentialOwners );
+
+        List<OrganizationalEntity> groups = new ArrayList<OrganizationalEntity>();
+        delegation.setDelegates( groups );
+        Group crusaders = new Group( "Crusaders" );
+        em.persist( crusaders );
+        groups.add( crusaders );
+
+        Group knightsTempler = new Group( "Knights Templer" );
+        em.persist( knightsTempler );
+        groups.add( knightsTempler );
+
+        Deadlines deadlines = new Deadlines();
+        task1.setDeadlines( deadlines );
+
+        List<Deadline> startDeadlines = new ArrayList<Deadline>();
+        deadlines.setStartDeadlines( startDeadlines );
+        Deadline deadline = new Deadline();
+        startDeadlines.add( deadline );
+        deadline.setDate( new Date( 10000000 ) );
+        List<IL8NText> docs = new ArrayList<IL8NText>();
+        deadline.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK",
+                                "Start Deadline documentation" ) );
+        docs.add( new IL8NText( "en-DK",
+                                "Start Termin Dokumentation" ) );
+
+        List<Escalation> escalations = new ArrayList<Escalation>();
+        deadline.setEscalations( escalations );
+        Escalation escalation = new Escalation();
+        escalations.add( escalation );
+        escalation.setName( "My Start Escalation" );
+
+        List<BooleanExpression> constraints = new ArrayList<BooleanExpression>();
+        escalation.setConstraints( constraints );
+        constraints.add( new BooleanExpression( "mvel",
+                                                "true" ) );
+
+        List<Notification> notifications = new ArrayList<Notification>();
+        escalation.setNotifications( notifications );
+
+        Notification notification = new Notification();
+        notifications.add( notification );
+        notification.setPriority( 1000 );
+        docs = new ArrayList<IL8NText>();
+        notification.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK",
+                                "Start Notification documentation" ) );
+        docs.add( new IL8NText( "en-DK",
+                                "Start Anmeldung Dokumentation" ) );
+
+        businessAdmin = new ArrayList<OrganizationalEntity>();
+        notification.setBusinessAdministrators( businessAdmin );
+        User bruce = new User( "Bruce",
+                               "Wayne " );
+        businessAdmin.add( bruce );
+        em.persist( bruce );
+        businessAdmin.add( peter );
+
+        recipients = new ArrayList<OrganizationalEntity>();
+        notification.setRecipients( recipients );
+        User tony = new User( "Tony",
+                              "Stark" );
+        recipients.add( tony );
+        em.persist( tony );
+        recipients.add( darth );
+
+        NotificationPresentationElements npresentationElements = new NotificationPresentationElements();
+        notification.setNotificationPresentationElements( npresentationElements );
+        names = new ArrayList<IL8NText>();
+        npresentationElements.setNames( names );
+        subjects = new ArrayList<IL8NText>();
+        npresentationElements.setSubjects( subjects );
+        descriptions = new ArrayList<IL8NText>();
+        npresentationElements.setDescriptions( descriptions );
+
+        names.add( new IL8NText( "en-UK",
+                                 "This is my start notification name" ) );
+        names.add( new IL8NText( "en-DK",
+                                 "Dies ist mein start anmeldung Name" ) );
+
+        subjects.add( new IL8NText( "en-UK", "This is my start notification subject" ) );
+        subjects.add( new IL8NText( "en-DK", "Das ist mein start anmeldung Thema" ) );
+
+        descriptions.add( new IL8NText( "en-UK", "This is my start notification description" ) );
+        descriptions.add( new IL8NText( "en-DK", "Das ist mein start anmeldung Beschreibung" ) );
+
+        List<Reassignment> reassignments = new ArrayList<Reassignment>();
+        escalation.setReassignments( reassignments );
+        Reassignment reassignment = new Reassignment();
+        reassignments.add( reassignment );
+
+        docs = new ArrayList<IL8NText>();
+        reassignment.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK", "Start Reassignment documentation" ) );
+        docs.add( new IL8NText( "en-DK", "Start Neuzuweisung Dokumentation" ) );
+
+        potentialOwners = new ArrayList<OrganizationalEntity>();
+        reassignment.setPotentialOwners( potentialOwners );
+        potentialOwners.add( bobba );
+        User cage = new User( "Luke",
+                              "Cage " );
+        potentialOwners.add( cage );
+        em.persist( cage );
+        
+////////////////
+        List<Deadline> endDeadlines = new ArrayList<Deadline>();
+        deadlines.setEndDeadlines( endDeadlines );
+        deadline = new Deadline();
+        endDeadlines.add( deadline );
+        deadline.setDate( new Date( 10000000 ) );
+        docs = new ArrayList<IL8NText>();
+        deadline.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK",
+                                "End Deadline documentation" ) );
+        docs.add( new IL8NText( "en-DK",
+                                "Ende Termin Dokumentation" ) );
+
+        escalations = new ArrayList<Escalation>();
+        deadline.setEscalations( escalations );
+        escalation = new Escalation();
+        escalations.add( escalation );
+        escalation.setName( "My End Escalation" );
+
+        constraints = new ArrayList<BooleanExpression>();
+        escalation.setConstraints( constraints );
+        constraints.add( new BooleanExpression( "mvel",
+                                                "true" ) );
+
+        notifications = new ArrayList<Notification>();
+        escalation.setNotifications( notifications );
+
+        notification = new Notification();
+        notifications.add( notification );
+        notification.setPriority( 1000 );
+        docs = new ArrayList<IL8NText>();
+        notification.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK",
+                                "End Notification documentation" ) );
+        docs.add( new IL8NText( "en-DK",
+                                "Ende Anmeldung Dokumentation" ) );
+
+        businessAdmin = new ArrayList<OrganizationalEntity>();
+        notification.setBusinessAdministrators( businessAdmin );
+        businessAdmin.add( bobba );
+        businessAdmin.add( darth );
+
+        recipients = new ArrayList<OrganizationalEntity>();
+        notification.setRecipients( recipients );
+        recipients.add( liz );
+        recipients.add( jane );
+
+        npresentationElements = new NotificationPresentationElements();
+        notification.setNotificationPresentationElements( npresentationElements );
+        names = new ArrayList<IL8NText>();
+        npresentationElements.setNames( names );
+        subjects = new ArrayList<IL8NText>();
+        npresentationElements.setSubjects( subjects );
+        descriptions = new ArrayList<IL8NText>();
+        npresentationElements.setDescriptions( descriptions );
+
+        names.add( new IL8NText( "en-UK",
+                                 "This is my end notification name" ) );
+        names.add( new IL8NText( "en-DK",
+                                 "Dies ist mein ende anmeldung Name" ) );
+
+        subjects.add( new IL8NText( "en-UK", "This is my end notification subject" ) );
+        subjects.add( new IL8NText( "en-DK", "Das ist mein ende anmeldung Thema" ) );
+
+        descriptions.add( new IL8NText( "en-UK", "This is my end notification description" ) );
+        descriptions.add( new IL8NText( "en-DK", "Das ist mein ende anmeldung Beschreibung" ) );
+
+        reassignments = new ArrayList<Reassignment>();
+        escalation.setReassignments( reassignments );
+        reassignment = new Reassignment();
+        reassignments.add( reassignment );
+
+        docs = new ArrayList<IL8NText>();
+        reassignment.setDocumentation( docs );
+        docs.add( new IL8NText( "en-UK", "End Reassignment documentation" ) );
+        docs.add( new IL8NText( "en-DK", "Ende Neuzuweisung Dokumentation" ) );
+
+        potentialOwners = new ArrayList<OrganizationalEntity>();
+        reassignment.setPotentialOwners( potentialOwners );
+        potentialOwners.add( stuart );
+        potentialOwners.add( dalai );
+////////////////////        
+
+
+        em.persist( task1 );
+
+        em.flush();
+        em.clear();
+
+        Task task2 = em.find( Task.class,
+                              task1.getId() );
+        assertNotSame( task1,
+                       task2 );
+//        assertEquals( task1,
+//                      task2 );
+
+//        XStream xstream = new XStream();
+//        String xml = xstream.toXML( task1 );
+//
+//        System.out.println( xml );
+//
+//        Task task3 = (Task) xstream.fromXML( new InputStreamReader( getClass().getResourceAsStream( "FullyPopulatedTask.xml" ) ) );
+        
+        Reader reader = new InputStreamReader( getClass().getResourceAsStream( "FullyPopulatedTask.mvel" ) );
+        Map  vars = new HashedMap();
+        vars.put( "bytes1", new byte[]{1, 0, 0, 1} );        
+        Task task3= (Task) eval( reader, vars );               
+        
+        assertNotSame( task1,
+                       task3 );
+        assertEquals( task1,
+                      task3 );
+
+        em.close();
+        emf.close();
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,150 @@
+users = [ 'darth'  : new User('Darth', 'Vader'),  
+          'bobba'  : new User( 'Bobba', 'Fet'),     'jabba'      : new User('Jabba', 'Hutt'),
+          'dalai'  : new User('Dalai', 'Lama'),     'christoper' : new User('Christoper', 'Columbus'),
+          'stuart' : new User('Stuart', 'Little'),  'jane'       : new User('Jane', 'Austin'),
+          'peter'  : new User('Peter', 'Parker'),   'steve'      : new User("Steve", "Rogers"),
+          'sly'    : new User('Sly', 'Stalone'),    'liz'        : new User("Elizabeth", "Windsor"),
+          'bruce'  : new User( "Bruce", "Wayne " ), 'tony'       : new User("Tony", "Stark"),
+          'luke'   : new User( "Luke", "Cage " )
+        ];
+groups = [ 'knightsTempler' : new Group( "Knights Templer" ),
+           'crusaders' : new Group( "Crusaders" )
+         ];
+        
+          
+with ( new Task() ) { 
+    id = 1,
+    priority = 100,
+    peopleAssignments = (with ( new PeopleAssignments() ) {        
+        taskInitiator = users.get('darth'),
+        potentialOwners = [users.get('bobba'), users.get('jabba')],
+        excludedOwners = [users.get('dalai'), users.get('christoper')],
+        taskStakeholders = [users.get('stuart'), users.get('jane')],
+        businessAdministrators = [users.get('peter'), users.get('steve')],
+        recipients = [users.get('sly'), users.get('liz')]
+    }),
+    taskData = (with ( new TaskData() ) {
+        activationTime = new Date( 10000000 ),
+        createdOn = new Date( 10000000 ),
+        expirationTime = new Date( 10000000 ),
+        status = Status.Created,
+        attachments = [ 
+            (with ( new Attachment() ) {
+                accessType = AccessType.Inline,
+                attachedAt = new Date( 10000000 ),                            
+                attachedBy = users.get('liz'),
+                contentType = "text",
+                name = "file.txt",
+                attachment = bytes1           
+             }),
+             (with ( new Attachment() ) {
+                 accessType = AccessType.Url, 
+                 attachedAt = new Date( 10000000 ),
+                 attachedBy = users.get('liz'),
+                 contentType = "text",
+                 name = "file2.txt",
+                 attachment = "http://domain.org/file.txt".bytes
+             })
+        ],
+        comments = [ 
+            (with ( new Comment ) {
+                addedBy = users.get('peter'),
+                addedDate = new Date( 10000000 ),
+                text = "this is a short comment"
+             }),
+             (with ( new Comment ) {
+                 addedBy = users.get('steve'),
+                 addedDate = new Date( 10000000 ),
+                 text = "this is a loooooooooooooooooooooooooooooooooooooooooooooooong comment"
+             })
+        ]
+    }),
+    taskPresentationElements = (with ( new TaskPresentationElements() ) {
+        names = [ new IL8NText( "en-UK", "This is my task name" ),
+                  new IL8NText( "en-DK", "Dies ist mein task Name" )],
+        subjects = [ new IL8NText( "en-UK", "This is my task subject" ),
+                     new IL8NText( "en-DK", "Das ist mein task Thema" ) ],
+        descriptions = [ new IL8NText( "en-UK", "This is my task description" ),
+                          new IL8NText( "en-DK", "Das ist mein task Beschreibung" ) ]   
+    }),  
+    delegation = ( with( new Delegation() ) {
+        allowed = Allowed.PotentialOwners,
+        delegates = [ groups.get('crusaders'), groups.get('knightsTempler') ]                                                                
+    }),
+    deadlines = ( with ( new Deadlines() ) {
+        startDeadlines = [ 
+            (with (new Deadline()) {
+                date = new Date( 10000000 ),
+                documentation = [ new IL8NText( "en-UK", "Start Deadline documentation" ),
+                                  new IL8NText( "en-DK", "Start Termin Dokumentation" ) ],
+                escalations = [ 
+                    (with (new Escalation()) {
+                        name = "My Start Escalation",
+                        constraints = [new BooleanExpression( "mvel", "true" )],
+                        notifications = [ 
+                            (with (new Notification()) {
+                                documentation =  [ new IL8NText( "en-UK", "Start Notification documentation" ),
+                                                   new IL8NText( "en-DK", "Start Anmeldung Dokumentation" ) ],
+                                businessAdministrators = [ users.get('bruce'), users.get('peter') ],
+                                recipients = [ users.get('tony'), users.get('darth') ],                                                                                        
+                                notificationPresentationElements = (with (new NotificationPresentationElements()) {
+                                    names = [ new IL8NText( "en-UK", "This is my start notification name" ),
+                                              new IL8NText( "en-DK", "Dies ist mein start anmeldung Name" ) ],
+                                    subjects = [ new IL8NText( "en-UK", "This is my start notification subject" ), 
+                                                 new IL8NText( "en-DK", "Das ist mein start anmeldung Thema" ) ],
+                                    descriptions = [new IL8NText( "en-UK", "This is my start notification description" ),
+                                                    new IL8NText( "en-DK", "Das ist mein start anmeldung Beschreibung" ) ]
+                                })                                                                                                                                                                                       
+                            }) 
+                        ],
+                        reassignments = [
+                            (with (new Reassignment()) {
+                                documentation =  [ new IL8NText( "en-UK", "Start Reassignment documentation" ),
+                                                   new IL8NText( "en-DK", "Start Neuzuweisung Dokumentation" ) ], 
+                                potentialOwners = [  users.get('bobba'), users.get('luke') ]
+                             })                          
+                        ]                        
+                        
+                    }) 
+                ]
+            })
+        ],
+        endDeadlines = [ 
+            (with (new Deadline()) {
+                date = new Date( 10000000 ),
+                documentation = [ new IL8NText( "en-UK", "End Deadline documentation" ),
+                                  new IL8NText( "en-DK", "Ende Termin Dokumentation" ) ],
+                escalations = [ 
+                    (with (new Escalation()) {
+                        name = "My End Escalation",
+                        constraints = [new BooleanExpression( "mvel", "true" )],
+                        notifications = [ 
+                            (with (new Notification()) {
+                                documentation =  [ new IL8NText( "en-UK", "End Notification documentation" ),
+                                                   new IL8NText( "en-DK", "Ende Anmeldung Dokumentation" ) ],
+                                businessAdministrators = [ users.get('bobba'), users.get('darth') ],
+                                recipients = [ users.get('liz'), users.get('jane') ],                                                                                        
+                                notificationPresentationElements = (with (new NotificationPresentationElements()) {
+                                    names = [ new IL8NText( "en-UK", "This is my end notification name" ),
+                                              new IL8NText( "en-DK", "Dies ist mein ende anmeldung Name" ) ],
+                                    subjects = [ new IL8NText( "en-UK", "This is my end notification subject" ), 
+                                                 new IL8NText( "en-DK", "Das ist mein ende anmeldung Thema" ) ],
+                                    descriptions = [new IL8NText( "en-UK", "This is my end notification description" ),
+                                                    new IL8NText( "en-DK", "Das ist mein ende anmeldung Beschreibung" ) ]
+                                })                                                                                                                                                                                       
+                            }) 
+                        ],
+                        reassignments = [
+                            (with (new Reassignment()) {
+                                documentation =  [ new IL8NText( "en-UK", "End Reassignment documentation" ),
+                                                   new IL8NText( "en-DK", "Ende Neuzuweisung Dokumentation" ) ], 
+                                potentialOwners = [  users.get('stuart'), users.get('dalai') ]
+                             })                          
+                        ]                        
+                        
+                    }) 
+                ]
+            })
+        ]
+    })        
+};
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.xml	2008-08-26 06:22:51 UTC (rev 21900)
@@ -0,0 +1,602 @@
+<org.drools.task.Task>
+  <id>1</id>
+  <priority>100</priority>
+  <peopleAssignments>
+    <taskInitiator>
+      <firstName>Darth</firstName>
+      <lastName>Vader</lastName>
+      <id>1</id>
+    </taskInitiator>
+    <potentialOwners class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.User>
+          <firstName>Bobba</firstName>
+          <lastName>Fet</lastName>
+          <id>2</id>
+        </org.drools.task.User>
+        <org.drools.task.User>
+          <firstName>Jabba</firstName>
+          <lastName>Hutt</lastName>
+          <id>3</id>
+        </org.drools.task.User>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.peopleAssignments.potentialOwners</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+        <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+      </storedSnapshot>
+    </potentialOwners>
+    <excludedOwners class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.User>
+          <firstName>Dalai</firstName>
+          <lastName>Lama</lastName>
+          <id>4</id>
+        </org.drools.task.User>
+        <org.drools.task.User>
+          <firstName>Christoper</firstName>
+          <lastName>Columbus</lastName>
+          <id>5</id>
+        </org.drools.task.User>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.peopleAssignments.excludedOwners</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+        <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+      </storedSnapshot>
+    </excludedOwners>
+    <taskStakeholders class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.User>
+          <firstName>Stuart</firstName>
+          <lastName>Little</lastName>
+          <id>6</id>
+        </org.drools.task.User>
+        <org.drools.task.User>
+          <firstName>Jane</firstName>
+          <lastName>Austin</lastName>
+          <id>7</id>
+        </org.drools.task.User>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.peopleAssignments.taskStakeholders</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+        <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+      </storedSnapshot>
+    </taskStakeholders>
+    <businessAdministrators class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.User>
+          <firstName>Peter</firstName>
+          <lastName>Parker </lastName>
+          <id>8</id>
+        </org.drools.task.User>
+        <org.drools.task.User>
+          <firstName>Steve</firstName>
+          <lastName>Rogers</lastName>
+          <id>9</id>
+        </org.drools.task.User>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.peopleAssignments.businessAdministrators</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+        <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+      </storedSnapshot>
+    </businessAdministrators>
+    <recipients class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.User>
+          <firstName>Sly</firstName>
+          <lastName>Stalone</lastName>
+          <id>10</id>
+        </org.drools.task.User>
+        <org.drools.task.User>
+          <firstName>Elizabeth</firstName>
+          <lastName>Windsor</lastName>
+          <id>11</id>
+        </org.drools.task.User>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.peopleAssignments.recipients</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+        <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+      </storedSnapshot>
+    </recipients>
+  </peopleAssignments>
+  <delegation>
+    <allowed>PotentialOwners</allowed>
+    <delegates class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.Group>
+          <name>Crusaders</name>
+          <id>12</id>
+        </org.drools.task.Group>
+        <org.drools.task.Group>
+          <name>Knights Templer</name>
+          <id>13</id>
+        </org.drools.task.Group>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.delegation.delegates</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.Group reference="../../bag/org.drools.task.Group"/>
+        <org.drools.task.Group reference="../../bag/org.drools.task.Group[2]"/>
+      </storedSnapshot>
+    </delegates>
+  </delegation>
+  <presentationElements>
+    <names class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.IL8NText>
+          <id>15</id>
+          <language>en-UK</language>
+          <text>This is my task name</text>
+        </org.drools.task.IL8NText>
+        <org.drools.task.IL8NText>
+          <id>16</id>
+          <language>en-DK</language>
+          <text>Dies ist mein task Name</text>
+        </org.drools.task.IL8NText>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.presentationElements.names</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+      </storedSnapshot>
+    </names>
+    <subjects class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.IL8NText>
+          <id>17</id>
+          <language>en-UK</language>
+          <text>This is my task subject</text>
+        </org.drools.task.IL8NText>
+        <org.drools.task.IL8NText>
+          <id>18</id>
+          <language>en-DK</language>
+          <text>Das ist mein task Thema</text>
+        </org.drools.task.IL8NText>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.presentationElements.subjects</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+      </storedSnapshot>
+    </subjects>
+    <descriptions class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.IL8NText>
+          <id>13</id>
+          <language>en-UK</language>
+          <text>This is my task description</text>
+        </org.drools.task.IL8NText>
+        <org.drools.task.IL8NText>
+          <id>14</id>
+          <language>en-DK</language>
+          <text>Das ist mein task Beschreibung</text>
+        </org.drools.task.IL8NText>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.presentationElements.descriptions</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+        <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+      </storedSnapshot>
+    </descriptions>
+  </presentationElements>
+  <taskData>
+    <status>Created</status>
+    <createdOn>1970-01-01 02:46:40.0 GMT</createdOn>
+    <activationTime>1970-01-01 02:46:40.0 GMT</activationTime>
+    <expirationTime>1970-01-01 02:46:40.0 GMT</expirationTime>
+    <isSkipable>false</isSkipable>
+    <comments class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.Comment>
+          <id>1</id>
+          <text>this is a short comment</text>
+          <addedDate>1970-01-01 02:46:40.0 GMT</addedDate>
+          <addedBy reference="../../../../../peopleAssignments/businessAdministrators/bag/org.drools.task.User"/>
+        </org.drools.task.Comment>
+        <org.drools.task.Comment>
+          <id>2</id>
+          <text>this is a loooooooooooooooooooooooooooooooooooooooooooooooong comment</text>
+          <addedDate>1970-01-01 02:46:40.0 GMT</addedDate>
+          <addedBy reference="../../../../../peopleAssignments/businessAdministrators/bag/org.drools.task.User[2]"/>
+        </org.drools.task.Comment>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.taskData.comments</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.Comment reference="../../bag/org.drools.task.Comment"/>
+        <org.drools.task.Comment reference="../../bag/org.drools.task.Comment[2]"/>
+      </storedSnapshot>
+    </comments>
+    <attachments class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.Attachment>
+          <id>1</id>
+          <name>file.txt</name>
+          <accessType>Inline</accessType>
+          <contentType>text</contentType>
+          <attachedAt>1970-01-01 02:46:40.0 GMT</attachedAt>
+          <attachedBy reference="../../../../../peopleAssignments/recipients/bag/org.drools.task.User[2]"/>
+          <attachment>AQAAAQ==</attachment>
+        </org.drools.task.Attachment>
+        <org.drools.task.Attachment>
+          <id>2</id>
+          <name>file2.txt</name>
+          <accessType>Url</accessType>
+          <contentType>text</contentType>
+          <attachedAt>1970-01-01 02:46:40.0 GMT</attachedAt>
+          <attachedBy reference="../../../../../peopleAssignments/recipients/bag/org.drools.task.User[2]"/>
+          <attachment>aHR0cDovL2RvbWFpbi5vcmcvZmlsZS50eHQ=</attachment>
+        </org.drools.task.Attachment>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.taskData.attachments</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.Attachment reference="../../bag/org.drools.task.Attachment"/>
+        <org.drools.task.Attachment reference="../../bag/org.drools.task.Attachment[2]"/>
+      </storedSnapshot>
+    </attachments>
+  </taskData>
+  <deadlines>
+    <startDeadlines class="org.hibernate.collection.PersistentBag">
+      <bag>
+        <org.drools.task.Deadline>
+          <id>1</id>
+          <documentation class="org.hibernate.collection.PersistentBag">
+            <bag>
+              <org.drools.task.IL8NText>
+                <id>1</id>
+                <language>en-UK</language>
+                <text>Start Deadline documentation</text>
+              </org.drools.task.IL8NText>
+              <org.drools.task.IL8NText>
+                <id>2</id>
+                <language>en-DK</language>
+                <text>Start Termin Dokumentation</text>
+              </org.drools.task.IL8NText>
+            </bag>
+            <initialized>true</initialized>
+            <owner class="org.drools.task.Deadline" reference="../.."/>
+            <cachedSize>-1</cachedSize>
+            <role>org.drools.task.Deadline.documentation</role>
+            <key class="long">1</key>
+            <dirty>false</dirty>
+            <storedSnapshot class="list">
+              <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+              <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+            </storedSnapshot>
+          </documentation>
+          <date>1970-01-01 02:46:40.0 GMT</date>
+          <escalations class="org.hibernate.collection.PersistentBag">
+            <bag>
+              <org.drools.task.Escalation>
+                <id>1</id>
+                <name>My Escalation</name>
+                <constraints class="org.hibernate.collection.PersistentBag">
+                  <bag>
+                    <org.drools.task.BooleanExpression>
+                      <id>1</id>
+                      <type>mvel</type>
+                      <expression>true</expression>
+                    </org.drools.task.BooleanExpression>
+                  </bag>
+                  <initialized>true</initialized>
+                  <owner class="org.drools.task.Escalation" reference="../.."/>
+                  <cachedSize>-1</cachedSize>
+                  <role>org.drools.task.Escalation.constraints</role>
+                  <key class="long">1</key>
+                  <dirty>false</dirty>
+                  <storedSnapshot class="list">
+                    <org.drools.task.BooleanExpression reference="../../bag/org.drools.task.BooleanExpression"/>
+                  </storedSnapshot>
+                </constraints>
+                <notifications class="org.hibernate.collection.PersistentBag">
+                  <bag>
+                    <org.drools.task.Notification>
+                      <id>1</id>
+                      <documentation class="org.hibernate.collection.PersistentBag">
+                        <bag>
+                          <org.drools.task.IL8NText>
+                            <id>3</id>
+                            <language>en-UK</language>
+                            <text>Notification documentation</text>
+                          </org.drools.task.IL8NText>
+                          <org.drools.task.IL8NText>
+                            <id>4</id>
+                            <language>en-DK</language>
+                            <text>Anmeldung Dokumentation</text>
+                          </org.drools.task.IL8NText>
+                        </bag>
+                        <initialized>true</initialized>
+                        <owner class="org.drools.task.Notification" reference="../.."/>
+                        <cachedSize>-1</cachedSize>
+                        <role>org.drools.task.Notification.documentation</role>
+                        <key class="long">1</key>
+                        <dirty>false</dirty>
+                        <storedSnapshot class="list">
+                          <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+                          <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+                        </storedSnapshot>
+                      </documentation>
+                      <priority>1000</priority>
+                      <recipients class="org.hibernate.collection.PersistentBag">
+                        <bag>
+                          <org.drools.task.User>
+                            <firstName>Tony</firstName>
+                            <lastName>Stark </lastName>
+                            <id>15</id>
+                          </org.drools.task.User>
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/taskInitiator"/>
+                        </bag>
+                        <initialized>true</initialized>
+                        <owner class="org.drools.task.Notification" reference="../.."/>
+                        <cachedSize>-1</cachedSize>
+                        <role>org.drools.task.Notification.recipients</role>
+                        <key class="long">1</key>
+                        <dirty>false</dirty>
+                        <storedSnapshot class="list">
+                          <org.drools.task.User reference="../../bag/org.drools.task.User"/>
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/taskInitiator"/>
+                        </storedSnapshot>
+                      </recipients>
+                      <businessAdministrators class="org.hibernate.collection.PersistentBag">
+                        <bag>
+                          <org.drools.task.User>
+                            <firstName>Bruce</firstName>
+                            <lastName>Wayne </lastName>
+                            <id>14</id>
+                          </org.drools.task.User>
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/businessAdministrators/bag/org.drools.task.User"/>
+                        </bag>
+                        <initialized>true</initialized>
+                        <owner class="org.drools.task.Notification" reference="../.."/>
+                        <cachedSize>-1</cachedSize>
+                        <role>org.drools.task.Notification.businessAdministrators</role>
+                        <key class="long">1</key>
+                        <dirty>false</dirty>
+                        <storedSnapshot class="list">
+                          <org.drools.task.User reference="../../ba26-Aug-2008 05:50:37 org.hibernate.impl.SessionFactoryImpl close
+INFO: closing
+26-Aug-2008 05:50:37 org.hibernate.connection.DriverManagerConnectionProvider close
+INFO: cleaning up connection pool: jdbc:h2:file:\dev\drools\trunk7\drools-process\drools-process-task\mydb
+g/org.drools.task.User"/>
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/businessAdministrators/bag/org.drools.task.User"/>
+                        </storedSnapshot>
+                      </businessAdministrators>
+                      <presentationElements>
+                        <names class="org.hibernate.collection.PersistentBag">
+                          <bag>
+                            <org.drools.task.IL8NText>
+                              <id>7</id>
+                              <language>en-UK</language>
+                              <text>This is my notification name</text>
+                            </org.drools.task.IL8NText>
+                            <org.drools.task.IL8NText>
+                              <id>8</id>
+                              <language>en-DK</language>
+                              <text>Dies ist mein anmeldung Name</text>
+                            </org.drools.task.IL8NText>
+                          </bag>
+                          <initialized>true</initialized>
+                          <owner class="org.drools.task.Notification" reference="../../.."/>
+                          <cachedSize>-1</cachedSize>
+                          <role>org.drools.task.Notification.presentationElements.names</role>
+                          <key class="long">1</key>
+                          <dirty>false</dirty>
+                          <storedSnapshot class="list">
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+                          </storedSnapshot>
+                        </names>
+                        <subjects class="org.hibernate.collection.PersistentBag">
+                          <bag>
+                            <org.drools.task.IL8NText>
+                              <id>9</id>
+                              <language>en-UK</language>
+                              <text>This is my notification subject</text>
+                            </org.drools.task.IL8NText>
+                            <org.drools.task.IL8NText>
+                              <id>10</id>
+                              <language>en-DK</language>
+                              <text>Das ist mein anmeldung Thema</text>
+                            </org.drools.task.IL8NText>
+                          </bag>
+                          <initialized>true</initialized>
+                          <owner class="org.drools.task.Notification" reference="../../.."/>
+                          <cachedSize>-1</cachedSize>
+                          <role>org.drools.task.Notification.presentationElements.subjects</role>
+                          <key class="long">1</key>
+                          <dirty>false</dirty>
+                          <storedSnapshot class="list">
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+                          </storedSnapshot>
+                        </subjects>
+                        <descriptions class="org.hibernate.collection.PersistentBag">
+                          <bag>
+                            <org.drools.task.IL8NText>
+                              <id>5</id>
+                              <language>en-UK</language>
+                              <text>This is my notification description</text>
+                            </org.drools.task.IL8NText>
+                            <org.drools.task.IL8NText>
+                              <id>6</id>
+                              <language>en-DK</language>
+                              <text>Das ist mein anmeldung Beschreibung</text>
+                            </org.drools.task.IL8NText>
+                          </bag>
+                          <initialized>true</initialized>
+                          <owner class="org.drools.task.Notification" reference="../../.."/>
+                          <cachedSize>-1</cachedSize>
+                          <role>org.drools.task.Notification.presentationElements.descriptions</role>
+                          <key class="long">1</key>
+                          <dirty>false</dirty>
+                          <storedSnapshot class="list">
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+                            <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+                          </storedSnapshot>
+                        </descriptions>
+                      </presentationElements>
+                    </org.drools.task.Notification>
+                  </bag>
+                  <initialized>true</initialized>
+                  <owner class="org.drools.task.Escalation" reference="../.."/>
+                  <cachedSize>-1</cachedSize>
+                  <role>org.drools.task.Escalation.notifications</role>
+                  <key class="long">1</key>
+                  <dirty>false</dirty>
+                  <storedSnapshot class="list">
+                    <org.drools.task.Notification reference="../../bag/org.drools.task.Notification"/>
+                  </storedSnapshot>
+                </notifications>
+                <reassignments class="org.hibernate.collection.PersistentBag">
+                  <bag>
+                    <org.drools.task.Reassignment>
+                      <id>1</id>
+                      <documentation class="org.hibernate.collection.PersistentBag">
+                        <bag>
+                          <org.drools.task.IL8NText>
+                            <id>11</id>
+                            <language>en-UK</language>
+                            <text>Reassignment documentation</text>
+                          </org.drools.task.IL8NText>
+                          <org.drools.task.IL8NText>
+                            <id>12</id>
+                            <language>en-DK</language>
+                            <text>Neuzuweisung Dokumentation</text>
+                          </org.drools.task.IL8NText>
+                        </bag>
+                        <initialized>true</initialized>
+                        <owner class="org.drools.task.Reassignment" reference="../.."/>
+                        <cachedSize>-1</cachedSize>
+                        <role>org.drools.task.Reassignment.documentation</role>
+                        <key class="long">1</key>
+                        <dirty>false</dirty>
+                        <storedSnapshot class="list">
+                          <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText"/>
+                          <org.drools.task.IL8NText reference="../../bag/org.drools.task.IL8NText[2]"/>
+                        </storedSnapshot>
+                      </documentation>
+                      <potentialOwners class="org.hibernate.collection.PersistentBag">
+                        <bag>
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/potentialOwners/bag/org.drools.task.User"/>
+                          <org.drools.task.User>
+                            <firstName>Luke</firstName>
+                            <lastName>Cage </lastName>
+                            <id>16</id>
+                          </org.drools.task.User>
+                        </bag>
+                        <initialized>true</initialized>
+                        <owner class="org.drools.task.Reassignment" reference="../.."/>
+                        <cachedSize>-1</cachedSize>
+                        <role>org.drools.task.Reassignment.potentialOwners</role>
+                        <key class="long">1</key>
+                        <dirty>false</dirty>
+                        <storedSnapshot class="list">
+                          <org.drools.task.User reference="../../../../../../../../../../../../../peopleAssignments/potentialOwners/bag/org.drools.task.User"/>
+                          <org.drools.task.User reference="../../bag/org.drools.task.User[2]"/>
+                        </storedSnapshot>
+                      </potentialOwners>
+                    </org.drools.task.Reassignment>
+                  </bag>
+                  <initialized>true</initialized>
+                  <owner class="org.drools.task.Escalation" reference="../.."/>
+                  <cachedSize>-1</cachedSize>
+                  <role>org.drools.task.Escalation.reassignments</role>
+                  <key class="long">1</key>
+                  <dirty>false</dirty>
+                  <storedSnapshot class="list">
+                    <org.drools.task.Reassignment reference="../../bag/org.drools.task.Reassignment"/>
+                  </storedSnapshot>
+                </reassignments>
+              </org.drools.task.Escalation>
+            </bag>
+            <initialized>true</initialized>
+            <owner class="org.drools.task.Deadline" reference="../.."/>
+            <cachedSize>-1</cachedSize>
+            <role>org.drools.task.Deadline.escalations</role>
+            <key class="long">1</key>
+            <dirty>false</dirty>
+            <storedSnapshot class="list">
+              <org.drools.task.Escalation reference="../../bag/org.drools.task.Escalation"/>
+            </storedSnapshot>
+          </escalations>
+        </org.drools.task.Deadline>
+      </bag>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.deadlines.startDeadlines</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list">
+        <org.drools.task.Deadline reference="../../bag/org.drools.task.Deadline"/>
+      </storedSnapshot>
+    </startDeadlines>
+    <endDeadlines class="org.hibernate.collection.PersistentBag">
+      <bag class="java.util.Collections$EmptyList"/>
+      <initialized>true</initialized>
+      <owner class="org.drools.task.Task" reference="../../.."/>
+      <cachedSize>-1</cachedSize>
+      <role>org.drools.task.Task.deadlines.endDeadlines</role>
+      <key class="long">1</key>
+      <dirty>false</dirty>
+      <storedSnapshot class="list"/>
+    </endDeadlines>
+  </deadlines>
+</org.drools.task.Task>
\ No newline at end of file




More information about the jboss-svn-commits mailing list