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

Kabir Khan kabir.khan at jboss.com
Mon Oct 26 17:34:32 EDT 2009


On 26 Oct 2009, at 20:46, Ales Justin wrote:

> I would pull this comparator out from BMDD, not to bloat it.

ok

> And instead of using synch code, we could use some existing Set to  
> do this for us.

Which are you thinking of? I can't see anything sorted in  
java.util.concurrent, which is why I went for locking myself

>
>> ------------------------------
>> 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