[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