[jboss-cvs] JBossAS SVN: r62723 - in projects/microcontainer/trunk/classloader/src: tests/org/jboss/test/classloader/system/support and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 2 07:30:08 EDT 2007


Author: adrian at jboss.org
Date: 2007-05-02 07:30:08 -0400 (Wed, 02 May 2007)
New Revision: 62723

Modified:
   projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderDomain.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderSystem.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java
   projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java
Log:
[JBOSGI-21] - Some more tests and a fix to stop people unregistering the default domain.

Modified: projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java	2007-05-02 11:08:46 UTC (rev 62722)
+++ projects/microcontainer/trunk/classloader/src/main/org/jboss/classloader/spi/ClassLoaderSystem.java	2007-05-02 11:30:08 UTC (rev 62723)
@@ -230,11 +230,17 @@
       
       String name = domain.getName();
       if (isRegistered(name))
-         throw new IllegalStateException("A domain is already registered with " + name);
+         throw new IllegalStateException("A domain is already registered with name " + name);
       
       internalRegisterDomain(name, domain);
    }
 
+   /**
+    * Do the registration
+    * 
+    * @param name the name
+    * @param domain the domain
+    */
    private void internalRegisterDomain(String name, ClassLoaderDomain domain)
    {
       if (shutdown)
@@ -250,13 +256,16 @@
     * Unregister a domain
     * 
     * @param domain the domain
-    * @throws IllegalArgumentException for a null domain
+    * @throws IllegalArgumentException for a null domain or if you attempt to unregister the default domain
     * @throws IllegalStateException if a domain is not registered
     */
    public synchronized void unregisterDomain(ClassLoaderDomain domain)
    {
       if (isDomainRegistered(domain) == false)
          throw new IllegalStateException("Domain is not registered " + domain);
+
+      if (ClassLoaderSystem.DEFAULT_DOMAIN_NAME.equals(domain.getName()))
+         throw new IllegalArgumentException("Cannot unregister the default domain");
       
       registeredDomains.remove(domain.getName());
       super.unregisterDomain(domain);

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderDomain.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderDomain.java	2007-05-02 11:08:46 UTC (rev 62722)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderDomain.java	2007-05-02 11:30:08 UTC (rev 62723)
@@ -43,6 +43,11 @@
       super("mock");
    }
    
+   public MockClassLoaderDomain(String name)
+   {
+      super(name);
+   }
+   
    protected void afterRegisterClassLoader(ClassLoader classLoader, ClassLoaderPolicy policy)
    {
       added.add(classLoader);

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderSystem.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderSystem.java	2007-05-02 11:08:46 UTC (rev 62722)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/support/MockClassLoaderSystem.java	2007-05-02 11:30:08 UTC (rev 62723)
@@ -35,7 +35,7 @@
    @Override
    protected ClassLoaderDomain createDomain(String name)
    {
-      return new MockClassLoaderDomain();
+      return new MockClassLoaderDomain(name);
    }
 
    public MockClassLoaderDomain createAndRegisterDomain(String name)

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java	2007-05-02 11:08:46 UTC (rev 62722)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemNoSecurityUnitTestCase.java	2007-05-02 11:30:08 UTC (rev 62723)
@@ -48,5 +48,8 @@
    {
       ClassLoaderSystem instance = ClassLoaderSystem.getInstance();
       assertNotNull(instance);
+      
+      ClassLoaderSystem instance2 = ClassLoaderSystem.getInstance();
+      assertTrue("Should be the same instance", instance == instance2);
    }
 }

Modified: projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java	2007-05-02 11:08:46 UTC (rev 62722)
+++ projects/microcontainer/trunk/classloader/src/tests/org/jboss/test/classloader/system/test/ClassLoadingSystemUnitTestCase.java	2007-05-02 11:30:08 UTC (rev 62723)
@@ -21,6 +21,7 @@
  */
 package org.jboss.test.classloader.system.test;
 
+import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -50,15 +51,220 @@
       super(name);
    }
    
+   public void testGetInstance() throws Exception
+   {
+      try
+      {
+         ClassLoaderSystem.getInstance();
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(AccessControlException.class, e);
+      }
+   }
+
    public void testDefaultDomain() throws Exception
    {
-      ClassLoaderDomain domain = createClassLoaderSystem().getDefaultDomain();
+      ClassLoaderSystem system = createClassLoaderSystem();
+      assertTrue(system.isRegistered(ClassLoaderSystem.DEFAULT_DOMAIN_NAME));
+      ClassLoaderDomain domain = system.getDefaultDomain();
       assertNotNull(domain);
       assertEquals(ClassLoaderSystem.DEFAULT_DOMAIN_NAME, domain.getName());
+      assertTrue(system.isRegistered(ClassLoaderSystem.DEFAULT_DOMAIN_NAME));
+      assertTrue(system.isDomainRegistered(domain));
    }
    
