/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestSiteBuilder.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.engine; import com.uwyn.rife.config.Config; import com.uwyn.rife.database.Datasources; import com.uwyn.rife.ioc.PropertyValueObject; import com.uwyn.rife.ioc.PropertyValueParticipant; import com.uwyn.rife.ioc.PropertyValueTemplate; import com.uwyn.rife.rep.BlockingRepository; import com.uwyn.rife.rep.Rep; import com.uwyn.rife.rep.Repository; import com.uwyn.rife.resources.ResourceFinderClasspath; import com.uwyn.rife.template.Template; import com.uwyn.rife.template.TemplateFactory; import java.util.Collection; import junit.framework.TestCase; public class TestSiteBuilder extends TestCase { public TestSiteBuilder(String name) { super(name); } public void testInstantiation() { ResourceFinderClasspath resourcefinder = ResourceFinderClasspath.getInstance(); SiteBuilder builder = new SiteBuilder("", resourcefinder); assertNotNull(builder); } public void testRepProperties() { BlockingRepository rep = new BlockingRepository(); Repository orig_rep = Rep.getDefaultRepository(); try { Rep.setDefaultRepository(rep); rep.getProperties() .put("prop1", "reppropval1") .put("prop3", "reppropval2"); ResourceFinderClasspath resourcefinder = ResourceFinderClasspath.getInstance(); SiteBuilder builder = new SiteBuilder("test", resourcefinder); builder .enterElement("ELEMENT1") .setImplementation("com.uwyn.rife.engine.testelements.outputs.Normal") .setUrl("/test/element1") .addProperty("prop1", new PropertyValueObject("elementpropval")) .addProperty("prop2", new PropertyValueTemplate("enginehtml", "noblocks_in")) .leaveElement(); Site site = builder.getSite(); ElementInfo element = site.resolveId(".ELEMENT1"); assertNotNull(element); assertEquals(2+1+System.getProperties().size(), element.getPropertyNames().size()); assertEquals("elementpropval", element.getProperty("prop1")); assertEquals("<html>\n"+ " <head>\n"+ " <title>Template without blocks</title>\n"+ " </head>\n"+ "\n"+ " <body>\n"+ " <h1>This is a template without blocks.</h1>\n"+ " </body>\n"+ "</html>", ((Template)element.getProperty("prop2")).getContent()); assertEquals("reppropval2", element.getProperty("prop3")); } finally { Rep.setDefaultRepository(orig_rep); } } public void testManualBuild() { ResourceFinderClasspath resourcefinder = ResourceFinderClasspath.getInstance(); SiteBuilder builder = new SiteBuilder("test_xml2site", resourcefinder); builder .setFallback("ELEMENT4") .addGlobalExit("globalexit1", "ELEMENT6") .addGlobalExit("globalexit2", "SUBSITE.ELEMENT2") .addGlobalVar("globalvar1", null) .addGlobalVar("globalvar2", null) .addGlobalBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", "onemoreprefixgroup_", "globalbean1", "anothergroup") .addGlobalBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", null, null, "anothergroup") .addProperty("prop1", new PropertyValueObject("sitepropval")) .addProperty("prop6", new PropertyValueParticipant(Datasources.DEFAULT_PARTICIPANT_NAME, new PropertyValueObject("purgingunittestspgsql"))) .enterSubsiteDeclaration("SUBSITE") .setUrlPrefix("/subsite") .addProperty("prop1", new PropertyValueObject("subsitepropval")) .addProperty("prop2", new PropertyValueTemplate("enginehtml", "noblocks_in")) .addProperty("prop3", new PropertyValueObject(Rep.getParticipant("configuration").getObject("EXPRESSION_CONFIG_VALUE")+" 3")) .addProperty("prop4", new PropertyValueParticipant(Datasources.DEFAULT_PARTICIPANT_NAME, new PropertyValueObject("unittestspgsql"))) .addProperty("prop5", new PropertyValueObject(""+Rep.getParticipant("configuration").getObject("DATASOURCE_USER")+"\n "+Rep.getParticipant("configuration").getObject(Config.getRepInstance().getString("IOC_CONFIG")))) .enterSubsite() .addGlobalExit("globalexit3", "ELEMENT3") .setFallback("ELEMENT2") .setInherits("ELEMENT4") .addGlobalVar("globalvar3", null) .addDeparture("ELEMENT3") .enterElement("ELEMENT2") .setImplementation("com.uwyn.rife.engine.testelements.outputs.Normal") .setUrl("/test/element2") .addInput("input1", null) .addInput("input2", null) .addOutput("output1", null) .addExit("exit1") .leaveElement() .enterElement("ELEMENT3") .setImplementation("com.uwyn.rife.engine.testelements.inputs.Normal") .setUrl("/test/element3") .leaveElement() .enterSubsiteDeclaration("SUBSITE2") .setUrlPrefix("subsite2") .enterSubsite() .enterElement("ELEMENT8") .setImplementation("com.uwyn.rife.engine.testelements.inputs.Normal") .setUrl("test/element8") .leaveElement() .leaveSubsite() .leaveSubsiteDeclaration() .leaveSubsite() .leaveSubsiteDeclaration() .enterGroup() .setInherits("ELEMENT5") .addGlobalVar("globalvar4", null) .enterElement("ELEMENT6") .setImplementation("com.uwyn.rife.engine.testelements.outputs.Normal") .setUrl("/test/element6") .setInherits("ELEMENT3") .addInput("input1", null) .addInput("input2", null) .addOutput("output1", null) .addExit("exit1") .leaveElement() .enterElement("ELEMENT7") .setImplementation("com.uwyn.rife.engine.testelements.inputs.Normal") .setUrl("/test/element7") .leaveElement() .leaveGroup() .enterElement("ELEMENT1") .setImplementation("com.uwyn.rife.engine.testelements.engine.Simple") .setUrl("/test/element1") .addDataLink("output1", "ELEMENT2", "input1") .addDataLink("output1", "ELEMENT2", "input2") .addFlowLink("exit1", "ELEMENT2", false) .enterFlowLink("exit3") .destId("ELEMENT2") .addDataLink("output3", "input1") .leaveFlowLink() .enterFlowLink("exit4") .destId("ELEMENT2") .addDataLink("output4", "input1") .leaveFlowLink() .addSnapbackFlowLink("exit2", false) .addSnapbackDataLink("output2", "input2") .addStaticProperty("property1", "value1") .addStaticProperty("property2", "value2") .addStaticProperty("property3", "value3") .addStaticProperty("property4", "value4") .addInput("input1", null) .addInput("input2", null) .addInput("input3", null) .addOutput("output1", null) /* .addOutput("output2", null) */ // auto-added by datalink .addIncookie("incookie1", null) .addIncookie("incookie2", null) .addOutcookie("outcookie1", null) .addOutcookie("outcookie2", null) .addOutcookie("outcookie3", null) .addOutcookie("outcookie4", null) .addInBean("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, "inbean1", null) .addInBean("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null, null) .addInBean("com.uwyn.rife.engine.testelements.exits.BeanImpl1", "prefix_", null, null) .addInBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", "prefixgroup_", "inbean2", "somegroup") .addInBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", null, null, "somegroup") .addOutBean("com.uwyn.rife.engine.testelements.exits.BeanImpl1", null, null, null) .addOutBean("com.uwyn.rife.engine.testelements.exits.BeanImpl2", null, null, null) .addOutBean("com.uwyn.rife.engine.testelements.exits.BeanImpl2", "prefix_", "outbean1", null) .addOutBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", "prefixgroup_", null, "somegroup") .addOutBean("com.uwyn.rife.engine.testelements.submission.BeanImpl", null, "outbean2", "somegroup") .addChildTrigger("input1") .addChildTrigger("input2") /* .addExit("exit1") */ // auto-added by flowlink .addExit("exit2") .addExit("exit3") .addExit("exit4") .enterSubmission("submission1") .addParameter("param1", null) .addParameter("param2", null) .addParameter("param3", null) .addParameterRegexp("paramA(\\d+)") .addParameterRegexp("paramB(\\d+)") .addFile("file1") .addFile("file2") .leaveSubmission() .enterSubmission("submission2") .addParameter("param1", null) .addParameter("param2", null) .addParameterRegexp("paramC(\\d+)") .addFile("file1") .leaveSubmission() .addProperty("prop1", new PropertyValueObject("elementpropval")) .addProperty("prop7", new PropertyValueParticipant(Datasources.DEFAULT_PARTICIPANT_NAME, new PropertyValueObject("sessiondurationunittestspgsql"))) .leaveElement() .addProperty("prop2", new PropertyValueTemplate("enginehtml", "unsetvalues_output_in")) .enterElement("ELEMENT2") .setImplementation("com.uwyn.rife.engine.testelements.outputs.Normal") .setUrl("/test/element2") .setInherits("ELEMENT3") .addInput("input1", null) .addInput("input2", null) .addOutput("output1", null) .addExit("exit1") .leaveElement() .enterElement("ELEMENT3") .setImplementation("com.uwyn.rife.engine.testelements.inputs.Normal") .leaveElement() .enterElement("ELEMENT4") .setImplementation("com.uwyn.rife.engine.testelements.submission.Normal") .leaveElement() .enterElement("ELEMENT5") .setImplementation("com.uwyn.rife.engine.testelements.exits.SimpleSource") .leaveElement(); Site site = builder.getSite(); assertEquals(site.getUrls().size(), 7); assertEquals(site.getIds().size(), 10); assertEquals("com.uwyn.rife.engine.testelements.engine.Simple", site.resolveUrl("/test/element1", null). getImplementation()); assertNull(site.resolveUrl("/test/element1/path/info", null)); assertNull(site.resolveUrl("/test/element1_notthere", null)); assertEquals("com.uwyn.rife.engine.testelements.submission.Normal", site.searchFallback("").getImplementation()); assertEquals("com.uwyn.rife.engine.testelements.submission.Normal", site.searchFallback("/hskjhjdz").getImplementation()); assertEquals("com.uwyn.rife.engine.testelements.outputs.Normal", site.searchFallback("/subsite").getImplementation()); assertEquals("com.uwyn.rife.engine.testelements.outputs.Normal", site.searchFallback("/subsitedfzefze").getImplementation()); assertEquals("com.uwyn.rife.engine.testelements.outputs.Normal", site.searchFallback("/subsite/kjdkfj").getImplementation()); Collection<String> global_exits = null; Collection<String> global_vars = null; ElementInfo elementinfo1 = site.resolveUrl("/test/element1", null); assertNotNull(elementinfo1); assertSame(site.resolveId(".ELEMENT1"), elementinfo1); assertEquals(elementinfo1.getImplementation(), com.uwyn.rife.engine.testelements.engine.Simple.class.getName()); assertTrue(elementinfo1.hasGlobalExits()); global_exits = elementinfo1.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo1.hasGlobalVars()); global_vars = elementinfo1.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 8); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo1.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo1.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo1.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo1.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNull(elementinfo1.getInheritanceStack()); assertEquals(8+Rep.getProperties().size(), elementinfo1.getPropertyNames().size()); assertEquals("elementpropval", elementinfo1.getProperty("prop1")); assertTrue(elementinfo1.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo1.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo1.getProperty("prop6")); assertSame(Datasources.getRepInstance().getDatasource("sessiondurationunittestspgsql"), elementinfo1.getProperty("prop7")); ElementInfo elementinfo2 = site.resolveUrl("/test/element2", null); assertNotNull(elementinfo2); assertSame(site.resolveId(".ELEMENT2"), elementinfo2); assertEquals(elementinfo2.getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertTrue(elementinfo2.hasGlobalExits()); global_exits = elementinfo2.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo2.hasGlobalVars()); global_vars = elementinfo2.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 8); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo2.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo2.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo2.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo2.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(elementinfo2.getInheritanceStack()); assertEquals(2, elementinfo2.getInheritanceStack().size()); assertEquals(elementinfo2.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertEquals(elementinfo2.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertEquals(3+Rep.getProperties().size(), elementinfo2.getPropertyNames().size()); assertEquals("sitepropval", elementinfo2.getProperty("prop1")); assertTrue(elementinfo2.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo2.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo2.getProperty("prop6")); ElementInfo elementinfo3 = site.resolveId(".ELEMENT3"); assertNotNull(elementinfo3); assertEquals(elementinfo3.getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertTrue(elementinfo3.hasGlobalExits()); global_exits = elementinfo3.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo3.hasGlobalVars()); global_vars = elementinfo3.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 8); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo3.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo3.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo3.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo3.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNull(elementinfo3.getInheritanceStack()); assertEquals(3+Rep.getProperties().size(), elementinfo3.getPropertyNames().size()); assertEquals("sitepropval", elementinfo3.getProperty("prop1")); assertTrue(elementinfo3.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo3.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo3.getProperty("prop6")); ElementInfo elementinfo4 = site.resolveId(".ELEMENT4"); assertNotNull(elementinfo4); assertEquals(elementinfo4.getImplementation(), com.uwyn.rife.engine.testelements.submission.Normal.class.getName()); assertTrue(elementinfo4.hasGlobalExits()); global_exits = elementinfo4.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo4.hasGlobalVars()); global_vars = elementinfo4.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 8); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo4.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo4.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo4.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo4.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNull(elementinfo4.getInheritanceStack()); assertEquals(3+Rep.getProperties().size(), elementinfo4.getPropertyNames().size()); assertEquals("sitepropval", elementinfo4.getProperty("prop1")); assertTrue(elementinfo4.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo4.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo4.getProperty("prop6")); ElementInfo subsite_elementinfo2 = site.resolveUrl("/subsite/test/element2", null); assertNotNull(subsite_elementinfo2); assertSame(site.resolveId(".SUBSITE.ELEMENT2"), subsite_elementinfo2); assertEquals(subsite_elementinfo2.getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertTrue(subsite_elementinfo2.hasGlobalExits()); global_exits = subsite_elementinfo2.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 3); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(global_exits.contains("globalexit3")); assertTrue(subsite_elementinfo2.hasGlobalVars()); global_vars = subsite_elementinfo2.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 9); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("globalvar3")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(subsite_elementinfo2.getNamedGlobalBeanNames().size(), 1); assertEquals(subsite_elementinfo2.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(subsite_elementinfo2.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(subsite_elementinfo2.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(subsite_elementinfo2.getInheritanceStack()); assertEquals(2, subsite_elementinfo2.getInheritanceStack().size()); assertEquals(subsite_elementinfo2.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertEquals(subsite_elementinfo2.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.submission.Normal.class.getName()); assertEquals(6+Rep.getProperties().size(), subsite_elementinfo2.getPropertyNames().size()); assertEquals("subsitepropval", subsite_elementinfo2.getProperty("prop1")); assertTrue(subsite_elementinfo2.getProperty("prop2") instanceof Template); assertEquals(((Template)subsite_elementinfo2.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("noblocks_in").getContent()); assertEquals("the value 3", subsite_elementinfo2.getProperty("prop3")); assertSame(Datasources.getRepInstance().getDatasource("unittestspgsql"), subsite_elementinfo2.getProperty("prop4")); assertEquals("unittests\n pgsql", subsite_elementinfo2.getProperty("prop5")); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), subsite_elementinfo2.getProperty("prop6")); ElementInfo subsite_elementinfo3 = site.resolveUrl("/subsite/test/element3", null); assertNotNull(subsite_elementinfo3); assertSame(site.resolveId(".SUBSITE.ELEMENT3"), subsite_elementinfo3); assertEquals(subsite_elementinfo3.getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertTrue(subsite_elementinfo3.hasGlobalExits()); global_exits = subsite_elementinfo3.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 3); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(global_exits.contains("globalexit3")); assertTrue(subsite_elementinfo3.hasGlobalVars()); global_vars = subsite_elementinfo3.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 9); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("globalvar3")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(subsite_elementinfo3.getNamedGlobalBeanNames().size(), 1); assertEquals(subsite_elementinfo3.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(subsite_elementinfo3.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(subsite_elementinfo3.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(subsite_elementinfo3.getInheritanceStack()); assertEquals(2, subsite_elementinfo3.getInheritanceStack().size()); assertEquals(subsite_elementinfo3.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertEquals(subsite_elementinfo3.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.submission.Normal.class.getName()); assertTrue(subsite_elementinfo3.hasDepartureVars()); assertEquals(1, subsite_elementinfo3.getDepartureVars().size()); assertEquals("globalvar3", subsite_elementinfo3.getDepartureVars().get(0)); assertEquals(6+Rep.getProperties().size(), subsite_elementinfo3.getPropertyNames().size()); assertEquals("subsitepropval", subsite_elementinfo3.getProperty("prop1")); assertTrue(subsite_elementinfo3.getProperty("prop2") instanceof Template); assertEquals(((Template)subsite_elementinfo3.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("noblocks_in").getContent()); assertEquals("the value 3", subsite_elementinfo3.getProperty("prop3")); assertSame(Datasources.getRepInstance().getDatasource("unittestspgsql"), subsite_elementinfo3.getProperty("prop4")); assertEquals("unittests\n pgsql", subsite_elementinfo3.getProperty("prop5")); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), subsite_elementinfo3.getProperty("prop6")); ElementInfo elementinfo5 = site.resolveId(".ELEMENT5"); assertNotNull(elementinfo5); assertEquals(elementinfo5.getImplementation(), com.uwyn.rife.engine.testelements.exits.SimpleSource.class.getName()); assertTrue(elementinfo5.hasGlobalExits()); global_exits = elementinfo5.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo5.hasGlobalVars()); global_vars = elementinfo5.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 8); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertNull(elementinfo5.getInheritanceStack()); assertEquals(3+Rep.getProperties().size(), elementinfo5.getPropertyNames().size()); assertEquals("sitepropval", elementinfo5.getProperty("prop1")); assertTrue(elementinfo5.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo5.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo5.getProperty("prop6")); ElementInfo elementinfo6 = site.resolveUrl("/test/element6", null); assertNotNull(elementinfo6); assertSame(site.resolveId(".ELEMENT6"), elementinfo6); assertEquals(elementinfo6.getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertTrue(elementinfo6.hasGlobalExits()); global_exits = elementinfo6.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo6.hasGlobalVars()); global_vars = elementinfo6.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 9); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("globalvar4")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo6.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo6.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo6.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo6.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(elementinfo6.getInheritanceStack()); assertEquals(3, elementinfo6.getInheritanceStack().size()); assertEquals(elementinfo6.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.outputs.Normal.class.getName()); assertEquals(elementinfo6.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertEquals(elementinfo6.getInheritanceStack().get(2).getImplementation(), com.uwyn.rife.engine.testelements.exits.SimpleSource.class.getName()); assertEquals(3+Rep.getProperties().size(), elementinfo6.getPropertyNames().size()); assertEquals("sitepropval", elementinfo6.getProperty("prop1")); assertTrue(elementinfo6.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo6.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo6.getProperty("prop6")); ElementInfo elementinfo7 = site.resolveUrl("/test/element7", null); assertNotNull(elementinfo7); assertSame(site.resolveId(".ELEMENT7"), elementinfo7); assertEquals(elementinfo7.getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertTrue(elementinfo7.hasGlobalExits()); global_exits = elementinfo7.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 2); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(elementinfo7.hasGlobalVars()); global_vars = elementinfo7.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 9); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("globalvar4")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo7.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(elementinfo7.getInheritanceStack()); assertEquals(2, elementinfo7.getInheritanceStack().size()); assertEquals(elementinfo7.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertEquals(elementinfo7.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.exits.SimpleSource.class.getName()); assertEquals(3+Rep.getProperties().size(), elementinfo7.getPropertyNames().size()); assertEquals("sitepropval", elementinfo7.getProperty("prop1")); assertTrue(elementinfo7.getProperty("prop2") instanceof Template); assertEquals(((Template)elementinfo7.getProperty("prop2")).getContent(), TemplateFactory.ENGINEHTML.get("unsetvalues_output_in").getContent()); assertSame(Datasources.getRepInstance().getDatasource("purgingunittestspgsql"), elementinfo7.getProperty("prop6")); ElementInfo elementinfo8 = site.resolveUrl("/subsite/subsite2/test/element8", null); assertNotNull(elementinfo8); assertSame(site.resolveId(".SUBSITE.SUBSITE2.ELEMENT8"), elementinfo8); assertEquals(elementinfo8.getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertTrue(elementinfo8.hasGlobalExits()); global_exits = elementinfo8.getGlobalExitNames(); assertNotNull(global_exits); assertEquals(global_exits.size(), 3); assertTrue(global_exits.contains("globalexit1")); assertTrue(global_exits.contains("globalexit2")); assertTrue(global_exits.contains("globalexit3")); assertTrue(elementinfo8.hasGlobalVars()); global_vars = elementinfo8.getGlobalVarNames(); assertNotNull(global_vars); assertEquals(global_vars.size(), 9); assertTrue(global_vars.contains("globalvar1")); assertTrue(global_vars.contains("globalvar2")); assertTrue(global_vars.contains("globalvar3")); assertTrue(global_vars.contains("onemoreprefixgroup_double")); assertTrue(global_vars.contains("onemoreprefixgroup_long")); assertTrue(global_vars.contains("onemoreprefixgroup_shortObject")); assertTrue(global_vars.contains("double")); assertTrue(global_vars.contains("long")); assertTrue(global_vars.contains("shortObject")); assertEquals(elementinfo7.getNamedGlobalBeanNames().size(), 1); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_"); assertEquals(elementinfo7.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup"); assertNotNull(elementinfo8.getInheritanceStack()); assertEquals(2, elementinfo8.getInheritanceStack().size()); assertEquals(elementinfo8.getInheritanceStack().get(0).getImplementation(), com.uwyn.rife.engine.testelements.inputs.Normal.class.getName()); assertEquals(elementinfo8.getInheritanceStack().get(1).getImplementation(), com.uwyn.rife.engine.testelements.submission.Normal.class.getName()); assertSame(elementinfo1.getFlowLink("exit1").getTarget(), elementinfo2); assertEquals(elementinfo1.getFlowLink("exit1").isSnapback(), false); assertNull(elementinfo1.getFlowLink("exit2").getTarget()); assertEquals(elementinfo1.getFlowLink("exit2").isSnapback(), true); Collection<String> inputs = null; inputs = elementinfo1.getDataLinkInputs("output1", elementinfo2, false, null); assertNotNull(inputs); assertEquals(inputs.size(), 2); assertTrue(inputs.contains("input1")); assertTrue(inputs.contains("input2")); inputs = elementinfo1.getDataLinkInputs("output1", elementinfo3, false, null); assertNull(inputs); inputs = elementinfo1.getDataLinkInputs("output1", elementinfo3, true, null); assertNull(inputs); inputs = elementinfo1.getDataLinkInputs("output2", elementinfo2, false, null); assertNull(inputs); inputs = elementinfo1.getDataLinkInputs("output2", elementinfo3, false, null); assertNull(inputs); inputs = elementinfo1.getDataLinkInputs("output2", elementinfo3, true, null); assertNotNull(inputs); assertEquals(inputs.size(), 1); assertTrue(inputs.contains("input2")); inputs = elementinfo1.getDataLinkInputs("output3", elementinfo2, false, elementinfo1.getFlowLink("exit3")); assertNotNull(inputs); assertEquals(inputs.size(), 1); assertTrue(inputs.contains("input1")); inputs = elementinfo1.getDataLinkInputs("output3", elementinfo2, false, null); assertNull(inputs); inputs = elementinfo1.getDataLinkInputs("output4", elementinfo2, false, elementinfo1.getFlowLink("exit4")); assertNotNull(inputs); assertEquals(inputs.size(), 1); assertTrue(inputs.contains("input1")); inputs = elementinfo1.getDataLinkInputs("output4", elementinfo2, false, null); assertNull(inputs); } }