[jboss-cvs] jboss-cvs-commits Digest, Vol 40, Issue 622

Ales Justin ales.justin at gmail.com
Mon Oct 26 16:46:56 EDT 2009


I would pull this comparator out from BMDD, not to bloat it.
And instead of using synch code, we could use some existing Set to do 
this for us.

> ------------------------------
> 
> Message: 6
> Date: Mon, 26 Oct 2009 16:42:39 -0400
> From: jboss-cvs-commits at lists.jboss.org
> Subject: [jboss-cvs] JBossAS SVN: r95580 - in
> 	projects/jboss-deployers/trunk:
> 	deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support	
> 	and 2 other directories.
> To: jboss-cvs-commits at lists.jboss.org
> Message-ID:
> 	<200910262042.n9QKgdRE018603 at svn01.web.mwc.hst.phx2.redhat.com>
> Content-Type: text/plain; charset=UTF-8
> 
> Author: kabir.khan at jboss.com
> Date: 2009-10-26 16:42:38 -0400 (Mon, 26 Oct 2009)
> New Revision: 95580
> 
> Modified:
>    projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/KernelControllerContextCreator.java
>    projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java
>    projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopControllerContextCreator.java
>    projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialControllerContextCreator.java
>    projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/KernelControllerContextCreatorTestCase.java
> Log:
> [JBDEPLOY-219] Relative sort order of KernelControllerContextCreators
> 
> Modified: projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java
> ===================================================================
> --- projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java	2009-10-26 20:37:45 UTC (rev 95579)
> +++ projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java	2009-10-26 20:42:38 UTC (rev 95580)
> @@ -21,9 +21,12 @@
>  */
>  package org.jboss.deployers.vfs.deployer.kernel;
>  
> +import java.util.ArrayList;
>  import java.util.Collection;
> -import java.util.List;
> -import java.util.concurrent.CopyOnWriteArrayList;
> +import java.util.Collections;
> +import java.util.Comparator;
> +import java.util.concurrent.locks.ReadWriteLock;
> +import java.util.concurrent.locks.ReentrantReadWriteLock;
>  
>  import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
>  import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
> @@ -57,8 +60,10 @@
>     private Controller controller;
>     
>     /** List of controller context creators */
> -   private List<KernelControllerContextCreator> controllerContextCreators = new CopyOnWriteArrayList<KernelControllerContextCreator>();
> +   private ArrayList<KernelControllerContextCreator> controllerContextCreators = new ArrayList<KernelControllerContextCreator>();
>     
> +   private ReadWriteLock lock = new ReentrantReadWriteLock();
> +   
>     /** The default controller context creator */
>     
>     
> @@ -110,8 +115,31 @@
>      */
>     public void addControllerContextCreator(KernelControllerContextCreator creator)
>     {
> -      if (creator != null)
> +      if (creator == null)
> +         return;
> +      
> +      lock.writeLock().lock();
> +      try
> +      {
>           controllerContextCreators.add(creator);
> +         Collections.sort(controllerContextCreators, new Comparator<KernelControllerContextCreator>()
> +         {
> +
> +            public int compare(KernelControllerContextCreator o1, KernelControllerContextCreator o2)
> +            {
> +               if (o1.getRelativeOrder() < o2.getRelativeOrder())
> +                  return -1;
> +               if (o1.getRelativeOrder() > o2.getRelativeOrder())
> +                  return 1;
> +               
> +               return 0;
> +            }
> +         });
> +      }
> +      finally
> +      {
> +         lock.writeLock().unlock();
> +      }
>     }
>     
>     /**
> @@ -121,8 +149,18 @@
>      */
>     public void removeControllerContextCreator(KernelControllerContextCreator creator)
>     {
> -      if (creator != null)
> +      if (creator == null)
> +         return;
> +      
> +      lock.writeLock().lock();
> +      try
> +      {
>           controllerContextCreators.remove(creator);
> +      }
> +      finally
> +      {
> +         lock.writeLock().unlock();
> +      }
>     }
>     
>     @Override
> @@ -170,12 +208,20 @@
>     {
>        if (controllerContextCreators.size() > 0)
>        {
> -         for (KernelControllerContextCreator creator : controllerContextCreators)
> +         lock.readLock().lock();
> +         try
>           {
> -            KernelControllerContext context = creator.createContext(controller, unit, deployment);
> -            if (context != null)
> -               return context;
> +            for (KernelControllerContextCreator creator : controllerContextCreators)
> +            {
> +               KernelControllerContext context = creator.createContext(controller, unit, deployment);
> +               if (context != null)
> +                  return context;
> +            }
>           }
> +         finally
> +         {
> +            lock.readLock().unlock();
> +         }
>        }
>        return new AbstractKernelControllerContext(null, deployment, null);
>     }
> 
> Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopControllerContextCreator.java
> ===================================================================
> --- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopControllerContextCreator.java	2009-10-26 20:37:45 UTC (rev 95579)
> +++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopControllerContextCreator.java	2009-10-26 20:42:38 UTC (rev 95580)
> @@ -21,6 +21,9 @@
>  */ 
>  package org.jboss.test.deployers.vfs.deployer.bean.support;
>  
> +import java.util.ArrayList;
> +import java.util.List;
> +
>  import org.jboss.beans.metadata.spi.BeanMetaData;
>  import org.jboss.dependency.spi.Controller;
>  import org.jboss.deployers.structure.spi.DeploymentUnit;
> @@ -34,10 +37,17 @@
>   */
>  public class NoopControllerContextCreator implements KernelControllerContextCreator
>  {
> -   private boolean triggered;
> +   private static List<Integer> triggered = new ArrayList<Integer>();
>     
> -   public boolean isTriggered()
> +   private int order;
> +   
> +   public NoopControllerContextCreator(int order)
>     {
> +      this.order = order;
> +   }
> +   
> +   public static List<Integer> getTriggered()
> +   {
>        return triggered;
>     }
>     
> @@ -49,8 +59,12 @@
>           throw new IllegalArgumentException("Null unit");
>        if (beanMetaData == null)
>           throw new IllegalArgumentException("Null beanMetadata");
> -      triggered = true;
> +      triggered.add(order);
>        return null;
>     }
>  
> +   public int getRelativeOrder()
> +   {
> +      return order;
> +   }
>  }
> 
> Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialControllerContextCreator.java
> ===================================================================
> --- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialControllerContextCreator.java	2009-10-26 20:37:45 UTC (rev 95579)
> +++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialControllerContextCreator.java	2009-10-26 20:42:38 UTC (rev 95580)
> @@ -38,6 +38,13 @@
>  {
>     public static final String TRIGGER = "TriggerSpecialControllerContextCreator";
>        
> +   private int order;
> +   
> +   public SpecialControllerContextCreator(int order)
> +   {
> +      this.order = order;
> +   }
> +   
>     public KernelControllerContext createContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
>     {
>        if (unit.getAttachment(TRIGGER) != null)
> @@ -55,5 +62,10 @@
>        }
>        
>     }
> +
> +   public int getRelativeOrder()
> +   {
> +      return order;
> +   }
>  }
>  
> 
> Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/KernelControllerContextCreatorTestCase.java
> ===================================================================
> --- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/KernelControllerContextCreatorTestCase.java	2009-10-26 20:37:45 UTC (rev 95579)
> +++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/KernelControllerContextCreatorTestCase.java	2009-10-26 20:42:38 UTC (rev 95580)
> @@ -24,8 +24,6 @@
>  import junit.framework.Test;
>  import junit.framework.TestSuite;
>  
> -import org.jboss.beans.metadata.spi.BeanMetaData;
> -import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
>  import org.jboss.dependency.spi.ControllerContext;
>  import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
>  import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
> @@ -83,7 +81,8 @@
>  
>     public void testNoopControllerContextCreator() throws Throwable
>     {
> -      NoopControllerContextCreator noop = new NoopControllerContextCreator();
> +      NoopControllerContextCreator.getTriggered().clear();
> +      NoopControllerContextCreator noop = new NoopControllerContextCreator(1);
>        beanMetaDataDeployer.addControllerContextCreator(noop);
>        try
>        {
> @@ -91,7 +90,8 @@
>           VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
>           assertDeploy(context);
>           
> -         assertTrue(noop.isTriggered());
> +         assertEquals(1, NoopControllerContextCreator.getTriggered().size());
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(1));
>           
>           ControllerContext test = controller.getInstalledContext("Test");
>           assertNotNull(test);
> @@ -107,19 +107,21 @@
>  
>     public void testSpecialControllerContextCreatorNotTriggered() throws Throwable
>     {
> -      NoopControllerContextCreator noop1 = new NoopControllerContextCreator();
> +      NoopControllerContextCreator.getTriggered().clear();
> +      NoopControllerContextCreator noop1 = new NoopControllerContextCreator(1);
>        beanMetaDataDeployer.addControllerContextCreator(noop1);
> -      SpecialControllerContextCreator special = new SpecialControllerContextCreator();
> +      SpecialControllerContextCreator special = new SpecialControllerContextCreator(2);
>        beanMetaDataDeployer.addControllerContextCreator(special);
> -      NoopControllerContextCreator noop2 = new NoopControllerContextCreator();
> +      NoopControllerContextCreator noop2 = new NoopControllerContextCreator(3);
>        beanMetaDataDeployer.addControllerContextCreator(noop2);
>        try
>        {
>           VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
>           assertDeploy(context);
>           
> -         assertTrue(noop1.isTriggered());
> -         assertTrue(noop2.isTriggered());
> +         assertEquals(2, NoopControllerContextCreator.getTriggered().size());
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(1));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(3));
>           
>           ControllerContext test = controller.getInstalledContext("Test");
>           assertNotNull(test);
> @@ -137,21 +139,23 @@
>  
>     public void testSpecialControllerContextCreatorTriggered() throws Throwable
>     {
> +      NoopControllerContextCreator.getTriggered().clear();
>        addDeployer(main, new TriggerSpecialControllerContextDeployer());
>        
> -      NoopControllerContextCreator noop1 = new NoopControllerContextCreator();
> +      NoopControllerContextCreator noop1 = new NoopControllerContextCreator(1);
>        beanMetaDataDeployer.addControllerContextCreator(noop1);
> -      SpecialControllerContextCreator special = new SpecialControllerContextCreator();
> +      SpecialControllerContextCreator special = new SpecialControllerContextCreator(2);
>        beanMetaDataDeployer.addControllerContextCreator(special);
> -      NoopControllerContextCreator noop2 = new NoopControllerContextCreator();
> +      NoopControllerContextCreator noop2 = new NoopControllerContextCreator(3);
>        beanMetaDataDeployer.addControllerContextCreator(noop2);
>        try
>        {
>           VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
>           assertDeploy(context);
>           
> -         assertTrue(noop1.isTriggered());
> -         assertFalse(noop2.isTriggered());
> +         assertEquals(1, NoopControllerContextCreator.getTriggered().size());
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(1));
> +         assertFalse(NoopControllerContextCreator.getTriggered().contains(3));
>           
>           ControllerContext test = controller.getInstalledContext("Test");
>           assertNotNull(test);
> @@ -166,4 +170,57 @@
>           beanMetaDataDeployer.removeControllerContextCreator(noop2);
>        }
>     }
> +   
> +   public void testControllerContextOrder() throws Throwable
> +   {
> +      NoopControllerContextCreator.getTriggered().clear();
> +      NoopControllerContextCreator noop6 = new NoopControllerContextCreator(6);
> +      beanMetaDataDeployer.addControllerContextCreator(noop6);
> +      NoopControllerContextCreator noop1 = new NoopControllerContextCreator(1);
> +      beanMetaDataDeployer.addControllerContextCreator(noop1);
> +      NoopControllerContextCreator noop3 = new NoopControllerContextCreator(3);
> +      beanMetaDataDeployer.addControllerContextCreator(noop3);
> +      NoopControllerContextCreator noop4 = new NoopControllerContextCreator(4);
> +      beanMetaDataDeployer.addControllerContextCreator(noop4);
> +      NoopControllerContextCreator noop2 = new NoopControllerContextCreator(2);
> +      beanMetaDataDeployer.addControllerContextCreator(noop2);
> +      NoopControllerContextCreator noop5 = new NoopControllerContextCreator(5);
> +      beanMetaDataDeployer.addControllerContextCreator(noop5);
> +      try
> +      {
> +         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
> +         assertDeploy(context);
> +         
> +         assertEquals(6, NoopControllerContextCreator.getTriggered().size());
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(1));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(2));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(3));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(4));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(5));
> +         assertTrue(NoopControllerContextCreator.getTriggered().contains(6));
> +         
> +         int last = 0;
> +         for (int i : NoopControllerContextCreator.getTriggered())
> +         {
> +            assertTrue(last + 1 == i);
> +            last = i;
> +         }
> +         
> +         ControllerContext test = controller.getInstalledContext("Test");
> +         assertNotNull(test);
> +         assertEquals(AbstractKernelControllerContext.class, test.getClass());
> +         assertUndeploy(context);
> +         assertNull(controller.getContext("Test", null));
> +      }
> +      finally
> +      {
> +         beanMetaDataDeployer.removeControllerContextCreator(noop1);
> +         beanMetaDataDeployer.removeControllerContextCreator(noop2);
> +         beanMetaDataDeployer.removeControllerContextCreator(noop3);
> +         beanMetaDataDeployer.removeControllerContextCreator(noop4);
> +         beanMetaDataDeployer.removeControllerContextCreator(noop5);
> +         beanMetaDataDeployer.removeControllerContextCreator(noop6);
> +      }
> +      
> +   }
>  }
> 
> Modified: projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/KernelControllerContextCreator.java
> ===================================================================
> --- projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/KernelControllerContextCreator.java	2009-10-26 20:37:45 UTC (rev 95579)
> +++ projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/KernelControllerContextCreator.java	2009-10-26 20:42:38 UTC (rev 95580)
> @@ -36,6 +36,13 @@
>  public interface KernelControllerContextCreator
>  {
>     /**
> +    * The relative order of this creator. BeanMetaDataDeployer will try to 
> +    * create contexts with values first.
> +    * @return The relative order
> +    */
> +   int getRelativeOrder();
> +   
> +   /**
>      * Create a controller context
>      * @param controller The controller to which the beans will be deployed
>      * @param unit The deployment unit we are deploying
> 
> 
> 
> ------------------------------
> 
> _______________________________________________
> jboss-cvs-commits mailing list
> jboss-cvs-commits at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-cvs-commits
> 
> 
> End of jboss-cvs-commits Digest, Vol 40, Issue 622
> **************************************************
> 



More information about the jboss-cvs-commits mailing list