/* * 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. * * 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.kie.server.services.impl; import java.util.concurrent.TimeUnit; import org.drools.core.command.runtime.AdvanceSessionTimeCommand; import org.drools.core.command.runtime.GetGlobalCommand; import org.drools.core.command.runtime.GetSessionTimeCommand; import org.drools.core.command.runtime.SetGlobalCommand; import org.drools.core.command.runtime.process.StartProcessCommand; import org.drools.core.command.runtime.rule.AgendaGroupSetFocusCommand; import org.drools.core.command.runtime.rule.DeleteCommand; import org.drools.core.command.runtime.rule.FireAllRulesCommand; import org.drools.core.command.runtime.rule.GetFactHandlesCommand; import org.drools.core.command.runtime.rule.GetObjectCommand; import org.drools.core.command.runtime.rule.GetObjectsCommand; import org.drools.core.command.runtime.rule.InsertElementsCommand; import org.drools.core.command.runtime.rule.InsertObjectCommand; import org.drools.core.command.runtime.rule.ModifyCommand; import org.drools.core.command.runtime.rule.QueryCommand; import org.junit.Ignore; import org.junit.Test; import org.kie.server.api.marshalling.Marshaller; import org.kie.server.api.marshalling.MarshallerFactory; import org.kie.server.api.marshalling.MarshallingFormat; import static org.junit.Assert.assertEquals; public class CommandsMarshallingTest { private Marshaller marshaller = MarshallerFactory.getMarshaller( MarshallingFormat.XSTREAM, Thread.currentThread().getContextClassLoader() ); @Test public void testMarshallInsertObjectCommand() { String xmlCommand = "<insert>\n" + " <string>String value</string>\n" + "</insert>"; InsertObjectCommand command = marshaller.unmarshall( xmlCommand, InsertObjectCommand.class ); assertEquals( "String value", command.getObject().toString() ); assertEquals( xmlCommand, marshaller.marshall( command ) ); } @Test public void testMarshallModifyCommand() { String xmlCommand = "<modify fact-handle=\"0:234:345:456:567:789\">\n" + " <set accessor=\"age\" value=\"30\"/>\n" + "</modify>"; ModifyCommand command = marshaller.unmarshall(xmlCommand, ModifyCommand.class); assertEquals(1, command.getSetters().size()); assertEquals("<modify fact-handle=\"0:234:345:456:567:789:NON_TRAIT:null\">\n" + " <set accessor=\"age\" value=\"30\"/>\n" + "</modify>", marshaller.marshall(command)); } @Test public void testMarshallGetObjectCommand() { String xmlCommand = "<get-object fact-handle=\"0:234:345:456:567:789\" out-identifier=\"test\"/>"; GetObjectCommand command = marshaller.unmarshall(xmlCommand, GetObjectCommand.class); assertEquals("test", command.getOutIdentifier()); assertEquals("<get-object fact-handle=\"0:234:345:456:567:789:NON_TRAIT:null\" out-identifier=\"test\"/>", marshaller.marshall(command)); } @Test public void testMarshallInsertElementsCommand() { String xmlCommand = "<insert-elements>\n" + " <string>test1</string>\n" + " <string>test2</string>\n" + "</insert-elements>"; InsertElementsCommand command = marshaller.unmarshall(xmlCommand, InsertElementsCommand.class); assertEquals(2, command.getObjects().size()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallFireAllRulesCommand() { String xmlCommand = "<fire-all-rules max=\"10\" out-identifier=\"result\"/>"; FireAllRulesCommand command = marshaller.unmarshall(xmlCommand, FireAllRulesCommand.class); assertEquals(10, command.getMax()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallStartProcessCommand() { String xmlCommand = "<start-process processId=\"org.drools.task.processOne\" out-identifier=\"id\"/>"; StartProcessCommand command = marshaller.unmarshall(xmlCommand, StartProcessCommand.class); assertEquals("org.drools.task.processOne", command.getProcessId()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallQueryCommand() { String xmlCommand = "<query out-identifier=\"persons-out\" name=\"persons\"/>"; QueryCommand command = marshaller.unmarshall(xmlCommand, QueryCommand.class); assertEquals("persons", command.getName()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallSetGlobalCommand() { String xmlCommand = "<set-global identifier=\"helper\" out-identifier=\"output\">\n" + " <list/>\n" + "</set-global>"; SetGlobalCommand command = marshaller.unmarshall(xmlCommand, SetGlobalCommand.class); assertEquals("helper", command.getIdentifier()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallGetGlobalCommand() { String xmlCommand = "<get-global identifier=\"helper\" out-identifier=\"helperOutput\"/>"; GetGlobalCommand command = marshaller.unmarshall(xmlCommand, GetGlobalCommand.class); assertEquals("helper", command.getIdentifier()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallGetObjectsCommand() { String xmlCommand = "<get-objects out-identifier=\"objects\"/>"; GetObjectsCommand command = marshaller.unmarshall(xmlCommand, GetObjectsCommand.class); assertEquals("objects", command.getOutIdentifier()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test @Ignore("Set focus command not yet supported") public void testMarshallAgendaGroupSetFocusCommand() { String xmlCommand = "<agenda-group-set-focus name=\"my-agenda-group\"/>"; AgendaGroupSetFocusCommand command = marshaller.unmarshall(xmlCommand, AgendaGroupSetFocusCommand.class); assertEquals("my-agenda-group", command.getName()); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallDeleteCommand() { String xmlCommand = "<delete fact-handle=\"0:234:345:456:567:789\"/>"; DeleteCommand command = marshaller.unmarshall(xmlCommand, DeleteCommand.class); assertEquals("<delete fact-handle=\"0:234:345:456:567:789:NON_TRAIT:null\"/>", marshaller.marshall(command)); } @Test public void testMarshallGetFactHandlesCommand() { String xmlCommand = "<get-fact-handles/>"; GetFactHandlesCommand command = marshaller.unmarshall( xmlCommand, GetFactHandlesCommand.class ); assertEquals("<get-fact-handles disconnected=\"false\"/>", marshaller.marshall(command)); } @Test public void testMarshallGetSessionTimeCommand() { String xmlCommand = "<get-session-time out-identifier=\"session-currenttime\"/>"; GetSessionTimeCommand command = marshaller.unmarshall( xmlCommand, GetSessionTimeCommand.class ); assertEquals(xmlCommand, marshaller.marshall(command)); } @Test public void testMarshallAdvanceSessionTimeCommand() { String xmlCommand = "<advance-session-time out-identifier=\"session-advancecurrenttime\" amount=\"2\" unit=\"DAYS\"/>"; AdvanceSessionTimeCommand command = marshaller.unmarshall( xmlCommand, AdvanceSessionTimeCommand.class ); assertEquals( 2L, command.getAmount() ); assertEquals( TimeUnit.DAYS, command.getUnit() ); assertEquals(xmlCommand, marshaller.marshall(command)); } // TODO determine what other commands are supported and add tests for them }