You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hise-commits@incubator.apache.org by wi...@apache.org on 2010/03/25 17:19:47 UTC

svn commit: r927510 - in /incubator/hise/trunk: hise-services/src/main/java/org/apache/hise/api/ hise-services/src/main/java/org/apache/hise/dao/ hise-services/src/main/java/org/apache/hise/engine/ hise-services/src/main/java/org/apache/hise/engine/jax...

Author: witek
Date: Thu Mar 25 17:19:46 2010
New Revision: 927510

URL: http://svn.apache.org/viewvc?rev=927510&view=rev
Log:
introduction of application exceptions, builder pattern for webservices messages

Added:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalAccessException.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalStateException.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TemplateEngine.java
    incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/engine/jaxws/
Modified:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/TaskQuery.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEScheduler.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/CompileException.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java
    incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
    incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java
    incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java
    incubator/hise/trunk/hise-wsdl-classes/pom.xml

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java Thu Mar 25 17:19:46 2010
@@ -10,13 +10,16 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 public interface HISEEngine {
+
     public static class TaskInfo {
         public TaskDefinition taskDefinition;
         public HISEDD parent;
         public TaskDD dd;
     }
     
-    public void registerTask(TaskInfo ti);
-    public Node receive(Handler handler, QName portType, String operation, Element body, Node requestHeader);
-    public HISEDao getHiseDao();
+    void registerTask(TaskInfo ti);
+
+    Node receive(Handler handler, QName portType, String operation, Element body, Node requestHeader);
+
+    HISEDao getHiseDao();
 }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java Thu Mar 25 17:19:46 2010
@@ -19,12 +19,8 @@
 
 package org.apache.hise.dao;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Date;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceException;
@@ -33,283 +29,18 @@ import javax.persistence.Query;
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hise.api.HISEUserDetails;
-import org.apache.hise.dao.TaskOrgEntity.OrgEntityType;
-import org.apache.hise.engine.wsdl.IllegalArgumentFault;
-import org.apache.hise.engine.wsdl.IllegalStateFault;
-import org.apache.hise.lang.xsd.htd.TTask;
-import org.apache.hise.lang.xsd.htda.TStatus;
-import org.springframework.orm.jpa.EntityManagerFactoryUtils;
+import org.apache.hise.dao.JpaQueryBuilder.JQBParam;
 import org.springframework.orm.jpa.JpaCallback;
 import org.springframework.orm.jpa.support.JpaDaoSupport;
-import org.apache.hise.dao.JpaQueryBuilder.JQBParam;
 
