/* * Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com) * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestElementInfo.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.engine; import com.uwyn.rife.engine.exceptions.*; import com.uwyn.rife.rep.Rep; import com.uwyn.rife.tools.ExceptionUtils; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import junit.framework.TestCase; public class TestElementInfo extends TestCase { public TestElementInfo(String name) { super(name); } public void testInstantiation() throws EngineException { ElementInfo element_info1 = null; ElementInfo element_info2 = null; element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertNotNull(element_info1); element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); assertNotNull(element_info2); } public void testGetElement() throws EngineException { // use publically available classes ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", com.uwyn.rife.engine.testelements.engine.Simple.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", com.uwyn.rife.engine.testelements.inputs.Normal.class.getName(), ElementType.JAVA_CLASS); // these can't be the same classes since the classloader is different assertEquals(element_info1.getElement().getClass().getName(), com.uwyn.rife.engine.testelements.engine.Simple.class.getName()); assertEquals(element_info2.getElement().getClass().getName(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); } public void testClone() throws EngineException { ElementInfo element_info_dest = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info_dest.addInput("input1", null); element_info_dest.addInput("input2", null); element_info_dest.addInput("input3", null); ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, GlobalExit> globalexits = new LinkedHashMap<String, GlobalExit>(); globalexits.put("globalexit1", new GlobalExit("DEST1", false, false, false, false, false, false).setGroupId(0)); globalexits.put("globalexit2", new GlobalExit(null, true, false, false, false, false, true).setGroupId(0)); globalexits.put("globalexit3", new GlobalExit(null, false, true, false, false, false, false).setGroupId(0)); element_info.setGlobalExits(globalexits); LinkedHashMap<String, GlobalVar> globalvars = new LinkedHashMap<String, GlobalVar>(); globalvars.put("globalvar1", new GlobalVar(null).setGroupId(0)); globalvars.put("globalvar2", new GlobalVar(null).setGroupId(0)); globalvars.put("globalvar3", new GlobalVar(null).setGroupId(0)); element_info.setGlobalVars(globalvars); element_info.addStaticProperty("property1", "value1"); element_info.addStaticProperty("property2", "value2"); element_info.addStaticProperty("property3", "value3"); element_info.addInput("input1", null); element_info.addInput("input2", null); element_info.addInput("input3", null); element_info.addOutput("output1", null); element_info.addOutput("output2", null); element_info.addOutput("output3", null); element_info.addIncookie("incookie1", null); element_info.addIncookie("incookie2", null); element_info.addIncookie("incookie3", null); element_info.addOutcookie("outcookie1", null); element_info.addOutcookie("outcookie2", null); element_info.addOutcookie("outcookie3", null); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); namedglobalbeans.put("globalbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null)); namedglobalbeans.put("globalbean2", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.setNamedGlobalBeans(namedglobalbeans); element_info.addNamedInbean("inbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.addNamedInbean("inbean2", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null)); element_info.addNamedOutbean("outbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.addNamedOutbean("outbean2", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null)); element_info.addNamedOutbean("outbean3", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.addExit("exit1"); element_info.addExit("exit2"); element_info.addExit("exit3"); element_info.setFlowLink(new FlowLink("exit1", element_info_dest, false, false, false, false, true)); FlowLink flowlink = new FlowLink("exit2", null, true, true, true, true, false); element_info.setFlowLink(flowlink); element_info.addDataLink(new DataLink("output1", element_info_dest, false, "input1", null)); element_info.addDataLink(new DataLink("output1", element_info_dest, false, "input2", flowlink)); element_info.addDataLink(new DataLink("output1", null, true, "input3", null)); element_info.addDataLink(new DataLink("output2", element_info_dest, false, "input2", null)); element_info.addDataLink(new DataLink("output2", null, true, "input3", null)); Submission submission1 = new Submission(); Submission submission2 = new Submission(); Submission submission3 = new Submission(); element_info.addSubmission("submission1", submission1); element_info.addSubmission("submission2", submission2); element_info.addSubmission("submission3", submission3); submission1.addParameter("parameter1", null); submission1.addParameter("parameter2", null); submission1.addParameter("parameter3", null); submission2.addParameter("parameter1", null); submission2.addParameter("parameter2", null); submission3.addParameter("parameter1", null); // make a clone ElementInfo element_info_clone = element_info.clone(); assertNotNull(element_info_clone); // modify the original globalexits.put("globalexit4", new GlobalExit("DEST2", false, false, false, false, true, true).setGroupId(0)); globalvars.put("globalvar4", new GlobalVar(null).setGroupId(0)); namedglobalbeans.put("globalbean3", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", "peefix", null)); element_info.addStaticProperty("property4", "value4"); element_info.addInput("input4", null); element_info.addOutput("output4", null); element_info.addIncookie("incookie4", null); element_info.addOutcookie("outcookie4", null); element_info.addNamedInbean("inbean3", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.addNamedOutbean("outbean4", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); element_info.addExit("exit4"); element_info.setFlowLink(new FlowLink("exit3", element_info_dest, false, false, false, false, false)); element_info.addDataLink(new DataLink("output3", element_info_dest, false, "input3", flowlink)); submission1.addParameter("parameter4", null); Submission submission4 = new Submission(); element_info.addSubmission("submission4", submission4); submission4.addParameter("parameter1", null); // check if the clone has remained intact assertEquals(4, element_info.getGlobalExitNames().size()); assertEquals(3, element_info_clone.getGlobalExitNames().size()); assertEquals(4, element_info.getGlobalVarNames().size()); assertEquals(3, element_info_clone.getGlobalVarNames().size()); assertEquals(4+Rep.getProperties().size(), element_info.getPropertyNames().size()); assertEquals(3+Rep.getProperties().size(), element_info_clone.getPropertyNames().size()); assertEquals(4, element_info.getInputNames().size()); assertEquals(3, element_info_clone.getInputNames().size()); assertEquals(4, element_info.getOutputNames().size()); assertEquals(3, element_info_clone.getOutputNames().size()); assertEquals(4, element_info.getIncookieNames().size()); assertEquals(3, element_info_clone.getIncookieNames().size()); assertEquals(4, element_info.getOutcookieNames().size()); assertEquals(3, element_info_clone.getOutcookieNames().size()); assertEquals(3, element_info.getNamedGlobalBeanNames().size()); assertEquals(2, element_info_clone.getNamedGlobalBeanNames().size()); assertEquals(3, element_info.getNamedInbeanNames().size()); assertEquals(2, element_info_clone.getNamedInbeanNames().size()); assertEquals(4, element_info.getNamedOutbeanNames().size()); assertEquals(3, element_info_clone.getNamedOutbeanNames().size()); assertSame(element_info.getFlowLink("exit3").getTarget(), element_info_dest); assertNull(element_info_clone.getFlowLink("exit3")); assertEquals(1, element_info.getDataLinkInputs("output3", element_info_dest, false, flowlink).size()); assertNull(element_info_clone.getDataLinkInputs("output3", element_info_dest, false, flowlink)); assertEquals(4, element_info.getSubmission("submission1").getParameterNames().size()); assertEquals(3, element_info_clone.getSubmission("submission1").getParameterNames().size()); assertEquals(4, element_info.getSubmissionNames().size()); assertEquals(3, element_info_clone.getSubmissionNames().size()); } public void testGetUninstantiatableElement() throws EngineException { ElementInfo element_info = new ElementInfo("element/test_not_instantiatable.xml", "text/html", TestElementNotInstantiatable.class.getName(), ElementType.JAVA_CLASS); try { element_info.getElement(); fail(); } catch (EngineException e) { assertTrue(true); } } public void testNoInitialPropertyNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getPropertyNames().size(), 0); } public void testNoInitialGlobalNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertNull(element_info.getGlobalVarNames()); } public void testNoInitialInputNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getInputNames().size(), 0); } public void testNoInitialOutputNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getOutputNames().size(), 0); } public void testNoInitialIncookieNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getIncookieNames().size(), 0); } public void testNoInitialOutcookieNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getOutcookieNames().size(), 0); } public void testNoInitialNamedGlobalbeanNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertNull(element_info.getNamedGlobalBeanNames()); } public void testNoInitialNamedInbeanNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getNamedInbeanNames().size(), 0); } public void testNoInitialNamedOutbeanNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getNamedOutbeanNames().size(), 0); } public void testNoInitialExitNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getExitNames().size(), 0); } public void testNoInitialSubmissionNames() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertEquals(element_info.getSubmissionNames().size(), 0); } public void testAddGlobal() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("globalvar1", new GlobalVar(null).setGroupId(0)); globals.put("globalvar2", new GlobalVar(null).setGroupId(0)); globals.put("globalvar3", new GlobalVar(null).setGroupId(0)); element_info.setGlobalVars(globals); assertEquals(element_info.getGlobalVarNames().size(), 3); assertTrue(element_info.containsGlobalVar("globalvar1")); assertTrue(element_info.containsGlobalVar("globalvar2")); assertTrue(element_info.containsGlobalVar("globalvar3")); } public void testAddStaticProperty() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addStaticProperty("property1", "value1"); assertEquals(element_info.getPropertyNames().size(), 1+Rep.getProperties().size()); element_info.addStaticProperty("property2", "value2"); assertEquals(element_info.getPropertyNames().size(), 2+Rep.getProperties().size()); element_info.addStaticProperty("property3", "value3"); assertEquals(element_info.getPropertyNames().size(), 3+Rep.getProperties().size()); assertTrue(element_info.containsProperty("property1")); assertTrue(element_info.containsProperty("property2")); assertTrue(element_info.containsProperty("property3")); assertEquals("value1", element_info.getProperty("property1")); assertEquals("value2", element_info.getProperty("property2")); assertEquals("value3", element_info.getProperty("property3")); } public void testAddInput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addInput("input1", null); assertEquals(element_info.getInputNames().size(), 1); element_info.addInput("input2", null); assertEquals(element_info.getInputNames().size(), 2); element_info.addInput("input3", null); assertEquals(element_info.getInputNames().size(), 3); assertTrue(element_info.containsInput("input1")); assertTrue(element_info.containsInput("input2")); assertTrue(element_info.containsInput("input3")); } public void testAddOutput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addOutput("output1", null); assertEquals(element_info.getOutputNames().size(), 1); element_info.addOutput("output2", null); assertEquals(element_info.getOutputNames().size(), 2); element_info.addOutput("output3", null); assertEquals(element_info.getOutputNames().size(), 3); assertTrue(element_info.containsOutput("output1")); assertTrue(element_info.containsOutput("output2")); assertTrue(element_info.containsOutput("output3")); } public void testAddIncookie() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addIncookie("incookie1", null); assertEquals(element_info.getIncookieNames().size(), 1); element_info.addIncookie("incookie2", null); assertEquals(element_info.getIncookieNames().size(), 2); element_info.addIncookie("incookie3", null); assertEquals(element_info.getIncookieNames().size(), 3); assertTrue(element_info.containsIncookie("incookie1")); assertTrue(element_info.containsIncookie("incookie2")); assertTrue(element_info.containsIncookie("incookie3")); } public void testAddOutcookie() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addOutcookie("outcookie1", null); assertEquals(element_info.getOutcookieNames().size(), 1); element_info.addOutcookie("outcookie2", null); assertEquals(element_info.getOutcookieNames().size(), 2); element_info.addOutcookie("outcookie3", null); assertEquals(element_info.getOutcookieNames().size(), 3); assertTrue(element_info.containsOutcookie("outcookie1")); assertTrue(element_info.containsOutcookie("outcookie2")); assertTrue(element_info.containsOutcookie("outcookie3")); } public void testAddNamedGlobalBean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); namedglobalbeans.put("globalbean1", bean_declaration1); namedglobalbeans.put("globalbean2", bean_declaration2); namedglobalbeans.put("globalbean3", bean_declaration1); element_info.setNamedGlobalBeans(namedglobalbeans); assertEquals(element_info.getNamedGlobalBeanNames().size(), 3); assertTrue(element_info.containsNamedGlobalBean("globalbean1")); assertTrue(element_info.containsNamedGlobalBean("globalbean2")); assertTrue(element_info.containsNamedGlobalBean("globalbean3")); BeanDeclaration bean_declaration = null; bean_declaration = element_info.getNamedGlobalBeanInfo("globalbean1"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedGlobalBeanInfo("globalbean2"); assertEquals(bean_declaration2.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration2.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedGlobalBeanInfo("globalbean3"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); } public void testAddNamedInbean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); element_info.addNamedInbean("inbean1", bean_declaration1); assertEquals(element_info.getNamedInbeanNames().size(), 1); element_info.addNamedInbean("inbean2", bean_declaration1); assertEquals(element_info.getNamedInbeanNames().size(), 2); element_info.addNamedInbean("inbean3", bean_declaration2); assertEquals(element_info.getNamedInbeanNames().size(), 3); assertTrue(element_info.containsNamedInbean("inbean1")); assertTrue(element_info.containsNamedInbean("inbean2")); assertTrue(element_info.containsNamedInbean("inbean3")); BeanDeclaration bean_declaration = null; bean_declaration = element_info.getNamedInbeanInfo("inbean1"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedInbeanInfo("inbean2"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedInbeanInfo("inbean3"); assertEquals(bean_declaration2.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration2.getPrefix(), bean_declaration.getPrefix()); } public void testAddNamedOutbean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); element_info.addNamedOutbean("outbean1", bean_declaration1); assertEquals(element_info.getNamedOutbeanNames().size(), 1); element_info.addNamedOutbean("outbean2", bean_declaration1); assertEquals(element_info.getNamedOutbeanNames().size(), 2); element_info.addNamedOutbean("outbean3", bean_declaration2); assertEquals(element_info.getNamedOutbeanNames().size(), 3); assertTrue(element_info.containsNamedOutbean("outbean1")); assertTrue(element_info.containsNamedOutbean("outbean2")); assertTrue(element_info.containsNamedOutbean("outbean3")); BeanDeclaration bean_declaration = null; bean_declaration = element_info.getNamedOutbeanInfo("outbean1"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedOutbeanInfo("outbean2"); assertEquals(bean_declaration1.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration1.getPrefix(), bean_declaration.getPrefix()); bean_declaration = null; bean_declaration = element_info.getNamedOutbeanInfo("outbean3"); assertEquals(bean_declaration2.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration2.getPrefix(), bean_declaration.getPrefix()); } public void testAddChildTrigger() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addInput("childtrigger1", null); element_info.addInput("childtrigger2", null); element_info.addInput("childtrigger3", null); element_info.addChildTrigger("childtrigger1"); assertEquals(element_info.getChildTriggerNames().size(), 1); element_info.addChildTrigger("childtrigger2"); assertEquals(element_info.getChildTriggerNames().size(), 2); element_info.addChildTrigger("childtrigger3"); assertEquals(element_info.getChildTriggerNames().size(), 3); assertTrue(element_info.containsChildTrigger("childtrigger1")); assertTrue(element_info.containsChildTrigger("childtrigger2")); assertTrue(element_info.containsChildTrigger("childtrigger3")); } public void testAddExit() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addExit("exit1"); assertEquals(element_info.getExitNames().size(), 1); element_info.addExit("exit2"); assertEquals(element_info.getExitNames().size(), 2); element_info.addExit("exit3"); assertEquals(element_info.getExitNames().size(), 3); assertTrue(element_info.containsExit("exit1")); assertTrue(element_info.containsExit("exit2")); assertTrue(element_info.containsExit("exit3")); } public void testAddSubmission() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); Submission submission1 = new Submission(); Submission submission2 = new Submission(); Submission submission3 = new Submission(); element_info.addSubmission("submission1", submission1); assertEquals(element_info.getSubmissionNames().size(), 1); element_info.addSubmission("submission2", submission2); assertEquals(element_info.getSubmissionNames().size(), 2); element_info.addSubmission("submission3", submission3); assertEquals(element_info.getSubmissionNames().size(), 3); assertTrue(element_info.containsSubmission("submission1")); assertTrue(element_info.containsSubmission("submission2")); assertTrue(element_info.containsSubmission("submission3")); assertSame(element_info.getSubmission("submission1"), submission1); assertSame(element_info.getSubmission("submission2"), submission2); assertSame(element_info.getSubmission("submission3"), submission3); } public void testAddReservedInput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addInput(ReservedParameters.SUBMISSION, null); fail(); } catch (ReservedInputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getInputName(), ReservedParameters.SUBMISSION); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info.addInput(ReservedParameters.CHILDREQUEST, null); fail(); } catch (ReservedInputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getInputName(), ReservedParameters.CHILDREQUEST); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info.addInput(ReservedParameters.TRIGGERLIST, null); fail(); } catch (ReservedInputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getInputName(), ReservedParameters.TRIGGERLIST); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getInputNames().size(), 0); } public void testAddReservedOutput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addOutput(ReservedParameters.SUBMISSION, null); fail(); } catch (ReservedOutputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutputName(), ReservedParameters.SUBMISSION); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info.addOutput(ReservedParameters.CHILDREQUEST, null); fail(); } catch (ReservedOutputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutputName(), ReservedParameters.CHILDREQUEST); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info.addOutput(ReservedParameters.TRIGGERLIST, null); fail(); } catch (ReservedOutputNameException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutputName(), ReservedParameters.TRIGGERLIST); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getOutputNames().size(), 0); } public void testAddDuplicateGlobal() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("globalvar1", new GlobalVar(null).setGroupId(0)); globals.put("globalvar2", new GlobalVar(null).setGroupId(0)); globals.put("globalvar3", new GlobalVar(null).setGroupId(0)); globals.put("globalvar1", new GlobalVar(null).setGroupId(0)); element_info.setGlobalVars(globals); assertEquals(element_info.getGlobalVarNames().size(), 3); assertTrue(element_info.containsGlobalVar("globalvar1")); assertTrue(element_info.containsGlobalVar("globalvar2")); assertTrue(element_info.containsGlobalVar("globalvar3")); } public void testAddDuplicateStaticProperty() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addStaticProperty("property1", "value1"); assertEquals(element_info.getPropertyNames().size(), 1+Rep.getProperties().size()); assertEquals("value1", element_info.getProperty("property1")); element_info.addStaticProperty("property1", "value2"); assertEquals(element_info.getPropertyNames().size(), 1+Rep.getProperties().size()); assertEquals("value2", element_info.getProperty("property1")); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testAddDuplicateInput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addInput("input1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getInputNames().size(), 1); try { element_info.addInput("input1", null); fail(); } catch (InputExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getInputName(), "input1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getInputNames().size(), 1); } public void testAddDuplicateOutput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addOutput("output1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getOutputNames().size(), 1); try { element_info.addOutput("output1", null); fail(); } catch (OutputExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutputName(), "output1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getOutputNames().size(), 1); } public void testAddDuplicateIncookie() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addIncookie("incookie1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getIncookieNames().size(), 1); try { element_info.addIncookie("incookie1", null); fail(); } catch (IncookieExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getIncookieName(), "incookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getIncookieNames().size(), 1); } public void testAddDuplicateOutcookie() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addOutcookie("outcookie1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getOutcookieNames().size(), 1); try { element_info.addOutcookie("outcookie1", null); fail(); } catch (OutcookieExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutcookieName(), "outcookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getOutcookieNames().size(), 1); } public void testAddDuplicateNamedGlobalBean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); namedglobalbeans.put("globalbean1", bean_declaration1); namedglobalbeans.put("globalbean1", bean_declaration2); element_info.setNamedGlobalBeans(namedglobalbeans); assertEquals(element_info.getNamedGlobalBeanNames().size(), 1); assertTrue(element_info.containsNamedGlobalBean("globalbean1")); BeanDeclaration bean_declaration = null; bean_declaration = element_info.getNamedGlobalBeanInfo("globalbean1"); assertEquals(bean_declaration2.getClassname(), bean_declaration.getClassname()); assertEquals(bean_declaration2.getPrefix(), bean_declaration.getPrefix()); } public void testAddDuplicateNamedInbean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addNamedInbean("inbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getNamedInbeanNames().size(), 1); try { element_info.addNamedInbean("inbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null)); fail(); } catch (NamedInbeanExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getInbeanName(), "inbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getNamedInbeanNames().size(), 1); } public void testAddDuplicateNamedOutbean() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addNamedOutbean("outbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null)); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getNamedOutbeanNames().size(), 1); try { element_info.addNamedOutbean("outbean1", new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null)); fail(); } catch (NamedOutbeanExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutbeanName(), "outbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getNamedOutbeanNames().size(), 1); } public void testAddDuplicateChildTrigger() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addInput("childtrigger1", null); try { element_info.addChildTrigger("childtrigger1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getChildTriggerNames().size(), 1); try { element_info.addChildTrigger("childtrigger1"); fail(); } catch (ChildTriggerExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getChildTriggerName(), "childtrigger1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getChildTriggerNames().size(), 1); } public void testAddDuplicateExit() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addExit("exit1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getExitNames().size(), 1); try { element_info.addExit("exit1"); fail(); } catch (ExitExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getExitName(), "exit1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getExitNames().size(), 1); } public void testAddDuplicateSubmission() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addSubmission("submission1", new Submission()); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getSubmissionNames().size(), 1); try { element_info.addSubmission("submission1", new Submission()); fail(); } catch (SubmissionExistsException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(element_info.getSubmissionNames().size(), 1); } public void testGlobalVarConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); Submission submission = null; globals.put("input1", new GlobalVar(null).setGroupId(0)); globals.put("output1", new GlobalVar(null).setGroupId(0)); globals.put("property1", new GlobalVar(null).setGroupId(0)); globals.put("parameter1", new GlobalVar(null).setGroupId(0)); globals.put("file1", new GlobalVar(null).setGroupId(0)); try { element_info.setGlobalVars(globals); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addInput("input1", null); try { element_info.setGlobalVars(globals); fail(); } catch (GlobalVarInputConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "input1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addOutput("output1", null); try { element_info.setGlobalVars(globals); fail(); } catch (GlobalVarOutputConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "output1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameter("parameter1", null); try { element_info.setGlobalVars(globals); fail(); } catch (GlobalVarParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "parameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addFile("file1"); try { element_info.setGlobalVars(globals); fail(); } catch (GlobalVarFileConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testGlobalCookieConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, String> globals = new LinkedHashMap<String, String>(); Submission submission = null; globals.put("incookie1", null); globals.put("outcookie1", null); globals.put("property1", null); globals.put("parameter1", null); globals.put("file1", null); try { element_info.setGlobalCookies(globals); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addIncookie("incookie1", null); try { element_info.setGlobalCookies(globals); fail(); } catch (GlobalCookieIncookieConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "incookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addOutcookie("outcookie1", null); try { element_info.setGlobalCookies(globals); fail(); } catch (GlobalCookieOutcookieConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "outcookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameter("parameter1", null); try { element_info.setGlobalCookies(globals); fail(); } catch (GlobalCookieParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "parameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addFile("file1"); try { element_info.setGlobalCookies(globals); fail(); } catch (GlobalCookieFileConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testInputConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addInput("input1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("input1", new GlobalVar(null).setGroupId(0)); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setGlobalVars(globals); try { element_info.addInput("input1", null); fail(); } catch (InputGlobalVarConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "input1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } Submission submission = null; submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameter("input1", null); try { element_info.addInput("input1", null); fail(); } catch (InputParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "input1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addFile("input1"); try { element_info.addInput("input1", null); fail(); } catch (InputFileConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "input1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameterRegexp("regexpparameter(.*)"); try { element_info.addInput("regexpparameter1", null); fail(); } catch (InputParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "regexpparameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testOutputConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addOutput("output1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("output1", new GlobalVar(null).setGroupId(0)); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setGlobalVars(globals); try { element_info.addOutput("output1", null); fail(); } catch (OutputGlobalVarConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "output1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testParamConflicts() throws EngineException { ElementInfo element_info = null; Submission submission = null; submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); try { submission.addParameter("parameter1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); element_info.addInput("parameter1", null); try { submission.addParameter("parameter1", null); fail(); } catch (ParameterInputConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "parameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addFile("parameter1"); try { submission.addParameter("parameter1", null); fail(); } catch (ParameterFileConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "parameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("parameter1", new GlobalVar(null).setGroupId(0)); element_info.setGlobalVars(globals); try { submission.addParameter("parameter1", null); fail(); } catch (ParameterGlobalVarConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "parameter1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testFileConflicts() throws EngineException { ElementInfo element_info = null; Submission submission = null; submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); try { submission.addFile("file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); element_info.addInput("file1", null); try { submission.addFile("file1"); fail(); } catch (FileInputConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameter("file1", null); try { submission.addFile("file1"); fail(); } catch (FileParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); LinkedHashMap<String, GlobalVar> globals = new LinkedHashMap<String, GlobalVar>(); globals.put("file1", new GlobalVar(null).setGroupId(0)); element_info.setGlobalVars(globals); try { submission.addFile("file1"); fail(); } catch (FileGlobalVarConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "file1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testIncookieConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addIncookie("incookie1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } LinkedHashMap<String, String> globals = new LinkedHashMap<String, String>(); globals.put("incookie1",null); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setGlobalCookies(globals); try { element_info.addIncookie("incookie1", null); fail(); } catch (IncookieGlobalCookieConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "incookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } Submission submission = null; submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addParameter("incookie1", null); try { element_info.addIncookie("incookie1", null); fail(); } catch (IncookieParameterConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "incookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } submission = new Submission(); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addSubmission("submission1", submission); submission.addFile("incookie1"); try { element_info.addIncookie("incookie1", null); fail(); } catch (IncookieFileConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getSubmissionName(), "submission1"); assertEquals(e.getConflictName(), "incookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testOutcookieConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addOutcookie("outcookie1", null); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } LinkedHashMap<String, String> globals = new LinkedHashMap<String, String>(); globals.put("outcookie1",null); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setGlobalCookies(globals); try { element_info.addOutcookie("outcookie1", null); fail(); } catch (OutcookieGlobalCookieConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "outcookie1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testNamedGlobalBeanConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); namedglobalbeans.put("inbean1", bean_declaration1); namedglobalbeans.put("outbean1", bean_declaration2); try { element_info.setNamedGlobalBeans(namedglobalbeans); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addNamedInbean("inbean1", bean_declaration2); try { element_info.setNamedGlobalBeans(namedglobalbeans); fail(); } catch (NamedInbeanGlobalBeanConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "inbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addNamedOutbean("outbean1", bean_declaration1); try { element_info.setNamedGlobalBeans(namedglobalbeans); fail(); } catch (NamedOutbeanGlobalBeanConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "outbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testNamedInbeanConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); namedglobalbeans.put("inbean1", bean_declaration1); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setNamedGlobalBeans(namedglobalbeans); try { element_info.addNamedInbean("inbean1", bean_declaration2); fail(); } catch (NamedInbeanGlobalBeanConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "inbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testNamedOutbeanConflicts() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); LinkedHashMap<String, BeanDeclaration> namedglobalbeans = new LinkedHashMap<String, BeanDeclaration>(); BeanDeclaration bean_declaration1 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null); BeanDeclaration bean_declaration2 = new BeanDeclaration("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", null); namedglobalbeans.put("outbean1", bean_declaration2); element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.setNamedGlobalBeans(namedglobalbeans); try { element_info.addNamedOutbean("outbean1", bean_declaration1); fail(); } catch (NamedOutbeanGlobalBeanConflictException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getConflictName(), "outbean1"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testAddChildTriggerWithoutInput() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); try { element_info.addChildTrigger("childtrigger1"); } catch (ChildTriggerVariableUnknownException e) { assertEquals("childtrigger1", e.getChildTriggerName()); } assertEquals(element_info.getChildTriggerNames().size(), 0); assertTrue(false == element_info.containsChildTrigger("childtrigger1")); } public void testAddInputDefaultValues() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertTrue(false == element_info.hasInputDefaults()); element_info.addInput("input1", new String[] {"one","two"}); element_info.addInput("input2", new String[] {"three"}); element_info.addInput("input3", null); assertTrue(element_info.hasInputDefaults()); assertTrue(element_info.hasInputDefaultValues("input1")); assertTrue(element_info.hasInputDefaultValues("input2")); assertTrue(false == element_info.hasInputDefaultValues("input3")); assertNotNull(element_info.getInputDefaultValues("input1")); assertNotNull(element_info.getInputDefaultValues("input2")); assertNull(element_info.getInputDefaultValues("input3")); assertEquals(2, element_info.getInputDefaultValues("input1").length); assertEquals(1, element_info.getInputDefaultValues("input2").length); assertEquals("one", element_info.getInputDefaultValues("input1")[0]); assertEquals("two", element_info.getInputDefaultValues("input1")[1]); assertEquals("three", element_info.getInputDefaultValues("input2")[0]); } public void testAddOutputDefaultValues() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertTrue(false == element_info.hasOutputDefaults()); String[] defaults1 = new String[]{"one", "two"}; String[] defaults2 = new String[]{"three"}; element_info.addOutput("output1", defaults1); element_info.addOutput("output2", defaults2); element_info.addOutput("output3", null); assertTrue(element_info.hasOutputDefaults()); assertTrue(element_info.hasOutputDefaultValues("output1")); assertTrue(element_info.hasOutputDefaultValues("output2")); assertTrue(false == element_info.hasOutputDefaultValues("output3")); assertNotNull(element_info.getOutputDefaultValues("output1")); assertNotNull(element_info.getOutputDefaultValues("output2")); assertNull(element_info.getOutputDefaultValues("output3")); assertEquals(defaults1.length, element_info.getOutputDefaultValues("output1").length); assertEquals(defaults2.length, element_info.getOutputDefaultValues("output2").length); assertEquals(defaults1[0], element_info.getOutputDefaultValues("output1")[0]); assertEquals(defaults1[1], element_info.getOutputDefaultValues("output1")[1]); assertEquals(defaults2[0], element_info.getOutputDefaultValues("output2")[0]); } public void testAddIncookieDefaultValues() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertTrue(false == element_info.hasIncookieDefaults()); element_info.addIncookie("incookie1", "one"); element_info.addIncookie("incookie3", null); assertTrue(element_info.hasIncookieDefaults()); assertTrue(element_info.hasIncookieDefaultValue("incookie1")); assertTrue(false == element_info.hasIncookieDefaultValue("incookie2")); assertNotNull(element_info.getIncookieDefaultValue("incookie1")); assertNull(element_info.getIncookieDefaultValue("incookie2")); assertEquals("one", element_info.getIncookieDefaultValue("incookie1")); } public void testAddOutcookieDefaultValues() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); assertTrue(false == element_info.hasOutcookieDefaults()); element_info.addOutcookie("outcookie1", "one"); element_info.addOutcookie("outcookie3", null); assertTrue(element_info.hasOutcookieDefaults()); assertTrue(element_info.hasOutcookieDefaultValue("outcookie1")); assertTrue(false == element_info.hasOutcookieDefaultValue("outcookie2")); assertNotNull(element_info.getOutcookieDefaultValue("outcookie1")); assertNull(element_info.getOutcookieDefaultValue("outcookie2")); assertEquals("one", element_info.getOutcookieDefaultValue("outcookie1")); } public void testEmptyInitialFlowLink() throws EngineException { ElementInfo element_info = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); element_info.addExit("exit1"); assertNull(element_info.getFlowLink("exit1")); } public void testSetFlowLink() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info1.addExit("exit1"); element_info1.addExit("exit2"); element_info1.setFlowLink(new FlowLink("exit1", element_info2, false, false, false, true, false)); element_info1.setFlowLink(new FlowLink("exit2", element_info2, false, true, true, false, true)); assertSame(element_info1.getFlowLink("exit1").getTarget(), element_info2); assertEquals(element_info1.getFlowLink("exit1").cancelInheritance(), false); assertSame(element_info1.getFlowLink("exit2").getTarget(), element_info2); assertEquals(element_info1.getFlowLink("exit2").cancelInheritance(), true); Set<Map.Entry<String, FlowLink>> exit_entries = element_info1.getExitEntries(); assertEquals(exit_entries.size(), 2); Iterator<Map.Entry<String, FlowLink>> exit_entries_it = exit_entries.iterator(); Map.Entry<String, FlowLink> exit_entry = null; assertTrue(exit_entries_it.hasNext()); exit_entry = exit_entries_it.next(); assertNotNull(exit_entry); assertEquals(exit_entry.getKey(), "exit1"); assertSame(exit_entry.getValue().getTarget(), element_info2); assertEquals(exit_entry.getValue().cancelInheritance(), false); assertEquals(exit_entry.getValue().isRedirect(), true); assertEquals(exit_entry.getValue().cancelContinuations(), false); assertTrue(exit_entries_it.hasNext()); exit_entry = exit_entries_it.next(); assertNotNull(exit_entry); assertEquals(exit_entry.getKey(), "exit2"); assertSame(exit_entry.getValue().getTarget(), element_info2); assertEquals(exit_entry.getValue().cancelInheritance(), true); assertEquals(exit_entry.getValue().isRedirect(), false); assertEquals(exit_entry.getValue().cancelContinuations(), true); assertTrue(false == exit_entries_it.hasNext()); } public void testSetInexistantFlowLink() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); try { element_info1.addExit("exit1"); element_info1.addExit("exit2"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info2.setFlowLink(new FlowLink("exit3", element_info2, false, false, false, false, false)); } catch (ExitUnknownException e) { assertEquals(e.getDeclarationName(), "element/test3.xml"); assertEquals(e.getExitName(), "exit3"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testAddDataLink() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info3 = new ElementInfo("element/test3.xml", "text/html", TestElement4.class.getName(), ElementType.JAVA_CLASS); element_info1.addOutput("output1", null); element_info1.addOutput("output2", null); element_info1.addOutput("output3", null); element_info2.addInput("input1", null); element_info2.addInput("input2", null); element_info2.addInput("input3", null); element_info3.addInput("input1", null); element_info3.addInput("input2", null); element_info3.addInput("input3", null); element_info1.addExit("exit1"); element_info1.addExit("exit2"); FlowLink flowlink1 = new FlowLink("exit1", element_info2, false, false, false, false, false); FlowLink flowlink2 = new FlowLink("exit2", null, true, false, false, false, false); element_info1.setFlowLink(flowlink1); element_info1.setFlowLink(flowlink2); assertTrue(false == element_info1.hasDataLink(element_info2)); assertTrue(false == element_info1.hasDataLink(element_info3)); assertTrue(false == element_info1.hasSnapbackDataLinks()); element_info1.addDataLink(new DataLink("output1", element_info2, false, "input1", null)); element_info1.addDataLink(new DataLink("output1", element_info2, false, "input2", null)); element_info1.addDataLink(new DataLink("output1", element_info2, false, "input3", null)); element_info1.addDataLink(new DataLink("output2", element_info2, false, "input2", flowlink2)); element_info1.addDataLink(new DataLink("output2", element_info2, false, "input3", null)); element_info1.addDataLink(new DataLink("output1", null, true, "input1", null)); element_info1.addDataLink(new DataLink("output1", null, true, "input2", null)); element_info1.addDataLink(new DataLink("output1", null, true, "input3", null)); element_info1.addDataLink(new DataLink("output2", null, true, "input2", null)); element_info1.addDataLink(new DataLink("output2", null, true, "input3", null)); assertTrue(element_info1.hasDataLink(element_info2)); assertTrue(element_info1.hasSnapbackDataLinks()); Collection<String> inputs = null; inputs = element_info1.getDataLinkInputs("output1", element_info2, false, null); assertNotNull(inputs); assertEquals(inputs.size(), 3); boolean has_input1 = false; boolean has_input2 = false; boolean has_input3 = false; for (String input : inputs) { if (input.equals("input1")) { assertFalse(has_input1); has_input1 = true; } else if (input.equals("input2")) { assertFalse(has_input2); has_input2 = true; } else if (input.equals("input3")) { assertFalse(has_input3); has_input3 = true; } else { fail(); } } assertTrue(has_input1 && has_input2 && has_input3); inputs = element_info1.getDataLinkInputs("output2", element_info2, false, null); assertNotNull(inputs); assertEquals(inputs.size(), 1); assertEquals("input3", inputs.iterator().next()); has_input1 = false; has_input2 = false; has_input3 = false; inputs = element_info1.getDataLinkInputs("output2", element_info2, false, flowlink2); assertNotNull(inputs); assertEquals(inputs.size(), 2); for (String input : inputs) { if (input.equals("input2")) { assertFalse(has_input2); has_input2 = true; } else if (input.equals("input3")) { assertFalse(has_input3); has_input3 = true; } else { fail(); } } assertTrue(!has_input1 && has_input2 && has_input3); inputs = element_info1.getDataLinkInputs("output1", element_info3, false, null); assertNull(inputs); inputs = element_info1.getDataLinkInputs("output2", element_info3, false, null); assertNull(inputs); inputs = element_info1.getDataLinkInputs("output1", element_info3, true, null); assertNotNull(inputs); assertEquals(inputs.size(), 3); has_input1 = false; has_input2 = false; has_input3 = false; for (String input : inputs) { if (input.equals("input1")) { assertFalse(has_input1); has_input1 = true; } else if (input.equals("input2")) { assertFalse(has_input2); has_input2 = true; } else if (input.equals("input3")) { assertFalse(has_input3); has_input3 = true; } else { fail(); } } assertTrue(has_input1 && has_input2 && has_input3); has_input1 = false; has_input2 = false; has_input3 = false; inputs = element_info1.getDataLinkInputs("output2", element_info3, true, null); assertNotNull(inputs); assertEquals(inputs.size(), 2); for (String input : inputs) { if (input.equals("input2")) { assertFalse(has_input2); has_input2 = true; } else if (input.equals("input3")) { assertFalse(has_input3); has_input3 = true; } else { fail(); } } assertTrue(has_input2 && has_input3); } public void testInexistantDataLinks() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info1.addOutput("output1", null); element_info1.addOutput("output2", null); element_info1.addOutput("output3", null); element_info2.addInput("input1", null); element_info2.addInput("input2", null); element_info2.addInput("input3", null); element_info1.addExit("exit"); element_info1.setFlowLink(new FlowLink("exit", element_info2, false, false, false, false, false)); assertTrue(false == element_info1.hasDataLink(element_info2)); assertNull(element_info1.getDataLinkInputs("output3", element_info2, false, null)); element_info1.addDataLink(new DataLink("output1", element_info2, false, "input1", null)); assertTrue(element_info1.hasDataLink(element_info2)); assertNull(element_info1.getDataLinkInputs("output3", element_info2, false, null)); } public void testAddDataLinkWithoutFlowLink() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info1.addOutput("output1", null); element_info2.addInput("input1", null); try { element_info1.addDataLink(new DataLink("output1", element_info2, false, "input1", null)); } catch (FlowLinkMissingException e) { assertEquals(e.getSourceDeclarationName(), "element/test2.xml"); assertEquals(e.getTargetDeclarationName(), "element/test3.xml"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testAddSnapbackDataLinkWithoutSnapbackFlowLink() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info1.addOutput("output1", null); element_info2.addInput("input1", null); try { element_info1.addDataLink(new DataLink("output1", null, true, "input1", null)); } catch (SnapbackFlowLinkMissingException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testAddDataLinkErrors() throws EngineException { ElementInfo element_info1 = new ElementInfo("element/test2.xml", "text/html", TestElement2.class.getName(), ElementType.JAVA_CLASS); ElementInfo element_info2 = new ElementInfo("element/test3.xml", "text/html", TestElement3.class.getName(), ElementType.JAVA_CLASS); element_info1.addOutput("output1", null); element_info2.addInput("input1", null); try { element_info1.addDataLink(new DataLink("output2", element_info2, false, "input1", null)); } catch (OutputUnknownException e) { assertEquals(e.getDeclarationName(), "element/test2.xml"); assertEquals(e.getOutputName(), "output2"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } try { element_info1.addDataLink(new DataLink("output1", element_info2, false, "input2", null)); } catch (InputUnknownException e) { assertEquals(e.getDeclarationName(), "element/test3.xml"); assertEquals(e.getInputName(), "input2"); } catch (EngineException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } class TestElement2 extends Element { public void processElement() throws EngineException { print("the content"); } } class TestElement3 extends Element { public void processElement() throws EngineException { print("other content"); } } abstract class TestElementNotInstantiatable extends Element { public void processElement() throws EngineException { print("the content"); } }