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>