Skip to content

Commit

Permalink
JBPM-6225 - Explicit Accept Header on RestWorkItemHandler (#953)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tihomir Surdilovic authored and mswiderski committed Aug 23, 2017
1 parent 5b47648 commit c60cbea
Show file tree
Hide file tree
Showing 4 changed files with 425 additions and 205 deletions.
Expand Up @@ -53,6 +53,8 @@
import org.kie.internal.runtime.manager.TaskServiceFactory; import org.kie.internal.runtime.manager.TaskServiceFactory;
import org.kie.internal.runtime.manager.context.EmptyContext; import org.kie.internal.runtime.manager.context.EmptyContext;


import org.jbpm.process.workitem.core.TestWorkItemManager;

public class JPAWorkItemHandlerTest { public class JPAWorkItemHandlerTest {


private static final String P_UNIT = "org.jbpm.test.jpaWIH"; private static final String P_UNIT = "org.jbpm.test.jpaWIH";
Expand Down Expand Up @@ -152,6 +154,7 @@ public void queryActionTest() throws Exception {


@Test @Test
public void queryWithParameterActionTest() throws Exception { public void queryWithParameterActionTest() throws Exception {
WorkItemManager manager = new TestWorkItemManager();
String DESC = "Cheese"; String DESC = "Cheese";
Product p1 = new Product("Bread", 2f); Product p1 = new Product("Bread", 2f);
Product p2 = new Product("Milk", 3f); Product p2 = new Product("Milk", 3f);
Expand All @@ -170,11 +173,11 @@ public void queryWithParameterActionTest() throws Exception {
workItem.setParameter(JPAWorkItemHandler.P_QUERY_PARAMS, params); workItem.setParameter(JPAWorkItemHandler.P_QUERY_PARAMS, params);
UserTransaction ut = getUserTransaction(); UserTransaction ut = getUserTransaction();
ut.begin(); ut.begin();
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem)); handler.executeWorkItem(workItem, manager);
ut.commit(); ut.commit();
Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<Product> products = (List<Product>) workItem List<Product> products = (List<Product>) results.get(JPAWorkItemHandler.P_QUERY_RESULTS);
.getResult(JPAWorkItemHandler.P_QUERY_RESULTS);
assertEquals(1, products.size()); assertEquals(1, products.size());
products = getAllProducts(); products = getAllProducts();
assertEquals(3, products.size()); assertEquals(3, products.size());
Expand Down Expand Up @@ -204,22 +207,24 @@ private Product create(Product newProd) throws Exception {
} }


private List<Product> getAllProducts() throws Exception { private List<Product> getAllProducts() throws Exception {
WorkItemManager manager = new TestWorkItemManager();
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(JPAWorkItemHandler.P_ACTION, workItem.setParameter(JPAWorkItemHandler.P_ACTION,
JPAWorkItemHandler.QUERY_ACTION); JPAWorkItemHandler.QUERY_ACTION);
workItem.setParameter(JPAWorkItemHandler.P_QUERY, workItem.setParameter(JPAWorkItemHandler.P_QUERY,
"SELECT p FROM Product p"); "SELECT p FROM Product p");
UserTransaction ut = getUserTransaction(); UserTransaction ut = getUserTransaction();
ut.begin(); ut.begin();
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem)); handler.executeWorkItem(workItem,manager);
ut.commit(); ut.commit();
Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<Product> products = (List<Product>) workItem List<Product> products = (List<Product>) results.get(JPAWorkItemHandler.P_QUERY_RESULTS);
.getResult(JPAWorkItemHandler.P_QUERY_RESULTS);
return products; return products;
} }


private Product getProduct(String id) throws Exception { private Product getProduct(String id) throws Exception {
WorkItemManager manager = new TestWorkItemManager();
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(JPAWorkItemHandler.P_ACTION, workItem.setParameter(JPAWorkItemHandler.P_ACTION,
JPAWorkItemHandler.GET_ACTION); JPAWorkItemHandler.GET_ACTION);
Expand All @@ -228,10 +233,10 @@ private Product getProduct(String id) throws Exception {
workItem.setParameter(JPAWorkItemHandler.P_ID, id); workItem.setParameter(JPAWorkItemHandler.P_ID, id);
UserTransaction ut = getUserTransaction(); UserTransaction ut = getUserTransaction();
ut.begin(); ut.begin();
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem)); handler.executeWorkItem(workItem, manager);
ut.commit(); ut.commit();
Product product = (Product) workItem Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
.getResult(JPAWorkItemHandler.P_RESULT); Product product = (Product) results.get(JPAWorkItemHandler.P_RESULT);
return product; return product;
} }


Expand Down Expand Up @@ -276,29 +281,6 @@ private static UserTransaction getUserTransaction() throws NamingException {
return (UserTransaction) InitialContext.doLookup("java:comp/UserTransaction"); return (UserTransaction) InitialContext.doLookup("java:comp/UserTransaction");
} }


private class TestWorkItemManager implements WorkItemManager {

private WorkItem workItem;

TestWorkItemManager(WorkItem workItem) {
this.workItem = workItem;
}

public void completeWorkItem(long id, Map<String, Object> results) {
((WorkItemImpl) workItem).setResults(results);

}

public void abortWorkItem(long id) {

}

public void registerWorkItemHandler(String workItemName,
WorkItemHandler handler) {
}

}

