/* * 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) { } } }