[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