[jboss-cvs] JBossAS SVN: r90627 - in projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src: test/java/org/jboss/test/deployers/deployer/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jun 26 07:29:01 EDT 2009
Author: alesj
Date: 2009-06-26 07:29:00 -0400 (Fri, 26 Jun 2009)
New Revision: 90627
Modified:
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
Log:
Port JBDEPLOY-201.
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java 2009-06-26 10:33:01 UTC (rev 90626)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java 2009-06-26 11:29:00 UTC (rev 90627)
@@ -76,14 +76,30 @@
if (fstXsnd && sndXfst)
{
// pass-through deployers
- if (one.getHead().match(twoHead) && oneTail.match(twoTail))
- relation = COMPARATOR.compare(one, two);
+ if (oneHead.match(twoHead) && oneTail.match(twoTail))
+ {
+ // lets try do do more exact match
+ // although we should aviod singe dimension checks
+ // which are already part of match() check
+ // in order not to break comparator comparison
+ if (twoHead.dimension() > 1 && oneTail.dimension() >= twoHead.dimension() && oneTail.contains(twoHead))
+ relation = -1;
+ else if (oneHead.dimension() > 1 && twoTail.dimension() >= oneHead.dimension() && twoTail.contains(oneHead))
+ relation = 1;
+ else
+ relation = COMPARATOR.compare(one, two);
+ }
else
+ {
// short circut cycle - throw exception immediately
throwCycleException(cause);
+ }
}
else
+ {
relation = fstXsnd ? -1 : (sndXfst ? 1 : 0);
+ }
+
if (relation == 0)
{
// lazy compare on those who don't have order set
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java 2009-06-26 10:33:01 UTC (rev 90626)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java 2009-06-26 11:29:00 UTC (rev 90627)
@@ -43,4 +43,22 @@
* @return true if these dots match param dots
*/
boolean match(Dots<T> dots);
+
+ /**
+ * Do this dots contain the param dots.
+ * In most cases this should be te same as a match.
+ *
+ * @param dots the dots
+ * @return true if these dots contain param dots
+ */
+ boolean contains(Dots<T> dots);
+
+ /**
+ * The dimension of different dots.
+ * For strict domino dots this would be one,
+ * in our string set case this is the size of the set.
+ *
+ * @return the dimension of dots
+ */
+ int dimension();
}
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java 2009-06-26 10:33:01 UTC (rev 90626)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java 2009-06-26 11:29:00 UTC (rev 90627)
@@ -22,6 +22,7 @@
package org.jboss.deployers.plugins.sort;
import java.util.Set;
+import java.util.HashSet;
/**
* Domino dots as a set of values.
@@ -60,6 +61,18 @@
return false;
}
+ public boolean contains(Dots<Set<V>> containable)
+ {
+ Set<V> otherSet = containable.getValue();
+ Set<V> copy = new HashSet<V>(otherSet);
+ return copy.retainAll(set) == false;
+ }
+
+ public int dimension()
+ {
+ return set.size();
+ }
+
@Override
public String toString()
{
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java 2009-06-26 10:33:01 UTC (rev 90626)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java 2009-06-26 11:29:00 UTC (rev 90627)
@@ -842,4 +842,189 @@
postWMD.setOutputs("JBWMD");
addDeployer(main, postWMD);
}
+
+ public void testWebServicesDeployersOrder() throws Exception
+ {
+ DeployerClient main = createMainDeployer();
+
+ TestFlowDeployer deployer1 = new TestFlowDeployer("FakeDeployer");
+ deployer1.setOutputs("WebServicesMetaData", "WebServiceDeployment", "JBossWebMetaData" );
+ addDeployer(main, deployer1);
+
+ TestFlowDeployer deployer2 = new TestFlowDeployer("WebServicesDeploymentTypeDeployer");
+ deployer2.setInputs("WebServicesMetaData", "WebServiceDeployment", "JBossWebMetaData" );
+ deployer2.setOutputs("DeploymentType", "JBossWebMetaData");
+ addDeployer(main, deployer2);
+
+ TestFlowDeployer deployer4 = new TestFlowDeployer("WebServiceDeployerPreJSE");
+ deployer4.setInputs("JBossWebMetaData", "DeploymentType");
+ deployer4.setOutputs("JBossWebMetaData");
+ addDeployer(main, deployer4);
+
+ TestFlowDeployer deployer5 = new TestFlowDeployer("AbstractWarDeployer");
+ deployer5.setInputs("JBossWebMetaData");
+ deployer5.setOutputs("WarDeployment");
+ addDeployer(main, deployer5);
+
+ TestFlowDeployer deployer6 = new TestFlowDeployer("ServiceCL");
+ deployer6.setInputs("DeploymentType", "WarDeployment");
+ addDeployer(main, deployer6);
+
+ // #2 duplicate
+ TestFlowDeployer deployer3 = new TestFlowDeployer("WebServicesDeploymentTypeDeployer2");
+ deployer3.setInputs("WebServicesMetaData", "WebServiceDeployment", "JBossWebMetaData" );
+ deployer3.setOutputs("DeploymentType", "JBossWebMetaData");
+ addDeployer(main, deployer3);
+
+ // #4 duplicate
+ TestFlowDeployer deployer7 = new TestFlowDeployer("WebServiceDeployerEJB");
+ deployer7.setInputs("JBossWebMetaData", "DeploymentType");
+ deployer7.setOutputs("JBossWebMetaData");
+ addDeployer(main, deployer7);
+
+ Deployment deployment = createSimpleDeployment("testWSDeploymentOrder");
+ main.addDeployment(deployment);
+ main.process();
+
+ assertEquals(1, deployer1.getDeployOrder());
+ assertEquals(2, deployer2.getDeployOrder());
+ assertEquals(3, deployer3.getDeployOrder());
+ assertEquals(4, deployer7.getDeployOrder());
+ assertEquals(5, deployer4.getDeployOrder());
+ assertEquals(6, deployer5.getDeployOrder());
+ assertEquals(7, deployer6.getDeployOrder());
+ assertEquals(-1, deployer1.getUndeployOrder());
+ assertEquals(-1, deployer2.getUndeployOrder());
+ assertEquals(-1, deployer3.getUndeployOrder());
+ assertEquals(-1, deployer4.getUndeployOrder());
+ assertEquals(-1, deployer5.getUndeployOrder());
+ assertEquals(-1, deployer6.getUndeployOrder());
+
+ main.removeDeployment(deployment);
+ main.process();
+
+ assertEquals(1, deployer1.getDeployOrder());
+ assertEquals(2, deployer2.getDeployOrder());
+ assertEquals(3, deployer3.getDeployOrder());
+ assertEquals(4, deployer7.getDeployOrder());
+ assertEquals(5, deployer4.getDeployOrder());
+ assertEquals(6, deployer5.getDeployOrder());
+ assertEquals(7, deployer6.getDeployOrder());
+ assertEquals(14, deployer1.getUndeployOrder());
+ assertEquals(13, deployer2.getUndeployOrder());
+ assertEquals(12, deployer3.getUndeployOrder());
+ assertEquals(11, deployer7.getUndeployOrder());
+ assertEquals(10, deployer4.getUndeployOrder());
+ assertEquals(9, deployer5.getUndeployOrder());
+ assertEquals(8, deployer6.getUndeployOrder());
+
+ main.addDeployment(deployment);
+ main.process();
+
+ assertEquals(15, deployer1.getDeployOrder());
+ assertEquals(16, deployer2.getDeployOrder());
+ assertEquals(17, deployer3.getDeployOrder());
+ assertEquals(18, deployer7.getDeployOrder());
+ assertEquals(19, deployer4.getDeployOrder());
+ assertEquals(20, deployer5.getDeployOrder());
+ assertEquals(21, deployer6.getDeployOrder());
+ assertEquals(14, deployer1.getUndeployOrder());
+ assertEquals(13, deployer2.getUndeployOrder());
+ assertEquals(12, deployer3.getUndeployOrder());
+ assertEquals(11, deployer7.getUndeployOrder());
+ assertEquals(10, deployer4.getUndeployOrder());
+ assertEquals(9, deployer5.getUndeployOrder());
+ assertEquals(8, deployer6.getUndeployOrder());
+
+ main.removeDeployment(deployment);
+ main.process();
+ }
+
+ public void anotherDeployersOrderTest() throws Exception
+ {
+ DeployerClient main = createMainDeployer();
+
+ TestFlowDeployer deployer6 = new TestFlowDeployer( "6" );
+ deployer6.setInputs( "a11", "a12", "a13", "a14", "a33" );
+ addDeployer(main, deployer6);
+
+ TestFlowDeployer deployer5 = new TestFlowDeployer( "5" );
+ deployer5.setInputs( "a21", "a33", "a41" );
+ deployer5.setOutputs( "a33", "a51", "a52" );
+ addDeployer(main, deployer5);
+
+ TestFlowDeployer deployer4 = new TestFlowDeployer( "4" );
+ deployer4.setInputs( "a14", "a33" );
+ deployer4.setOutputs( "a14", "a33", "a41" );
+ addDeployer( main, deployer4 );
+
+ TestFlowDeployer deployer3 = new TestFlowDeployer( "3" );
+ deployer3.setInputs( "a13", "a21" );
+ deployer3.setOutputs( "a32", "a33" );
+ addDeployer( main, deployer3 );
+
+ TestFlowDeployer deployer2 = new TestFlowDeployer( "2" );
+ deployer2.setInputs( "a11", "a12" );
+ deployer2.setOutputs( "a12", "a21", "a22" );
+ addDeployer( main, deployer2 );
+
+ TestFlowDeployer deployer1 = new TestFlowDeployer( "1" );
+ deployer1.setOutputs( "a11", "a12", "a13", "a14" );
+ addDeployer( main, deployer1 );
+
+ Deployment deployment = createSimpleDeployment( "deployersOrderTest" );
+ main.addDeployment(deployment);
+ main.process();
+
+ assertEquals(1, deployer1.getDeployOrder());
+ assertEquals(2, deployer2.getDeployOrder());
+ assertEquals(3, deployer3.getDeployOrder());
+ assertEquals(4, deployer4.getDeployOrder());
+ assertEquals(5, deployer5.getDeployOrder());
+ assertEquals(6, deployer6.getDeployOrder());
+ assertEquals(-1, deployer1.getUndeployOrder());
+ assertEquals(-1, deployer2.getUndeployOrder());
+ assertEquals(-1, deployer3.getUndeployOrder());
+ assertEquals(-1, deployer4.getUndeployOrder());
+ assertEquals(-1, deployer5.getUndeployOrder());
+ assertEquals(-1, deployer6.getUndeployOrder());
+
+ main.removeDeployment(deployment);
+ main.process();
+
+ assertEquals(1, deployer1.getDeployOrder());
+ assertEquals(2, deployer2.getDeployOrder());
+ assertEquals(3, deployer3.getDeployOrder());
+ assertEquals(4, deployer4.getDeployOrder());
+ assertEquals(5, deployer5.getDeployOrder());
+ assertEquals(6, deployer6.getDeployOrder());
+ assertEquals(12, deployer1.getUndeployOrder());
+ assertEquals(11, deployer2.getUndeployOrder());
+ assertEquals(10, deployer3.getUndeployOrder());
+ assertEquals(9, deployer4.getUndeployOrder());
+ assertEquals(8, deployer4.getUndeployOrder());
+ assertEquals(7, deployer5.getUndeployOrder());
+ assertEquals(6, deployer6.getUndeployOrder());
+
+ main.addDeployment(deployment);
+ main.process();
+
+ assertEquals(13, deployer1.getDeployOrder());
+ assertEquals(14, deployer2.getDeployOrder());
+ assertEquals(15, deployer3.getDeployOrder());
+ assertEquals(16, deployer4.getDeployOrder());
+ assertEquals(17, deployer5.getDeployOrder());
+ assertEquals(18, deployer6.getDeployOrder());
+ assertEquals(12, deployer1.getUndeployOrder());
+ assertEquals(11, deployer2.getUndeployOrder());
+ assertEquals(10, deployer3.getUndeployOrder());
+ assertEquals(9, deployer4.getUndeployOrder());
+ assertEquals(8, deployer4.getUndeployOrder());
+ assertEquals(7, deployer5.getUndeployOrder());
+ assertEquals(6, deployer6.getUndeployOrder());
+
+ main.removeDeployment(deployment);
+ main.process();
+ }
+
}
More information about the jboss-cvs-commits
mailing list