public static PoolingDataSource setupPoolingDataSource() { public static PoolingDataSource setupPoolingDataSource() {
h2Server = new TestH2Server(); h2Server = new TestH2Server();
h2Server.start(); h2Server.start();
Expand Down
Expand Up @@ -19,10 +19,9 @@
import java.util.Map; import java.util.Map;


import org.drools.core.process.instance.impl.WorkItemImpl; import org.drools.core.process.instance.impl.WorkItemImpl;
import org.jbpm.process.workitem.core.TestWorkItemManager;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.kie.api.runtime.process.WorkItem;
import org.kie.api.runtime.process.WorkItemHandler;
import org.kie.api.runtime.process.WorkItemManager; import org.kie.api.runtime.process.WorkItemManager;


import static org.junit.Assert.*; import static org.junit.Assert.*;
Expand All @@ -45,6 +44,7 @@ public void init() {


@Test @Test
public void testXmlToObject() { public void testXmlToObject() {
WorkItemManager manager = new TestWorkItemManager();
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, workItem.setParameter(ParserWorkItemHandler.INPUT,
PERSON_XML); PERSON_XML);
Expand All @@ -53,8 +53,10 @@ public void testXmlToObject() {
workItem.setParameter(ParserWorkItemHandler.TYPE, workItem.setParameter(ParserWorkItemHandler.TYPE,
"org.jbpm.process.workitem.parser.Person"); "org.jbpm.process.workitem.parser.Person");
handler.executeWorkItem(workItem, handler.executeWorkItem(workItem,
new TestWorkItemManager(workItem)); manager);
Person result = (Person) workItem.getResult(ParserWorkItemHandler.RESULT);
Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
Person result = (Person) results.get(ParserWorkItemHandler.RESULT);
assertEquals(AGE, assertEquals(AGE,
result.getAge()); result.getAge());
assertEquals(NAME, assertEquals(NAME,
Expand All @@ -63,6 +65,7 @@ public void testXmlToObject() {


@Test @Test
public void testObjectToXml() { public void testObjectToXml() {
WorkItemManager manager = new TestWorkItemManager();
Person p = new Person(NAME, Person p = new Person(NAME,
AGE); AGE);
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
Expand All @@ -71,14 +74,16 @@ public void testObjectToXml() {
workItem.setParameter(ParserWorkItemHandler.FORMAT, workItem.setParameter(ParserWorkItemHandler.FORMAT,
ParserWorkItemHandler.XML); ParserWorkItemHandler.XML);
handler.executeWorkItem(workItem, handler.executeWorkItem(workItem,
new TestWorkItemManager(workItem)); manager);
String result = (String) workItem.getResult(ParserWorkItemHandler.RESULT); Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
String result = (String) results.get(ParserWorkItemHandler.RESULT);
assertEquals(PERSON_XML, assertEquals(PERSON_XML,
result); result);
} }


@Test @Test
public void testJsonToObject() { public void testJsonToObject() {
WorkItemManager manager = new TestWorkItemManager();
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, workItem.setParameter(ParserWorkItemHandler.INPUT,
PERSON_JSON); PERSON_JSON);
Expand All @@ -87,8 +92,9 @@ public void testJsonToObject() {
workItem.setParameter(ParserWorkItemHandler.TYPE, workItem.setParameter(ParserWorkItemHandler.TYPE,
"org.jbpm.process.workitem.parser.Person"); "org.jbpm.process.workitem.parser.Person");
handler.executeWorkItem(workItem, handler.executeWorkItem(workItem,
new TestWorkItemManager(workItem)); manager);
Person result = (Person) workItem.getResult(ParserWorkItemHandler.RESULT); Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
Person result = (Person) results.get(ParserWorkItemHandler.RESULT);
assertEquals(AGE, assertEquals(AGE,
result.getAge()); result.getAge());
assertEquals(NAME, assertEquals(NAME,
Expand All @@ -97,6 +103,7 @@ public void testJsonToObject() {


@Test @Test
public void testObjectToJson() { public void testObjectToJson() {
WorkItemManager manager = new TestWorkItemManager();
Person p = new Person(NAME, Person p = new Person(NAME,
AGE); AGE);
WorkItemImpl workItem = new WorkItemImpl(); WorkItemImpl workItem = new WorkItemImpl();
Expand All @@ -105,33 +112,11 @@ public void testObjectToJson() {
workItem.setParameter(ParserWorkItemHandler.FORMAT, workItem.setParameter(ParserWorkItemHandler.FORMAT,
ParserWorkItemHandler.JSON); ParserWorkItemHandler.JSON);
handler.executeWorkItem(workItem, handler.executeWorkItem(workItem,
new TestWorkItemManager(workItem)); manager);
String result = (String) workItem.getResult(ParserWorkItemHandler.RESULT); Map<String, Object> results = ((TestWorkItemManager) manager).getResults(workItem.getId());
String result = (String) results.get(ParserWorkItemHandler.RESULT);
assertEquals(PERSON_JSON, assertEquals(PERSON_JSON,
result); result);
} }

private class TestWorkItemManager implements WorkItemManager {

private WorkItem workItem;

TestWorkItemManager(WorkItem workItem) {
this.workItem = workItem;
}

public void completeWorkItem(long id,
Map<String, Object> results) {
((WorkItemImpl) workItem).setResults(results);
}

public void abortWorkItem(long id) {

}

public void registerWorkItemHandler(String workItemName,
WorkItemHandler handler) {

}
}
} }


0 comments on commit c60cbea

Please sign in to comment.