+/**
+ * DAO.
+ * 
+ */
 public class HISEDao extends JpaDaoSupport {
 
     private static final Log log = LogFactory.getLog(HISEDao.class);
 
-    // /**
-    // * Returns tasks. See {@link HumanTaskServices#getMyTasks(String, TaskTypes, GenericHumanRole, String, List, String, String, Integer)}
-    // * for method contract.
-    // */
-    // public List<Task> getTasks(Assignee owner, TaskTypes taskType, GenericHumanRole genericHumanRole, String workQueue, List<Status> statuses,
-    // String whereClause, String orderByClause, String createdOnClause, Integer maxTasks, Integer offset) {
-    //
-    // Map<String, Object> namedParameters = new HashMap<String, Object>();
-    //        
-    // StringBuilder queryBuilder = new StringBuilder("SELECT t FROM Task t ");
-    //        
-    // //query for human role must be first
-    //        
-    // if (genericHumanRole != null) {
-    //            
-    // switch (genericHumanRole) {
-    //            
-    // //TODO: owner for now but should be workQueue
-    //                
-    // case ACTUAL_OWNER:
-    // //duplicates statement set when workQueue is null - not an error
-    // queryBuilder.append("WHERE t.actualOwner = :owner AND ");
-    // namedParameters.put("owner", owner);
-    // break;
-    //                    
-    // case BUSINESS_ADMINISTRATORS:
-    // //TODO implement
-    // throw new UnsupportedOperationException("Query for BUSINESS_ADMINISTRATORS not implemented.");
-    // //break;
-    //                    
-    // case NOTIFICATION_RECIPIENTS:
-    // queryBuilder.append("JOIN t.notificationRecipients ghr WHERE ghr = :owner AND ");
-    // namedParameters.put("owner", owner);
-    // break;
-    //                    
-    // case POTENTIAL_OWNERS:
-    // queryBuilder.append("JOIN t.potentialOwners ghr WHERE ghr = :owner AND ");
-    // namedParameters.put("owner", owner);
-    // break;
-    //                    
-    // case TASK_INITIATOR:
-    // //TODO implement
-    // throw new UnsupportedOperationException("Query for TASK_INITIATOR not implemented.");
-    // //break;
-    //                    
-    // case TASK_STAKEHOLDERS:
-    // queryBuilder.append("JOIN t.taskStakeholders ghr WHERE ghr = :owner AND ");
-    // namedParameters.put("owner", owner);
-    // break;
-    //                    
-    // default:
-    // }
-    //         
-    // } else {
-    //            
-    // queryBuilder.append("WHERE ");
-    // }
-    //
-    // if (workQueue == null) {
-    //            
-    // //workQueue = owner.toString();
-    // //TODO ACTUAL_OWNER.toString() ?
-    // queryBuilder.append("t.actualOwner = :actualOwner AND ");
-    // namedParameters.put("actualOwner", owner);
-    // }
-    //        
-    // if (statuses != null && !statuses.isEmpty()) {
-    //            
-    // queryBuilder.append("t.status in (:statuses) AND ");
-    // namedParameters.put("statuses", statuses);
-    // }
-    //        
-    // if (createdOnClause != null) {
-    //            
-    // queryBuilder.append("t.createdOn = :createdOnClause AND ");
-    // namedParameters.put("createdOn", createdOnClause);
-    // }
-    //        
-    // if (whereClause != null) {
-    //            
-    // queryBuilder.append(whereClause);
-    // queryBuilder.append(" AND ");
-    // }
-    //
-    // String queryString = queryBuilder.toString();
-    //        
-    // if (queryString.endsWith(" AND ")) {
-    // queryString = queryString.substring(0, queryString.length() - 4);
-    // }
-    //
-    // if (queryString.endsWith(" WHERE ")) {
-    // queryString = queryString.substring(0, queryString.length() - 6);
-    // }
-    //        
-    // if (orderByClause != null) {
-    //            
-    // queryBuilder = new StringBuilder(queryString);
-    // queryBuilder.append(" ORDER BY ");
-    // queryBuilder.append(orderByClause);
-    // queryBuilder.append(" ");
-    //            
-    // } else {
-    //            
-    // queryBuilder = new StringBuilder(queryString);
-    // queryBuilder.append( " ORDER BY t.activationTime ");
-    //            
-    // }
-    //
-    // //TODO extract query building
-    // queryString = queryBuilder.toString();
-    //        
-    // if (log.isDebugEnabled()) {
-    // log.debug("query: " + queryString);
-    // log.debug("parameters: " + namedParameters);
-    // }
-    //        
-    // Query query = entityManager.createQuery(queryString);
-    //        
-    // if (maxTasks != null && maxTasks > 0) {
-    // //query.setFirstResult(0);
-    // query.setMaxResults(maxTasks);
-    // }
-    //        
-    // if (offset != null) {
-    // query.setFirstResult(offset);
-    // } else {
-    // query.setFirstResult(0);
-    // }
-    //        
-    // for (Map.Entry<String, Object> parameter : namedParameters.entrySet()) {
-    // query.setParameter(parameter.getKey(), parameter.getValue());
-    // }
-    //        
-    // List<Task> result = query.getResultList();
-    // return result;
-    // }
-    // /**
-    // * Checks if given task exists.
-    // * @param primaryKey Primary key of the entity
-    // * @return true if entity exists false otherwise
-    // */
-    // public boolean exists(Long id) {
-    // try {
-    // entityManager.find(Task.class,id);
-    // return true;
-    // } catch (EntityNotFoundException xENF) {
-    // return false;
-    // }
-    // }
-    //    
-    // /**
-    // * Retrieves domain object from persistent store.
-    // * @param id Identifier of requested domain object
-    // * @return fetched domain object
-    // */
-    // public Task fetch(Long id) {
-    // return entityManager.find(Task.class, id);
-    // }
-    //    
-    // /**
-    // * Saves domain object in persistent store.
-    // * @param entity Domain object to save
-    // */
-    // public void update(Task entity) {
-    // entityManager.merge(entity);
-    // }
-    //    
-    // /**
-    // * Creates domain object in persistent store.
-    // * @param entity Domain object to create
-    // */
-    // public void create(Task entity) {
-    // entityManager.persist(entity);
-    // }
-    //
-    // public List<Task> getTasks(Assignee owner, TaskTypes taskType, GenericHumanRole genericHumanRole, String workQueue, List<Status> status, String whereClause, String orderByClause, String createdOnClause, Integer maxTasks, Integer offset) {
-    // // TODO Auto-generated method stub
-    // return null;
-    // }
-    //    
-    //    
-    // /**
-    // * {@inheritDoc}
-    // */
-    //
-    // /**
-    // * {@inheritDoc}
-    // */
-    // public Assignee fetch(Long id) {
-    // return entityManager.find(Assignee.class, id);
-    // }
-    //    
-    // /**
-    // * {@inheritDoc}
-    // */
-    // public void update(Assignee entity) {
-    // entityManager.merge(entity);
-    // }
-    //    
-    // /**
-    // * {@inheritDoc}
-    // */
-    // public void create(Assignee entity) {
-    // entityManager.persist(entity);
-    // }
-    //
-    // /**
-    // * {@inheritDoc}
-    // */
-    // public Group getGroup(String name) {
-    //        
-    // Query query = entityManager.createQuery("SELECT g FROM Group g WHERE g.name = :name");
-    // query.setParameter("name", name);
-    //        
-    // try {
-    //            
-    // return (Group) query.getSingleResult();
-    // } catch (NoResultException e) {
-    //            
-    // return null;
-    // }
-    // }
-    //
-    // /**
-    // * {@inheritDoc}
-    // * TODO should work when ids are set
-    // */
-    // public Set<Assignee> saveNotExistingAssignees(Set<Assignee> assignees) {
-    //        
-    // Set<Assignee> result = new HashSet<Assignee>();
-    //        
-    // for (Assignee a : assignees) {
-    //
-    // if (a instanceof Person) {
-    //
-    // Person p = this.getPerson(a.getName());
-    // if (p == null) {
-    // this.create(a);
-    // p = (Person) a;
-    // }
-    // result.add(p);
-    //               
-    // } else if (a instanceof Group) {
-    //                
-    // Group g = this.getGroup(a.getName());
-    // if (g == null) {
-    // this.create(a);
-    // g = (Group) a;
-    // }
-    // result.add(g);
-    // }
-    // }
-    //
-    // return result;
-    // }
-    //    
-
-    
-    // public Person loadUser(String userId) {
-    // return getJpaTemplate().find(Person.class, userId);
-    // }
-
     public OrgEntity getOrgEntity(final String name) {
         return (OrgEntity) getJpaTemplate().execute(new JpaCallback() {
             public Object doInJpa(EntityManager em) throws PersistenceException {
@@ -320,6 +51,11 @@ public class HISEDao extends JpaDaoSuppo
         });
     }
     
+    /**
+     * Returns tasks presented to user based on TaskQuery criteria.
+     * @param query
+     * @return
+     */
     public List<Task> getUserTasks(final TaskQuery query) {
         
         Validate.notNull(query);
@@ -331,7 +67,7 @@ public class HISEDao extends JpaDaoSuppo
                     
                     Validate.notNull(em);
                     
-                    return em.createQuery("select distinct t from Task t where t.actualOwner = :user")
+                    return em.createQuery("select distinct t from Task t where t.actualOwner = :user order by t.id")
                     .setParameter("user", query.getUser())
                     .setMaxResults(query.getMaxTasks())
                     .getResultList();
@@ -339,6 +75,8 @@ public class HISEDao extends JpaDaoSuppo
             });
 
         case POTENTIALOWNERS:
+        case BUSINESSADMINISTRATORS:
+        case EXCLUDEDOWNERS:
             return (List<Task>) getJpaTemplate().executeFind(new JpaCallback() {
                 public Object doInJpa(EntityManager em) throws PersistenceException {
                     
@@ -354,13 +92,14 @@ public class HISEDao extends JpaDaoSuppo
                                     " or e.name in (:groups) and e.type = :constGroup", 
                                     new JQBParam("constGroup", TaskOrgEntity.OrgEntityType.GROUP)
                                 }),
-                            ") and e.genericHumanRole = :role and t.actualOwner is null",
+                            ") and e.genericHumanRole = :role order by t.id",
                             new JQBParam("role", query.getGenericHumanRole())
                     })
                     .setMaxResults(query.getMaxTasks())
                     .getResultList();
                 }
             });
