/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestJanino2Site.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.engine;
import com.uwyn.rife.rep.Rep;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import java.util.Collection;
import junit.framework.TestCase;
public class TestJanino2Site extends TestCase
{
public TestJanino2Site(String name)
{
super(name);
}
public void testParser()
{
ResourceFinderClasspath resourcefinder = ResourceFinderClasspath.getInstance();
SiteBuilder builder = new SiteBuilder("janino/test_janino2site.janino", resourcefinder);
Site site = builder.getSite();
assertEquals(site.getUrls().size(), 6);
assertEquals(site.getIds().size(), 9);
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(elementinfo1.getPropertyNames().size(), 4+Rep.getProperties().size());
assertEquals("value1", elementinfo1.getProperty("property1"));
assertEquals("value2", elementinfo1.getProperty("property2"));
assertEquals("value3", elementinfo1.getProperty("property3"));
assertEquals("value4", elementinfo1.getProperty("property4"));
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(0+Rep.getProperties().size(), elementinfo2.getPropertyNames().size());
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(0+Rep.getProperties().size(), elementinfo3.getPropertyNames().size());
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(0+Rep.getProperties().size(), elementinfo4.getPropertyNames().size());
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(0+Rep.getProperties().size(), subsite_elementinfo2.getPropertyNames().size());
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(0+Rep.getProperties().size(), subsite_elementinfo3.getPropertyNames().size());
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"));
assertEquals(elementinfo5.getNamedGlobalBeanNames().size(), 1);
assertEquals(elementinfo5.getNamedGlobalBeanInfo("globalbean1").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl");
assertEquals(elementinfo5.getNamedGlobalBeanInfo("globalbean1").getPrefix(), "onemoreprefixgroup_");
assertEquals(elementinfo5.getNamedGlobalBeanInfo("globalbean1").getGroupName(), "anothergroup");
assertNull(elementinfo5.getInheritanceStack());
assertEquals(0+Rep.getProperties().size(), elementinfo5.getPropertyNames().size());
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(0+Rep.getProperties().size(), elementinfo6.getPropertyNames().size());
ElementInfo elementinfo7 = site.resolveUrl("/test/element7", null);
assertNotNull(elementinfo7);
assertSame(site.resolveId(".test_janino2elementinfo3"), 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");
assertEquals(elementinfo1.getGlobalVarDefaultValues("globalvar1").length, 1);
assertEquals(elementinfo1.getGlobalVarDefaultValues("globalvar1")[0], "default1");
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());
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);
}
}