/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed 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.jbpm.process.workitem.parser;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.drools.core.process.instance.impl.WorkItemImpl;
import org.junit.Before;
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;
public class ParserWorkItemHandlerTest {
final int AGE = 27;
final String NAME = "William";
final String PERSON_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person><age>"
+ AGE + "</age><name>" + NAME + "</name></person>";
final String PERSON_JSON = "{\"name\":\"" + NAME + "\",\"age\":" + AGE
+ "}";
ParserWorkItemHandler handler;
@Before
public void init() {
handler = new ParserWorkItemHandler();
}
@Test
public void testXmlToObject() {
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, PERSON_XML);
workItem.setParameter(ParserWorkItemHandler.FORMAT, ParserWorkItemHandler.XML);
workItem.setParameter(ParserWorkItemHandler.TYPE,
"org.jbpm.process.workitem.parser.Person");
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem));
Person result = (Person) workItem.getResult(ParserWorkItemHandler.RESULT);
assertEquals(AGE, result.getAge());
assertEquals(NAME, result.getName());
}
@Test
public void testObjectToXml() {
Person p = new Person(NAME, AGE);
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, p);
workItem.setParameter(ParserWorkItemHandler.FORMAT, ParserWorkItemHandler.XML);
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem));
String result = (String) workItem.getResult(ParserWorkItemHandler.RESULT);
assertEquals(PERSON_XML, result);
}
@Test
public void testJsonToObject() {
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, PERSON_JSON);
workItem.setParameter(ParserWorkItemHandler.FORMAT, ParserWorkItemHandler.JSON);
workItem.setParameter(ParserWorkItemHandler.TYPE,
"org.jbpm.process.workitem.parser.Person");
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem));
Person result = (Person) workItem.getResult(ParserWorkItemHandler.RESULT);
assertEquals(AGE, result.getAge());
assertEquals(NAME, result.getName());
}
@Test
public void testObjectToJson() {
Person p = new Person(NAME, AGE);
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(ParserWorkItemHandler.INPUT, p);
workItem.setParameter(ParserWorkItemHandler.FORMAT, ParserWorkItemHandler.JSON);
handler.executeWorkItem(workItem, new TestWorkItemManager(workItem));
String result = (String) workItem.getResult(ParserWorkItemHandler.RESULT);
assertEquals(PERSON_JSON, 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) {
}
}
}