Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java')
-rw-r--r--jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java877
1 files changed, 677 insertions, 200 deletions
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java
index cb31c10366..7e20c21da2 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java
@@ -13,13 +13,20 @@
package org.eclipse.jetty.webapp;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.jetty.util.resource.Resource;
-import org.eclipse.jetty.webapp.WebXmlProcessor.AbsoluteOrdering;
-import org.eclipse.jetty.webapp.WebXmlProcessor.RelativeOrdering;
+import org.eclipse.jetty.webapp.MetaData.AbsoluteOrdering;
+import org.eclipse.jetty.webapp.MetaData.RelativeOrdering;
/**
* OrderingTest
@@ -28,193 +35,415 @@ import org.eclipse.jetty.webapp.WebXmlProcessor.RelativeOrdering;
*/
public class OrderingTest extends TestCase
{
+ public class TestResource extends Resource
+ {
+ public String _name;
+
+ public TestResource (String name)
+ {
+ _name =name;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#addPath(java.lang.String)
+ */
+ public Resource addPath(String path) throws IOException, MalformedURLException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#delete()
+ */
+ public boolean delete() throws SecurityException
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#exists()
+ */
+ public boolean exists()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#getFile()
+ */
+ public File getFile() throws IOException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#getInputStream()
+ */
+ public InputStream getInputStream() throws IOException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#getName()
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#getOutputStream()
+ */
+ public OutputStream getOutputStream() throws IOException, SecurityException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#getURL()
+ */
+ public URL getURL()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#isContainedIn(org.eclipse.jetty.util.resource.Resource)
+ */
+ public boolean isContainedIn(Resource r) throws MalformedURLException
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#isDirectory()
+ */
+ public boolean isDirectory()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#lastModified()
+ */
+ public long lastModified()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#length()
+ */
+ public long length()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#list()
+ */
+ public String[] list()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#release()
+ */
+ public void release()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * @see org.eclipse.jetty.util.resource.Resource#renameTo(org.eclipse.jetty.util.resource.Resource)
+ */
+ public boolean renameTo(Resource dest) throws SecurityException
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ }
+
+
public void testRelativeOrdering0 ()
throws Exception
{
//Example from ServletSpec p.70
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ List<Resource> resources = new ArrayList<Resource>();
+ metaData._ordering = metaData.new RelativeOrdering();
//A: after others, after C
- Fragment f1 = new Fragment((Resource)null, processor);
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
- f1._hasOther=true;
- ((RelativeOrdering)processor._ordering).addAfterOthers(f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1, f1);
+ f1._otherType = FragmentDescriptor.OtherType.After;
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(r1);
f1._afters.add("C");
//B: before others
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- f2._hasOther = true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2, f2);
+ f2._otherType = FragmentDescriptor.OtherType.Before;
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(r2);
//C: after others
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
- ((RelativeOrdering)processor._ordering).addAfterOthers(f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3, f3);
+ f3._otherType = FragmentDescriptor.OtherType.After;
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(r3);
//D: no ordering
- Fragment f4 = new Fragment((Resource)null, processor);
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor(r4, metaData);
f4._name="D";
- processor._webFragmentNameMap.put(f4._name, f4);
- ((RelativeOrdering)processor._ordering).addNoOthers(f4);
-
- //E: no ordering
- Fragment f5 = new Fragment((Resource)null, processor);
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4, f4);
+ f4._otherType = FragmentDescriptor.OtherType.None;
+ //((RelativeOrdering)metaData._ordering).addNoOthers(r4);
+
+ //E: no ordering
+ TestResource jar5 = new TestResource("E");
+ resources.add(jar5);
+ TestResource r5 = new TestResource("E/web-fragment.xml");
+ FragmentDescriptor f5 = new FragmentDescriptor(r5, metaData);
f5._name="E";
- processor._webFragmentNameMap.put(f5._name, f5);
- ((RelativeOrdering)processor._ordering).addNoOthers(f5);
+ metaData._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentResourceMap.put(jar5, f5);
+ f5._otherType = FragmentDescriptor.OtherType.None;
+ //((RelativeOrdering)metaData._ordering).addNoOthers(r5);
//F: before others, before B
- Fragment f6 = new Fragment((Resource)null, processor);
+ TestResource jar6 = new TestResource("F");
+ resources.add(jar6);
+ TestResource r6 = new TestResource("F/web-fragment.xml");
+ FragmentDescriptor f6 = new FragmentDescriptor(r6, metaData);
f6._name="F";
- processor._webFragmentNameMap.put(f6._name, f6);
- f6._hasOther=true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f6);
+ metaData._webFragmentNameMap.put(f6._name, f6);
+ metaData._webFragmentResourceMap.put(jar6,f6);
+ f6._otherType = FragmentDescriptor.OtherType.Before;
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(r6);
f6._befores.add("B");
- /*
- * p.70 outcome: F, B, D, E, C, A
- */
+ //
+ // p.70 outcome: F, B, D, E, C, A
+ //
String[] outcomes = {"FBDECA"};
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
String result = "";
- for (Fragment f:orderedList)
- result+=(f._name);
-
+ for (Resource r:orderedList)
+ result+=(((TestResource)r)._name);
+
if (!checkResult(result, outcomes))
fail("No outcome matched "+result);
}
-
+
+
public void testRelativeOrdering1 ()
throws Exception
{
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
//Example from ServletSpec p.70-71
//No name: after others, before C
- Fragment f1 = new Fragment((Resource)null, processor);
- f1._name = Fragment.NAMELESS+"1";
- processor._webFragmentNameMap.put(f1._name, f1);
- f1._hasOther=true;
- ((RelativeOrdering)processor._ordering).addAfterOthers(f1);
+ TestResource jar1 = new TestResource("plain");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("plain/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
+ f1._name = FragmentDescriptor.NAMELESS+"1";
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1,f1);
+ f1._otherType = FragmentDescriptor.OtherType.After;
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(f1);
f1._befores.add("C");
//B: before others
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- f2._hasOther = true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2,f2);
+ f2._otherType = FragmentDescriptor.OtherType.Before;
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(f2);
//C: no ordering
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
- ((RelativeOrdering)processor._ordering).addNoOthers(f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f3);
+ f3._otherType = FragmentDescriptor.OtherType.None;
//D: after others
- Fragment f4 = new Fragment((Resource)null, processor);
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor(r4, metaData);
f4._name="D";
- processor._webFragmentNameMap.put(f4._name, f4);
- f4._hasOther = true;
- ((RelativeOrdering)processor._ordering).addAfterOthers(f4);
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4,f4);
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(f4);
+ f4._otherType = FragmentDescriptor.OtherType.After;
//E: before others
- Fragment f5 = new Fragment((Resource)null, processor);
+ TestResource jar5 = new TestResource("E");
+ resources.add(jar5);
+ TestResource r5 = new TestResource("E/web-fragment.xml");
+ FragmentDescriptor f5 = new FragmentDescriptor(r5, metaData);
f5._name="E";
- processor._webFragmentNameMap.put(f5._name, f5);
- f5._hasOther=true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f5);
+ metaData._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentResourceMap.put(jar5,f5);
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(f5);
+ f5._otherType = FragmentDescriptor.OtherType.Before;
//F: no ordering
- Fragment f6 = new Fragment((Resource)null, processor);
+ TestResource jar6 = new TestResource("F");
+ resources.add(jar6);
+ TestResource r6 = new TestResource("F/web-fragment.xml");
+ FragmentDescriptor f6 = new FragmentDescriptor(r6, metaData);
f6._name="F";
- processor._webFragmentNameMap.put(f6._name, f6);
- ((RelativeOrdering)processor._ordering).addNoOthers(f6);
+ metaData._webFragmentNameMap.put(f6._name, f6);
+ metaData._webFragmentResourceMap.put(jar6,f6);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f6);
+ f6._otherType = FragmentDescriptor.OtherType.None;
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
- /* p.70-71 Possible outcomes are:
- * B, E, F, noname, C, D
- * B, E, F, noname, D, C
- * E, B, F, noname, C, D
- * E, B, F, noname, D, C
- * E, B, F, D, noname, C
- */
- String[] outcomes = {"BEF"+f1._name+"CD",
- "BEF"+ f1._name+ "DC",
- "EBF"+ f1._name+ "CD",
- "EBF"+ f1._name+ "DC",
- "EBFD"+ f1._name};
+ // p.70-71 Possible outcomes are:
+ // B, E, F, noname, C, D
+ // B, E, F, noname, D, C
+ // E, B, F, noname, C, D
+ // E, B, F, noname, D, C
+ // E, B, F, D, noname, C
+ //
+ String[] outcomes = {"BEFplainCD",
+ "BEFplainDC",
+ "EBFplainCD",
+ "EBFplainDC",
+ "EBFDplain"};
String orderedNames = "";
- for (Fragment f:orderedList)
- orderedNames+=(f._name);
+ for (Resource r:orderedList)
+ orderedNames+=(((TestResource)r)._name);
-
if (!checkResult(orderedNames, outcomes))
fail("No outcome matched "+orderedNames);
}
+
public void testRelativeOrdering2 ()
throws Exception
{
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
//Example from Spec p. 71-72
//A: after B
- Fragment f1 = new Fragment((Resource)null, processor);
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
- ((RelativeOrdering)processor._ordering).addNoOthers(f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1, f1);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f1);
+ f1._otherType = FragmentDescriptor.OtherType.None;
f1._afters.add("B");
//B: no order
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- ((RelativeOrdering)processor._ordering).addNoOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2, f2);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f2);
+ f2._otherType = FragmentDescriptor.OtherType.None;
//C: before others
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(f3);
+ f3._otherType = FragmentDescriptor.OtherType.Before;
//D: no order
- Fragment f4 = new Fragment((Resource)null, processor);
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor(r4, metaData);
f4._name="D";
- processor._webFragmentNameMap.put(f4._name, f4);
- ((RelativeOrdering)processor._ordering).addNoOthers(f4);
-
- /*
- * p.71-72 possible outcomes are:
- * C,B,D,A
- * C,D,B,A
- * C,B,A,D
- */
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4, f4);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f4);
+ f4._otherType = FragmentDescriptor.OtherType.None;
+ //
+ // p.71-72 possible outcomes are:
+ // C,B,D,A
+ // C,D,B,A
+ // C,B,A,D
+ //
String[] outcomes = {"CBDA",
"CDBA",
"CBAD"};
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
String result = "";
- for (Fragment f:orderedList)
- result+=(f._name);
+ for (Resource r:orderedList)
+ result+=(((TestResource)r)._name);
if (!checkResult(result, outcomes))
fail ("No outcome matched "+result);
@@ -224,73 +453,96 @@ public class OrderingTest extends TestCase
public void testRelativeOrdering3 ()
throws Exception
{
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
//A: after others, before C
- Fragment f1 = new Fragment((Resource)null, processor);
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
- f1._hasOther=true;
- ((RelativeOrdering)processor._ordering).addAfterOthers(f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1, f1);
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(f1);
+ f1._otherType = FragmentDescriptor.OtherType.After;
f1._befores.add("C");
//B: before others, before C
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- f2._hasOther = true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2,f2);
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(f2);
+ f2._otherType = FragmentDescriptor.OtherType.Before;
f2._befores.add("C");
//C: no ordering
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
- ((RelativeOrdering)processor._ordering).addNoOthers(f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f3);
+ f3._otherType = FragmentDescriptor.OtherType.None;
//result: BAC
String[] outcomes = {"BAC"};
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
String result = "";
- for (Fragment f:orderedList)
- result+=(f._name);
+ for (Resource r:orderedList)
+ result+=(((TestResource)r)._name);
if (!checkResult(result, outcomes))
fail ("No outcome matched "+result);
}
-
-
+
public void testCircular1 ()
throws Exception
{
//A: after B
//B: after A
-
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
//A: after B
- Fragment f1 = new Fragment((Resource)null, processor);
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
- ((RelativeOrdering)processor._ordering).addNoOthers(f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1, f1);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f1);
+ f1._otherType = FragmentDescriptor.OtherType.None;
f1._afters.add("B");
//B: after A
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- ((RelativeOrdering)processor._ordering).addNoOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2, f2);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f2);
+ f2._otherType = FragmentDescriptor.OtherType.None;
f2._afters.add("A");
try
{
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
fail("No circularity detected");
}
catch (Exception e)
@@ -300,38 +552,58 @@ public class OrderingTest extends TestCase
}
+
+
public void testInvalid1 ()
throws Exception
{
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new RelativeOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
//A: after others, before C
- Fragment f1 = new Fragment((Resource)null, processor);
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
- f1._hasOther=true;
- ((RelativeOrdering)processor._ordering).addAfterOthers(f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1,f1);
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(r1);
+ f1._otherType = FragmentDescriptor.OtherType.After;
f1._befores.add("C");
//B: before others, after C
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
- f2._hasOther = true;
- ((RelativeOrdering)processor._ordering).addBeforeOthers(f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2,f2);
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(r2);
+ f2._otherType = FragmentDescriptor.OtherType.Before;
f2._afters.add("C");
//C: no ordering
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
- ((RelativeOrdering)processor._ordering).addNoOthers(f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(r3);
+ f3._otherType = FragmentDescriptor.OtherType.None;
try
{
- List<Fragment> orderedList = processor._ordering.order();
+ List<Resource> orderedList = metaData._ordering.order(resources);
+ String result = "";
+ for (Resource r:orderedList)
+ result +=((TestResource)r)._name;
+ System.err.println("Invalid Result = "+result);
fail("A and B have an impossible relationship to C");
}
catch (Exception e)
@@ -344,111 +616,316 @@ public class OrderingTest extends TestCase
public void testAbsoluteOrdering1 ()
throws Exception
{
- /*
- * A,B,C,others
- */
+ //
+ // A,B,C,others
+ //
+ List<Resource> resources = new ArrayList<Resource>();
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new AbsoluteOrdering();
- ((AbsoluteOrdering)processor._ordering).add("A");
- ((AbsoluteOrdering)processor._ordering).add("B");
- ((AbsoluteOrdering)processor._ordering).add("C");
- ((AbsoluteOrdering)processor._ordering).addOthers();
-
- Fragment f1 = new Fragment((Resource)null, processor);
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new AbsoluteOrdering();
+ ((AbsoluteOrdering)metaData._ordering).add("A");
+ ((AbsoluteOrdering)metaData._ordering).add("B");
+ ((AbsoluteOrdering)metaData._ordering).add("C");
+ ((AbsoluteOrdering)metaData._ordering).addOthers();
+
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1,f1);
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2, f2);
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3, f3);
- Fragment f4 = new Fragment((Resource)null, processor);
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor((Resource)null, metaData);
f4._name="D";
- processor._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4, f4);
- Fragment f5 = new Fragment((Resource)null, processor);
+ TestResource jar5 = new TestResource("E");
+ resources.add(jar5);
+ TestResource r5 = new TestResource("E/web-fragment.xml");
+ FragmentDescriptor f5 = new FragmentDescriptor((Resource)null, metaData);
f5._name="E";
- processor._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentResourceMap.put(jar5, f5);
- Fragment f6 = new Fragment((Resource)null, processor);
- f6._name=Fragment.NAMELESS+"1";
- processor._webFragmentNameMap.put(f6._name, f6);
+ TestResource jar6 = new TestResource("plain");
+ resources.add(jar6);
+ TestResource r6 = new TestResource ("plain/web-fragment.xml");
+ FragmentDescriptor f6 = new FragmentDescriptor((Resource)null, metaData);
+ f6._name=FragmentDescriptor.NAMELESS+"1";
+ metaData._webFragmentNameMap.put(f6._name, f6);
+ metaData._webFragmentResourceMap.put(jar6, f6);
- List<Fragment> list = processor._ordering.order();
+ List<Resource> list = metaData._ordering.order(resources);
- String[] outcomes = {"ABCDE"+f6._name};
+ String[] outcomes = {"ABCDEplain"};
String result = "";
- for (Fragment f:list)
- result += f._name;
+ for (Resource r:list)
+ result += ((TestResource)r)._name;
if (!checkResult(result, outcomes))
fail("No outcome matched "+result);
}
-
+
public void testAbsoluteOrdering2 ()
throws Exception
{
- // A,B,C
- WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new AbsoluteOrdering();
- ((AbsoluteOrdering)processor._ordering).add("A");
- ((AbsoluteOrdering)processor._ordering).add("B");
- ((AbsoluteOrdering)processor._ordering).add("C");
+ // C,B,A
+ List<Resource> resources = new ArrayList<Resource>();
- Fragment f1 = new Fragment((Resource)null, processor);
+ WebAppContext wac = new WebAppContext();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new AbsoluteOrdering();
+ ((AbsoluteOrdering)metaData._ordering).add("C");
+ ((AbsoluteOrdering)metaData._ordering).add("B");
+ ((AbsoluteOrdering)metaData._ordering).add("A");
+
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
f1._name = "A";
- processor._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1,f1);
- Fragment f2 = new Fragment((Resource)null, processor);
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
f2._name="B";
- processor._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2,f2);
- Fragment f3 = new Fragment((Resource)null, processor);
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
f3._name="C";
- processor._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
- Fragment f4 = new Fragment((Resource)null, processor);
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor(r4, metaData);
f4._name="D";
- processor._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4,f4);
- Fragment f5 = new Fragment((Resource)null, processor);
+ TestResource jar5 = new TestResource("E");
+ resources.add(jar5);
+ TestResource r5 = new TestResource("E/web-fragment.xml");
+ FragmentDescriptor f5 = new FragmentDescriptor(r5, metaData);
f5._name="E";
- processor._webFragmentNameMap.put(f5._name, f5);
-
- Fragment f6 = new Fragment((Resource)null, processor);
- f6._name=Fragment.NAMELESS+"1";
- processor._webFragmentNameMap.put(f6._name, f6);
-
- List<Fragment> list = processor._ordering.order();
- String[] outcomes = {"ABC"};
+ metaData._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentResourceMap.put(jar5,f5);
+
+ TestResource jar6 = new TestResource("plain");
+ resources.add(jar6);
+ TestResource r6 = new TestResource("plain/web-fragment.xml");
+ FragmentDescriptor f6 = new FragmentDescriptor(r6, metaData);
+ f6._name=FragmentDescriptor.NAMELESS+"1";
+ metaData._webFragmentNameMap.put(f6._name, f6);
+ metaData._webFragmentResourceMap.put(jar6,f6);
+
+ List<Resource> list = metaData._ordering.order(resources);
+ String[] outcomes = {"CBA"};
String result = "";
- for (Fragment f:list)
- result += f._name;
+ for (Resource r:list)
+ result += ((TestResource)r)._name;
+
if (!checkResult(result, outcomes))
fail("No outcome matched "+result);
}
-
+
public void testAbsoluteOrdering3 ()
throws Exception
{
//empty <absolute-ordering>
WebAppContext wac = new WebAppContext();
- WebXmlProcessor processor = new WebXmlProcessor(wac);
- processor._ordering = processor.new AbsoluteOrdering();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new AbsoluteOrdering();
+ List<Resource> resources = new ArrayList<Resource>();
+
+ resources.add(new TestResource("A"));
+ resources.add(new TestResource("B"));
- List<Fragment> list = processor._ordering.order();
+ List<Resource> list = metaData._ordering.order(resources);
assertTrue(list.isEmpty());
}
+
+ public void testRelativeOrderingWithPlainJars ()
+ throws Exception
+ {
+ //B,A,C other jars with no fragments
+ List<Resource> resources = new ArrayList<Resource>();
+ WebAppContext wac = new WebAppContext();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new RelativeOrdering();
+
+ //A: after others, before C
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
+ f1._name = "A";
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1, f1);
+ //((RelativeOrdering)metaData._ordering).addAfterOthers(f1);
+ f1._otherType = FragmentDescriptor.OtherType.After;
+ f1._befores.add("C");
+
+ //B: before others, before C
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
+ f2._name="B";
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2,f2);
+ //((RelativeOrdering)metaData._ordering).addBeforeOthers(f2);
+ f2._otherType = FragmentDescriptor.OtherType.Before;
+ f2._befores.add("C");
+
+ //C: after A
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
+ f3._name="C";
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3,f3);
+ //((RelativeOrdering)metaData._ordering).addNoOthers(f3);
+ f3._otherType = FragmentDescriptor.OtherType.None;
+ f3._afters.add("A");
+
+ //No fragment jar 1
+ TestResource r4 = new TestResource("plain1");
+ resources.add(r4);
+
+ //No fragment jar 2
+ TestResource r5 = new TestResource("plain2");
+ resources.add(r5);
+
+ //result: BAC
+ String[] outcomes = {"Bplain1plain2AC"};
+
+ List<Resource> orderedList = metaData._ordering.order(resources);
+ String result = "";
+ for (Resource r:orderedList)
+ result+=(((TestResource)r)._name);
+
+ if (!checkResult(result, outcomes))
+ fail ("No outcome matched "+result);
+ }
+
+ public void testAbsoluteOrderingWithPlainJars()
+ throws Exception
+ {
+ //
+ // A,B,C,others
+ //
+ List<Resource> resources = new ArrayList<Resource>();
+ WebAppContext wac = new WebAppContext();
+ MetaData metaData = new MetaData(wac);
+ metaData._ordering = metaData.new AbsoluteOrdering();
+ ((AbsoluteOrdering)metaData._ordering).add("A");
+ ((AbsoluteOrdering)metaData._ordering).add("B");
+ ((AbsoluteOrdering)metaData._ordering).add("C");
+ ((AbsoluteOrdering)metaData._ordering).addOthers();
+
+ TestResource jar1 = new TestResource("A");
+ resources.add(jar1);
+ TestResource r1 = new TestResource("A/web-fragment.xml");
+ FragmentDescriptor f1 = new FragmentDescriptor(r1, metaData);
+ f1._name = "A";
+ metaData._webFragmentNameMap.put(f1._name, f1);
+ metaData._webFragmentResourceMap.put(jar1,f1);
+
+ TestResource jar2 = new TestResource("B");
+ resources.add(jar2);
+ TestResource r2 = new TestResource("B/web-fragment.xml");
+ FragmentDescriptor f2 = new FragmentDescriptor(r2, metaData);
+ f2._name="B";
+ metaData._webFragmentNameMap.put(f2._name, f2);
+ metaData._webFragmentResourceMap.put(jar2, f2);
+
+ TestResource jar3 = new TestResource("C");
+ resources.add(jar3);
+ TestResource r3 = new TestResource("C/web-fragment.xml");
+ FragmentDescriptor f3 = new FragmentDescriptor(r3, metaData);
+ f3._name="C";
+ metaData._webFragmentNameMap.put(f3._name, f3);
+ metaData._webFragmentResourceMap.put(jar3, f3);
+
+ TestResource jar4 = new TestResource("D");
+ resources.add(jar4);
+ TestResource r4 = new TestResource("D/web-fragment.xml");
+ FragmentDescriptor f4 = new FragmentDescriptor((Resource)null, metaData);
+ f4._name="D";
+ metaData._webFragmentNameMap.put(f4._name, f4);
+ metaData._webFragmentResourceMap.put(jar4, f4);
+
+ TestResource jar5 = new TestResource("E");
+ resources.add(jar5);
+ TestResource r5 = new TestResource("E/web-fragment.xml");
+ FragmentDescriptor f5 = new FragmentDescriptor((Resource)null, metaData);
+ f5._name="E";
+ metaData._webFragmentNameMap.put(f5._name, f5);
+ metaData._webFragmentResourceMap.put(jar5, f5);
+
+ TestResource jar6 = new TestResource("plain");
+ resources.add(jar6);
+ TestResource r6 = new TestResource("plain/web-fragment.xml");
+ FragmentDescriptor f6 = new FragmentDescriptor((Resource)null, metaData);
+ f6._name=FragmentDescriptor.NAMELESS+"1";
+ metaData._webFragmentNameMap.put(f6._name, f6);
+ metaData._webFragmentResourceMap.put(jar6, f6);
+
+ //plain jar
+ TestResource r7 = new TestResource("plain1");
+ resources.add(r7);
+
+ TestResource r8 = new TestResource("plain2");
+ resources.add(r8);
+
+ List<Resource> list = metaData._ordering.order(resources);
+
+ String[] outcomes = {"ABCDEplainplain1plain2"};
+ String result = "";
+ for (Resource r:list)
+ result += ((TestResource)r)._name;
+
+ if (!checkResult(result, outcomes))
+ fail("No outcome matched "+result);
+ }
+
+
+
public boolean checkResult (String result, String[] outcomes)
{
boolean matched = false;

Back to the top