+            
         default:
             throw new IllegalStateException("generic human role not supported");
         }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java Thu Mar 25 17:19:46 2010
@@ -20,18 +20,13 @@
 package org.apache.hise.dao;
 
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Map.Entry;
 
-import javax.annotation.Resource;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -41,31 +36,14 @@ import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.JoinColumn;
 import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
 import javax.persistence.MapKey;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
-import javax.persistence.Transient;
-import javax.xml.XMLConstants;
-import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 
-import net.sf.saxon.Configuration;
-import net.sf.saxon.query.DynamicQueryContext;
-import net.sf.saxon.query.StaticQueryContext;
-import net.sf.saxon.query.XQueryExpression;
-import net.sf.saxon.trans.XPathException;
-import net.sf.saxon.type.AnyItemType;
-
-import org.apache.commons.lang.Validate;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Configurable;
@@ -89,9 +67,9 @@ public class Task extends JpaBase {
     @Column(nullable = false)
     private String taskDefinitionKey;
 
-    public static enum TaskTypes {
-        ALL, TASKS, NOTIFICATIONS;
-    }
+//    public static enum TaskTypes {
+//        ALL, TASKS, NOTIFICATIONS;
+//    }
 
     /**
      * Task statuses.
@@ -207,6 +185,9 @@ public class Task extends JpaBase {
     @Enumerated(EnumType.STRING)
     private Status statusBeforeSuspend;
 
+    /**
+     * Owner of a task.
+     */
     private String actualOwner;
 
     /**

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/TaskQuery.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/TaskQuery.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/TaskQuery.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/TaskQuery.java Thu Mar 25 17:19:46 2010
@@ -24,16 +24,21 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
+import org.apache.commons.lang.Validate;
 import org.apache.hise.lang.xsd.htda.TStatus;
 
 public class TaskQuery {
 
+    /**
+     * Username or login.
+     */
     private String user;
+    
     private Collection<String> userGroups = new HashSet<String>();
     private String taskType = "ALL";
     private GenericHumanRole genericHumanRole = GenericHumanRole.ACTUALOWNER;
     private String workQueue = "";
-    private List<TStatus> status = Collections.EMPTY_LIST;
+    private List<TStatus> statuses = Collections.EMPTY_LIST;
     private String whereClause = "";
     private String createdOnClause = "";
     private Integer maxTasks = 20;
@@ -78,12 +83,12 @@ public class TaskQuery {
         this.workQueue = workQueue;
     }
 
-    public List<TStatus> getStatus() {
-        return status;
+    public List<TStatus> getStatuses() {
+        return statuses;
     }
 
-    public void setStatus(List<TStatus> status) {
-        this.status = status;
+    public void setStatuses(List<TStatus> statuses) {
+        this.statuses = statuses;
     }
 
     public String getWhereClause() {
@@ -107,6 +112,7 @@ public class TaskQuery {
     }
 
     public void setMaxTasks(Integer maxTasks) {
+        Validate.notNull(maxTasks, "Maximum tasks number cannot be set to null.");
         this.maxTasks = maxTasks;
     }
 }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEScheduler.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEScheduler.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEScheduler.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEScheduler.java Thu Mar 25 17:19:46 2010
@@ -41,7 +41,7 @@ import org.springframework.transaction.s
  */
 public class HISEScheduler {
     
-    private Log __log = LogFactory.getLog(HISEScheduler.class);
+    private static final Log log = LogFactory.getLog(HISEScheduler.class);
     
     private HISEEngineImpl hiseEngine;
     private ScheduledExecutorService executor;
@@ -55,7 +55,7 @@ public class HISEScheduler {
 
         public void run() {
             final Date currentEventDateTime = Calendar.getInstance().getTime();
-            __log.debug("scheduler CheckJobs at " + currentEventDateTime);
+            log.debug("scheduler CheckJobs at " + currentEventDateTime);
             try {
                 TransactionTemplate tt = new TransactionTemplate(transactionManager);
                 List<Job> jobs = (List<Job>) tt.execute(new TransactionCallback() {
@@ -64,7 +64,7 @@ public class HISEScheduler {
                     }
                 });
                 
-                __log.debug("dequeued jobs: " + jobs);
+                log.debug("dequeued jobs: " + jobs);
     
                 for (Job j : jobs) {
                     try {
@@ -74,9 +74,9 @@ public class HISEScheduler {
                             public Object doInTransaction(TransactionStatus ts) {
                                 Job j3 = hiseEngine.getHiseDao().find(Job.class, j2); 
                                 if (j3 == null) {
-                                    __log.debug("Skipping job " + j3 + " - it's no longer id DB");
+                                    log.debug("Skipping job " + j3 + " - it's no longer id DB");
                                 } else {
-                                    __log.debug("Executing job " + j3);
+                                    log.debug("Executing job " + j3);
                                     hiseEngine.executeJob(j3);
                                     hiseEngine.getHiseDao().remove(j3);
                                 }
@@ -85,11 +85,11 @@ public class HISEScheduler {
                             
                         });
                     } catch (Throwable t) {
-                        __log.warn("Job execution failed " + j, t);
+                        log.warn("Job execution failed " + j, t);
                     }
                 }
             } catch (Throwable t) {
-                __log.warn("CheckJobs failed", t);
+                log.warn("CheckJobs failed", t);
             }
         }
     }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java Thu Mar 25 17:19:46 2010
@@ -52,6 +52,7 @@ import org.w3c.dom.Node;
 @WebServiceProvider
 @ServiceMode(value = Service.Mode.MESSAGE)
 public class HISEJaxWSService implements Provider<SOAPMessage>, Handler {
+
     private static Log __log = LogFactory.getLog(HISEJaxWSService.class);
 
     private HISEEngine hiseEngine;
@@ -59,6 +60,7 @@ public class HISEJaxWSService implements
     private PlatformTransactionManager transactionManager;
     private MessageFactory messageFactory;
     private TransactionTemplate transactionTemplate;
+    
     private String id;
 
     public HISEJaxWSService() throws Exception {
@@ -73,9 +75,9 @@ public class HISEJaxWSService implements
 		return id;
 	}
 
-	public void setId(String id) {
-		this.id = id;
-	}
+//	public void setId(String id) {
+//		this.id = id;
+//	}
 
 	public void setHiseEngine(HISEEngine hiseEngine) {
         this.hiseEngine = hiseEngine;

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java Thu Mar 25 17:19:46 2010
@@ -57,6 +57,8 @@ import org.apache.hise.lang.xsd.htda.TTa
 import org.apache.hise.lang.xsd.htda.TTaskQueryResultSet;
 
 import org.apache.hise.lang.xsd.htdt.TTime;
+import org.apache.hise.runtime.HiseIllegalAccessException;
+import org.apache.hise.runtime.HiseIllegalStateException;
 import org.apache.hise.runtime.Task;
 import org.springframework.transaction.annotation.Transactional;
 import org.w3c.dom.Node;
@@ -78,7 +80,7 @@ import org.w3c.dom.Node;
 @WebService
 public class TaskOperationsImpl implements TaskOperations {
     
-    private static Log log = LogFactory.getLog(TaskOperationsImpl.class);
+    private static final Log log = LogFactory.getLog(TaskOperationsImpl.class);
 
     private HISEEngineImpl hiseEngine;
 
@@ -94,15 +96,6 @@ public class TaskOperationsImpl implemen
         context = (WebServiceContext) Class.forName("org.apache.cxf.jaxws.context.WebServiceContextImpl").newInstance();
     }
 
-    /**
-     * IoC setter.
-     * 
-     * @param hiseEngine
-     */
-    public void setHiseEngine(HISEEngineImpl hiseEngine) {
-        this.hiseEngine = hiseEngine;
-    }
-
     protected String getUserString() {
         return context.getUserPrincipal().getName();
     }
@@ -125,7 +118,7 @@ public class TaskOperationsImpl implemen
         query.setTaskType(taskType);
         query.setGenericHumanRole(GenericHumanRole.valueOf(genericHumanRole));
         query.setWorkQueue(workQueue);
-        query.setStatus(status);
+        query.setStatuses(status);
         query.setWhereClause(whereClause);
         query.setCreatedOnClause(createdOnClause);
 
@@ -160,16 +153,29 @@ public class TaskOperationsImpl implemen
         return t.getOutput(part);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void stop(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.stop();
+        
+        try {
+            t.stop();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void suspend(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.suspend();
+        
+        try {
+            t.suspend();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void suspendUntil(String identifier, TTime time) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
@@ -182,7 +188,11 @@ public class TaskOperationsImpl implemen
             when2.addTo(when);
         }
 
-        t.suspendUntil(when);
+        try {
+            t.suspendUntil(when);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void remove(String identifier) throws IllegalAccessFault, IllegalArgumentFault {
@@ -195,7 +205,12 @@ public class TaskOperationsImpl implemen
         // OrgEntity user = loadUser();
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.resume();
+        
+        try {
+            t.resume();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public org.apache.hise.lang.xsd.htda.TTask getTaskInfo(String identifier) throws IllegalArgumentFault {
@@ -205,20 +220,38 @@ public class TaskOperationsImpl implemen
     public void claim(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
         Task task = Task.load(hiseEngine, Long.valueOf(identifier));
         task.setCurrentUser(getUserString());
-        task.claim();
+        
+        try {
+            task.claim();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        } catch (HiseIllegalAccessException e) {
+            throw new IllegalAccessFault(e.getMessage());
+        }
     }
 
     public void fail(String identifier, String faultName, Object faultData) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault,
             IllegalOperationFault {
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.fail();
+        
+        try {
+            t.fail();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void forward(String identifier, TOrganizationalEntity organizationalEntity) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
+        
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.forward(organizationalEntity);
+        
+        try {
+            t.forward(organizationalEntity);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public String getTaskDescription(String identifier, String contentType) throws IllegalArgumentFault {
@@ -230,13 +263,23 @@ public class TaskOperationsImpl implemen
     public void release(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.release();
+        
+        try {
+            t.release();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void start(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
         Task t = Task.load(hiseEngine, Long.parseLong(identifier));
         t.setCurrentUser(getUserString());
-        t.start();
+        
+        try {
+            t.start();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void complete(String identifier, Object taskData) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
@@ -244,7 +287,12 @@ public class TaskOperationsImpl implemen
         t.setCurrentUser(getUserString());
         //TODO set output
         //t.setOutput(((Node) taskData).getFirstChild());
-        t.complete();
+        
+        try {
+            t.complete();
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateFault(e.getMessage());
+        }
     }
 
     public void setOutput(String identifier, String part, Object taskData) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
@@ -368,20 +416,29 @@ public class TaskOperationsImpl implemen
         org.apache.hise.dao.Task taskDto = task.getTaskDto();
 
         TTask result = new TTask();
-        result.setId(taskDto.getId().toString());
-        result.setTaskType(taskDto.isNotification() ? "NOTIFICATION" : "TASK");
-        result.setCreatedOn(taskDto.getCreatedOn());
-        result.setActivationTime(taskDto.getActivationTime());
+        result.withId(taskDto.getId().toString()).
+            withTaskType(taskDto.isNotification() ? "NOTIFICATION" : "TASK").
+            withCreatedOn(taskDto.getCreatedOn()).
+            withActivationTime(taskDto.getActivationTime()).
+            withCreatedBy(taskDto.getCreatedBy()).
+            withPresentationName(task.getTaskEvaluator().getPresentationName()).
+            withPresentationSubject(task.getTaskEvaluator().evalPresentationSubject()).
+            withName(taskDto.getTaskDefinitionName()).
+            withStatus(TStatus.fromValue(taskDto.getStatus().toString()));
+
         if (taskDto.getActualOwner() != null) {
             result.setActualOwner(taskDto.getActualOwner());
         }
-        result.setCreatedBy(taskDto.getCreatedBy());
-        result.setPresentationName(task.getTaskEvaluator().getPresentationName());
-        result.setPresentationSubject(task.getTaskEvaluator().evalPresentationSubject());
-        result.setName(taskDto.getTaskDefinitionName());
-        result.setStatus(TStatus.fromValue(taskDto.getStatus().toString()));
 
         return result;
     }
 
+    /**
+     * IoC setter.
+     * 
+     * @param hiseEngine
+     */
+    public void setHiseEngine(HISEEngineImpl hiseEngine) {
+        this.hiseEngine = hiseEngine;
+    }
 }
\ No newline at end of file

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/CompileException.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/CompileException.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/CompileException.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/CompileException.java Thu Mar 25 17:19:46 2010
@@ -20,6 +20,7 @@
 package org.apache.hise.engine.store;
 
 public class CompileException extends Exception {
+    
     private static final long serialVersionUID = 1L;
 
     public CompileException(String arg0, Throwable arg1) {

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/DeadlineController.java Thu Mar 25 17:19:46 2010
@@ -97,7 +97,7 @@ public class DeadlineController implemen
         }
     }
     
-    public void deadlineCrossed(Job deadline) {
+    public void deadlineCrossed(Job deadline) throws HiseIllegalStateException {
         __log.debug("deadline crossed" + deadline);
 
         EscalationResult e = task.getTaskEvaluator().findEscalation(deadline.getDetails());

Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalAccessException.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalAccessException.java?rev=927510&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalAccessException.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalAccessException.java Thu Mar 25 17:19:46 2010
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise.runtime;
+
+/**
+ * By default, the identity of the person on behalf of which the operation is invoked is
+ * passed to the task. When the person is not authorized to perform the operation the
+ * illegalAccessFault and recipientNotAllowed is thrown in the case of tasks and
+ * notifications respectively.
+ * 
+ * @author Witek Wołejszo
+ * @author Warren Crossing
+ */
+public class HiseIllegalAccessException extends Exception {
+
+    public HiseIllegalAccessException(String msg) {
+        super(msg);
+    }
+
+}

Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalStateException.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalStateException.java?rev=927510&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalStateException.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/HiseIllegalStateException.java Thu Mar 25 17:19:46 2010
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise.runtime;
+
+/**
+ * Invoking an operation that is not allowed in the current state of the
+ * task results in an illegalStateFault.
+ *
+ * @author Warren Crossing 
+ */
+public class HiseIllegalStateException extends Exception {
+
+    public HiseIllegalStateException(String msg) {
+        super(msg);
+    }
+
+}

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java Thu Mar 25 17:19:46 2010
@@ -149,7 +149,7 @@ public class Task {
         return t;
     }
 
-    private void tryNominateOwner() {
+    private void tryNominateOwner() throws HiseIllegalStateException {
         {
             int poSize = 0;
             TaskOrgEntity selected = null;
@@ -189,12 +189,25 @@ public class Task {
         
         engine.getHiseDao().persist(taskDto);
         t.taskDto = taskDto;
-        t.setStatus(Status.CREATED);
+        try {
+            t.setStatus(Status.CREATED);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateException(e);
+        }
 
         taskDto.setPeopleAssignments(t.getTaskEvaluator().evaluatePeopleAssignments());
         
-        t.setStatus(Status.READY);
-        t.tryNominateOwner();
+        try {
+            t.setStatus(Status.READY);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateException(e);
+        }
+
+        try {
+            t.tryNominateOwner();
+        } catch (HiseIllegalStateException e) {
+            t.__log.warn("Could not nominate owner.");
+        }
 
         return t;
 
@@ -263,20 +276,28 @@ public class Task {
         engine.getHiseDao().persist(taskDto);
         
         t.taskDto = taskDto;
-        t.setStatus(Status.CREATED);
+        try {
+            t.setStatus(Status.CREATED);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateException(e);
+        }
 
         taskDto.setPeopleAssignments(t.getTaskEvaluator().evaluatePeopleAssignments());
         
-        t.setStatus(Status.READY);
+        try {
+            t.setStatus(Status.READY);
+        } catch (HiseIllegalStateException e) {
+            throw new IllegalStateException(e);
+        }
+
         engine.getHiseDao().persist(taskDto);
         
         return t;
     }
 
-    
-    public void setActualOwner(String user) {
-        taskDto.setActualOwner(user);
+    public void setActualOwner(String user) throws HiseIllegalStateException {
         setStatus(Status.RESERVED);
+        taskDto.setActualOwner(user);
     }
     
     public void setOutput(Node requestXml) {
@@ -412,7 +433,7 @@ public class Task {
     // }
     //
 
-    public void setStatus(Status newStatus) {
+    public void setStatus(Status newStatus) throws HiseIllegalStateException {
         for (TaskStateListener l : taskStateListeners) {
             l.stateChanged(taskDto.getStatus(), newStatus);
         }
@@ -520,28 +541,25 @@ public class Task {
     /**
      * Claims task. Task in READY status can be claimed by people from potential owners group not listed in excluded owners.
      * 
-     * @param person
-     *            The Person that claims the task.
-     * @throws HTIllegalStateException
-     *             Thrown when task is in illegal state for claim i.e. not READY.
-     * @throws HTIllegalAccessException
-     *             Thrown when task is in illegal state for claim i.e. not READY or person cannot become actual owner i.e. not potential owner or excluded.
+     * @throws HiseIllegalStateException Thrown when task is in illegal state for claim i.e. not READY.
+     * @throws HiseIllegalAccessException Thrown when task is in illegal state for claim i.e. not READY or person cannot 
+     *                                    become actual owner i.e. not potential owner or excluded.
      */
-    public void claim() {
+    public void claim() throws HiseIllegalStateException, HiseIllegalAccessException {
 
         if (taskDto.getActualOwner() != null) {
-            throw new IllegalStateException("Actual owner already set " + taskDto.getActualOwner());
+            throw new HiseIllegalStateException("Actual owner already set " + taskDto.getActualOwner());
         }
 
         if (!taskDto.getStatus().equals(org.apache.hise.dao.Task.Status.READY)) {
-            throw new IllegalStateException("Task not claimable. Not READY." + taskDto.getStatus());
+            throw new HiseIllegalStateException("Task not claimable. Not READY." + taskDto.getStatus());
         }
 
-        // // check if the task can be claimed by person
-        // if (!this.getPotentialOwners().contains(person)) {
-        // throw new HTIllegalAccessException("Not a potential owner.", person.getName());
-        // }
-        //
+        // check if the task can be claimed by person
+        if (isCurrentUserInPotentialOwners()) {
+            throw new HiseIllegalAccessException("User: " + currentUser + " is not a potential owner.");
+        }
+        
         // //TODO test
         // // check if the person is excluded from potential owners
         // if ((this.getExcludedOwners() != null && this.getExcludedOwners().contains(person))) {
@@ -554,23 +572,34 @@ public class Task {
         setStatus(Status.RESERVED);
     }
     
-    public void start() {
+    /**
+     * TODO implement
+     */
+    private boolean isCurrentUserInPotentialOwners() {
+        return true;
+    }
+
+    public void start() throws HiseIllegalStateException {
         setStatus(Status.IN_PROGRESS);
     }
 
-    public void stop() {
+    public void stop() throws HiseIllegalStateException {
         setStatus(Status.RESERVED);
     }
 
-    public void release() {
+    public void release() throws HiseIllegalStateException {
         setStatus(Status.READY);
     }
     
-    public void suspend() {
+    /**
+     * Suspends the task.
+     * @throws HiseIllegalStateException 
+     */
+    public void suspend() throws HiseIllegalStateException {
         setStatus(Status.SUSPENDED);
     }
     
-    public void suspendUntil(Date when) {
+    public void suspendUntil(Date when) throws HiseIllegalStateException {
         Validate.notNull(when);
 
         setStatus(Status.SUSPENDED);
@@ -578,28 +607,26 @@ public class Task {
         taskDto.setSuspendUntil(job);
     }
     
-    public void suspendUntilJobAction() {
+    public void suspendUntilJobAction() throws HiseIllegalStateException {
         taskDto.setSuspendUntil(null);
         resume();
     }
 
-    public void deadlineJobAction() {
+    public void deadlineJobAction() throws HiseIllegalStateException {
         taskDto.getDeadlines().remove(getCurrentJob());
         deadlineController.deadlineCrossed(getCurrentJob());
     }
-
-    
     
-    public void resume() {
+    public void resume() throws HiseIllegalStateException {
         setStatus(taskDto.getStatusBeforeSuspend());
     }
 
-    public void fail() {
+    public void fail() throws HiseIllegalStateException {
         setStatus(Status.FAILED);
         sendResponse();
     }
 
-    public void complete() {
+    public void complete() throws HiseIllegalStateException {
         setStatus(Status.COMPLETED);
         sendResponse();
     }
@@ -618,12 +645,12 @@ public class Task {
         }
     }
 
-    private void releaseOwner() {
+    private void releaseOwner() throws HiseIllegalStateException {
         setStatus(Status.READY);
         taskDto.setActualOwner(null);
     }
     
-    public void forward(TOrganizationalEntity target) {
+    public void forward(TOrganizationalEntity target) throws HiseIllegalStateException {
         Set<TaskOrgEntity> e = new HashSet<TaskOrgEntity>();
         
         for (String user : XmlUtils.notNull(target.getUsers(), new TUserlist()).getUser()) {
@@ -647,7 +674,7 @@ public class Task {
         forward(e);
     }
     
-    public void forward(Set<TaskOrgEntity> targets) {
+    public void forward(Set<TaskOrgEntity> targets) throws HiseIllegalStateException {
         __log.debug("forwarding to " + targets);
         releaseOwner();
         

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskLifecycle.java Thu Mar 25 17:19:46 2010
@@ -35,7 +35,8 @@ public class TaskLifecycle implements Ta
         this.task = task;
     }
 
-    public void stateChanged(Status oldStatus, Status newStatus) {
+    public void stateChanged(Status oldStatus, Status newStatus) throws HiseIllegalStateException {
+
         boolean isOk = false;
 
         // check if change is valid for current state
@@ -103,7 +104,7 @@ public class TaskLifecycle implements Ta
             } else {
                 String msg = "Changing Task status : " + task + " status from: " + oldStatus + " to: " + newStatus + " is not allowed.";
                 __log.error(msg);
-                throw new IllegalStateException(msg);
+                throw new HiseIllegalStateException(msg);
             }
 
         } else {

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskStateListener.java Thu Mar 25 17:19:46 2010
@@ -20,5 +20,5 @@
 package org.apache.hise.runtime;
 
 public interface TaskStateListener {
-    void stateChanged(org.apache.hise.dao.Task.Status oldStatus, org.apache.hise.dao.Task.Status newStatus);
+    void stateChanged(org.apache.hise.dao.Task.Status oldStatus, org.apache.hise.dao.Task.Status newStatus) throws HiseIllegalStateException;
 }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java Thu Mar 25 17:19:46 2010
@@ -31,16 +31,12 @@ import org.apache.commons.logging.LogFac
  * Utility class used to merge presentation parameters into template strings using regexp replace.
  * @author Witek Wołejszo
  */
-public class RegexpTemplateEngine {
+public class RegexpTemplateEngine implements TemplateEngine {
     
     private final Log log = LogFactory.getLog(RegexpTemplateEngine.class);
 
-    /**
-     * Replaces occurrences of "$key$" in a template string with values provided in presentationParameters.
-     * Removes blocks starting with ?IF-key? and ending with ?ENDIF-key? if key is not present in presentationParameters.
-     * @param template The template String.
-     * @param presentationParameterValues Presentation parameters.
-     * @return The template string with filled in values.
+    /* (non-Javadoc)
+     * @see org.apache.hise.utils.TemplateEngine#merge(java.lang.String, java.util.Map)
      */
     public String merge(String template, Map<String, Object> presentationParameterValues) {
          

Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TemplateEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TemplateEngine.java?rev=927510&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TemplateEngine.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TemplateEngine.java Thu Mar 25 17:19:46 2010
@@ -0,0 +1,19 @@
+package org.apache.hise.utils;
+
+import java.util.Map;
+
+/**
+ * Merges presentation parameters into template strings.
+ */
+public interface TemplateEngine {
+
+    /**
+     * Replaces occurrences of "$key$" in a template string with values provided in presentationParameters.
+     * Removes blocks starting with ?IF-key? and ending with ?ENDIF-key? if key is not present in presentationParameters.
+     * @param template The template String.
+     * @param presentationParameterValues Presentation parameters.
+     * @return The template string with filled in values.
+     */
+    String merge(String template, Map<String, Object> presentationParameterValues);
+
+}
\ No newline at end of file

Modified: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java Thu Mar 25 17:19:46 2010
@@ -32,8 +32,8 @@ import org.junit.Test;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
-
 public class CompilerTest {
+    
     @Test
     public void testCompile() throws Exception {
         Resource htdXml = new ClassPathResource("testHtd1.xml");
@@ -49,11 +49,11 @@ public class CompilerTest {
         Assert.assertEquals("notify", hi.getTaskDefinitions().get(QName.valueOf("{http://www.insurance.example.com/claims}Notify2")).getTaskInterface().getOperation());
     }
     
-    @Test
-    public void testDuplicateTaskDef() throws Exception {
+    @Test//(expected = CompileException.class)
+    public void testDuplicateTaskDef() throws CompileException {
         Resource htdXml = new ClassPathResource("duplicateTaskDef.xml");
         try {
-            HumanInteractions hi = HumanInteractionsCompiler.compile(htdXml);
+            HumanInteractionsCompiler.compile(htdXml);
         } catch (CompileException e) {
             Assert.assertTrue(e.getCause().getMessage().contains("Duplicate task found, name: {http://www.insurance.example.com/claims}Task1"));
             return;

Modified: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java Thu Mar 25 17:19:46 2010
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.hise.utils.RegexpTemplateEngine;
+import org.apache.hise.utils.TemplateEngine;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -36,7 +37,7 @@ public class RegexpTemplateEngineTest {
     @Test
     public void mergeTest1() {
         
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         String r1 = te.merge("Raz dwa trzy.", null);
         
         Assert.assertEquals("Raz dwa trzy.", r1);
@@ -59,7 +60,7 @@ public class RegexpTemplateEngineTest {
     @Test
     public void mergeTest2() {
         
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         
         Map<String, Object> pp = new HashMap<String, Object>();
         pp.put("euroAmount", Double.valueOf(1));
@@ -72,7 +73,7 @@ public class RegexpTemplateEngineTest {
     
     @Test
     public void removeTest1() {
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         Map<String, Object> pp = new HashMap<String, Object>();
         //no x in pp
         String r1 = te.merge("?IF-x?bla bla bla?ENDIF-x?", pp);
@@ -81,7 +82,7 @@ public class RegexpTemplateEngineTest {
     
     @Test
     public void noRemoveTest1() {
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         Map<String, Object> pp = new HashMap<String, Object>();
         pp.put("x", "1");
         pp.put("y", "bleh");
@@ -91,7 +92,7 @@ public class RegexpTemplateEngineTest {
     
     @Test
     public void noRemoveTest2() {
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         Map<String, Object> pp = new HashMap<String, Object>();
         pp.put("correctedItemName1", "pozycja");
         pp.put("correctedItemNewNetValue1", "1");
@@ -101,7 +102,7 @@ public class RegexpTemplateEngineTest {
     
     @Test
     public void noRemoveTest3() {
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         Map<String, Object> pp = new HashMap<String, Object>();
         pp.put("correctedItemName1", "pozycja");
         pp.put("correctedItemNewNetValue1", "1");
@@ -113,7 +114,7 @@ public class RegexpTemplateEngineTest {
     
     @Test
     public void combinedTest1() {
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         Map<String, Object> pp = new HashMap<String, Object>();
         pp.put("y", "1");
         String r1 = te.merge("?IF-x?bla bla bla?ENDIF-x?$y$", pp);
@@ -123,7 +124,7 @@ public class RegexpTemplateEngineTest {
     @Test
     public void mergeTestNoPresentationValue() {
         
-        RegexpTemplateEngine te = new RegexpTemplateEngine();
+        TemplateEngine te = new RegexpTemplateEngine();
         
         Map<String, Object> pp = new HashMap<String, Object>();
         String r1 = te.merge("$Raz$ dwa $trzy$.", pp);

Modified: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java Thu Mar 25 17:19:46 2010
@@ -41,8 +41,9 @@ public class TaskOperationsTest {
                 return Collections.singleton("group1");
             }
         });
-        MockHiseDao hd = new MockHiseDao();
-        he.setHiseDao(hd);
+
+        MockHiseDao dao = new MockHiseDao();
+        he.setHiseDao(dao);
         ti.setHiseEngine(he);
         
         List<TTask> r = ti.getMyTasks("ALL", "ACTUALOWNER", "", Collections.EMPTY_LIST, "", "", 100);

Modified: incubator/hise/trunk/hise-wsdl-classes/pom.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-wsdl-classes/pom.xml?rev=927510&r1=927509&r2=927510&view=diff
==============================================================================
--- incubator/hise/trunk/hise-wsdl-classes/pom.xml (original)
+++ incubator/hise/trunk/hise-wsdl-classes/pom.xml Thu Mar 25 17:19:46 2010
@@ -56,12 +56,32 @@
                 <groupId>org.apache.cxf</groupId>
                 <artifactId>cxf-codegen-plugin</artifactId>
                 <version>${cxf.version}</version>
+                <dependencies>
+                    <!-- generate constructors -->
+                    <dependency>
+                        <groupId>net.java.dev.jaxb2-commons</groupId>
+                        <artifactId>jaxb-fluent-api</artifactId>
+                        <version>2.1.8</version>
+                    </dependency>
+                    <!-- default value support net.java.dev.jaxb2-commons -->
+                    <dependency>
+                        <groupId>org.apache.cxf</groupId>
+                        <artifactId>cxf-xjc-dv</artifactId>
+                        <version>${cxf.version}</version>
+                    </dependency>
+                </dependencies>
                 <executions>
                     <execution>
                         <id>generate-sources</id>
                         <phase>generate-sources</phase>
                         <configuration>
                             <sourceRoot>${project.build.directory}/generated-sources/main</sourceRoot>
+                            <defaultOptions>
+                                <extraargs>
+                                    <extraarg>-xjc-Xfluent-api</extraarg>
+                                    <extraarg>-xjc-Xdv</extraarg>
+                                </extraargs>
+                            </defaultOptions>
                             <wsdlOptions>
                                 <wsdlOption>
                                     <wsdl>${project.build.directory}/wsdl/ws-humantask.wsdl</wsdl>