-   public void testRegisterExplicitDomain() throws Exception
+   public void testRegisterDomain() throws Exception
    {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      assertFalse(system.isRegistered("mock"));
+      MockClassLoaderDomain domain = new MockClassLoaderDomain("mock");
+      assertFalse(system.isDomainRegistered(domain));
+      
+      system.registerDomain(domain);
+      assertTrue(system.isRegistered("mock"));
+      assertTrue(system.isDomainRegistered(domain));
+   }
+   
+   public void testRegisterDomains() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      assertFalse(system.isRegistered("a"));
+      MockClassLoaderDomain a = new MockClassLoaderDomain("a");
+      assertFalse(system.isDomainRegistered(a));
+
+      assertFalse(system.isRegistered("b"));
+      MockClassLoaderDomain b = new MockClassLoaderDomain("b");
+      assertFalse(system.isDomainRegistered(a));
+      
+      system.registerDomain(a);
+      system.registerDomain(b);
+      
+      assertTrue(system.isRegistered("a"));
+      assertTrue(system.isDomainRegistered(a));
+      assertTrue(system.isRegistered("b"));
+      assertTrue(system.isDomainRegistered(b));
+   }
+   
+   public void testRegisterNullDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+      
+      try
+      {
+         system.registerDomain(null);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalArgumentException.class, e);
+      }
+   }
+   
+   public void testRegisterDefaultDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      MockClassLoaderDomain domain = new MockClassLoaderDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+      try
+      {
+         system.registerDomain(domain);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalStateException.class, e);
+      }
+   }
+   
+   public void testRegisterDuplicateDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      assertFalse(system.isRegistered("a"));
+      MockClassLoaderDomain a = new MockClassLoaderDomain("a");
+      assertFalse(system.isDomainRegistered(a));
+      
+      system.registerDomain(a);
+      
+      assertTrue(system.isRegistered("a"));
+      assertTrue(system.isDomainRegistered(a));
+      
+      try
+      {
+         system.registerDomain(a);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalStateException.class, e);
+      }
+   }
+   
+   public void testRegisterDuplicateDomainName() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      assertFalse(system.isRegistered("a"));
+      MockClassLoaderDomain a = new MockClassLoaderDomain("a");
+      assertFalse(system.isDomainRegistered(a));
+
+      MockClassLoaderDomain b = new MockClassLoaderDomain("a");
+      
+      system.registerDomain(a);
+      
+      assertTrue(system.isRegistered("a"));
+      assertTrue(system.isDomainRegistered(a));
+      
+      try
+      {
+         system.registerDomain(b);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalStateException.class, e);
+      }
+   }
+   
+   public void testUnregisterDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      MockClassLoaderDomain domain = new MockClassLoaderDomain("mock");
+      
+      system.registerDomain(domain);
+      assertTrue(system.isRegistered("mock"));
+      assertTrue(system.isDomainRegistered(domain));
+      
+      system.unregisterDomain(domain);
+      assertFalse(system.isRegistered("mock"));
+      assertFalse(system.isDomainRegistered(domain));
+   }
+   
+   public void testUnregisterWrongDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+
+      MockClassLoaderDomain domain = new MockClassLoaderDomain("mock");
+      
+      system.registerDomain(domain);
+      assertTrue(system.isRegistered("mock"));
+      assertTrue(system.isDomainRegistered(domain));
+
+      MockClassLoaderDomain notDomain = new MockClassLoaderDomain("mock");
+      
+      try
+      {
+         system.unregisterDomain(notDomain);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalStateException.class, e);
+      }
+      assertTrue(system.isRegistered("mock"));
+      assertTrue(system.isDomainRegistered(domain));
+   }
+   
+   public void testUnregisterDefaultDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+      
+      ClassLoaderDomain domain = system.getDefaultDomain();
+      try
+      {
+         system.unregisterDomain(domain);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalArgumentException.class, e);
+      }
+      assertTrue(system.isRegistered(ClassLoaderSystem.DEFAULT_DOMAIN_NAME));
+      assertTrue(system.isDomainRegistered(domain));
+   }
+   
+   public void testUnregisterNullDomain() throws Exception
+   {
+      ClassLoaderSystem system = createClassLoaderSystem();
+      
+      try
+      {
+         system.unregisterDomain(null);
+         fail("Should not be here!");
+      }
+      catch (Exception e)
+      {
+         checkThrowable(IllegalArgumentException.class, e);
+      }
+   }
+   
+   public void testRegisterClassLoaderExplicitDomain() throws Exception
+   {
       MockClassLoaderSystem system = createMockClassLoaderSystem();
       MockClassLoaderDomain domain = system.createAndRegisterDomain("mock");
       ClassLoader cl1 = createAndRegisterMockClassLoader(system, domain);
@@ -76,7 +282,7 @@
       assertEmpty(domain.removed);
    }
    
-   public void testUnregisterExplicitDomain() throws Exception
+   public void testUnregisterClassLoaderExplicitDomain() throws Exception
    {
       MockClassLoaderSystem system = createMockClassLoaderSystem();
       MockClassLoaderDomain domain = system.createAndRegisterDomain("mock");




More information about the jboss-cvs-commits mailing list