[jboss-cvs] JBossAS SVN: r63424 - in projects/microcontainer/trunk: kernel/src/main/org/jboss/kernel/plugins/dependency and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jun 8 09:56:40 EDT 2007


Author: alesj
Date: 2007-06-08 09:56:40 -0400 (Fri, 08 Jun 2007)
New Revision: 63424

Added:
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestDelegate.java
Modified:
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/test/kernel/junit/MicrocontainerTestDelegate.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java
   projects/microcontainer/trunk/spring-int/src/tests/org/jboss/test/spring/test/LazyTempSpringMicrocontainerTestDelegate.java
Log:
Added parent Controller to AbstractController.
Used when removing context's name with uninstall - unregisterControllerContext - using parent chain.

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -57,22 +57,25 @@
    private boolean shutdown = false;
    
    /** The states in order List<ControllerState> */
-   private List<ControllerState> states = new CopyOnWriteArrayList<ControllerState>();;
+   private List<ControllerState> states = new CopyOnWriteArrayList<ControllerState>();
 
    /** All contexts by name Map<Object, ControllerContext> */
    private Map<Object, ControllerContext> allContexts = new ConcurrentHashMap<Object, ControllerContext>();
 
    /** The contexts by state Map<ControllerState, Set<ControllerContext>> */
-   private Map<ControllerState, Set<ControllerContext>> contextsByState = new ConcurrentHashMap<ControllerState, Set<ControllerContext>>();;
+   private Map<ControllerState, Set<ControllerContext>> contextsByState = new ConcurrentHashMap<ControllerState, Set<ControllerContext>>();
 
    /** The error contexts Map<Name, ControllerContext> */
-   private Map<Object, ControllerContext> errorContexts = new ConcurrentHashMap<Object, ControllerContext>();;
+   private Map<Object, ControllerContext> errorContexts = new ConcurrentHashMap<Object, ControllerContext>();
 
    /** The contexts that are currently being installed */
-   private Set<ControllerContext> installing = new CopyOnWriteArraySet<ControllerContext>();;
+   private Set<ControllerContext> installing = new CopyOnWriteArraySet<ControllerContext>();
 
+   /** The parent controller */
+   private AbstractController parentController;
+
    /** The child controllers */
-   private Set<AbstractController> childControllers = new CopyOnWriteArraySet<AbstractController>();;
+   private Set<AbstractController> childControllers = new CopyOnWriteArraySet<AbstractController>();
 
    /** The callback items */
    private Map<Object, Set<CallbackItem>> installCallbacks = new ConcurrentHashMap<Object, Set<CallbackItem>>();
@@ -218,6 +221,16 @@
       unregisterControllerContext(context);
    }
 
+   protected AbstractController getParentController()
+   {
+      return parentController;
+   }
+
+   protected void setParentController(AbstractController parentController)
+   {
+      this.parentController = parentController;
+   }
+
    public Set<AbstractController> getControllers()
    {
       return childControllers;
@@ -406,10 +419,25 @@
             {
                log.warn("Error unregistering context: " + context.toShortString() + " with name: " + name);
             }
+
+            AbstractController parent = getParentController();
+            while (parent != null)
+            {
+               try
+               {
+                  parent.unregisterControllerContext(context);
+               }
+               catch (Throwable t)
+               {
+                  log.warn("Error unregistering context in parent controller: " + context.toShortString() + " with name: " + name);
+               }
+               parent = parent.getParentController();
+            }
+
          }
          else
          {
-            for (AbstractController controller : childControllers)
+            for (AbstractController controller : getControllers())
             {
                context = controller.uninstall(name, level + 1);
                if (context != null)

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/ScopedKernelController.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -53,7 +53,6 @@
 {
    protected Kernel parentKernel;
    protected AbstractController underlyingController;
-   protected AbstractController parentController;
 
    public ScopedKernelController(Kernel parentKernel, AbstractController parentController) throws Exception
    {
@@ -62,22 +61,22 @@
       if (parentKernel.getController() instanceof AbstractController == false)
          throw new IllegalArgumentException("Underlying controller not AbstractController instance!");
       this.underlyingController = (AbstractController)parentKernel.getController();
-      this.parentController = parentController;
+      setParentController(parentController);
       KernelConfig config = new ScopedKernelConfig(System.getProperties());
       kernel = KernelFactory.newInstance(config);
-      this.parentController.addController(this);
+      getParentController().addController(this);
    }
 
    private boolean isParentKernelController()
    {
-      return (parentController instanceof KernelController);
+      return (getParentController() instanceof KernelController);
    }
 
    private KernelController getParentKernelController()
    {
       if (isParentKernelController() == false)
          throw new IllegalArgumentException("Illegal call to parent Controller, not of KernelController instance!");
-      return (KernelController)parentController;
+      return (KernelController)getParentController();
    }
 
    // Scoped helper methods 
@@ -103,9 +102,9 @@
 
    public void release()
    {
-      parentController.removeController(this);
+      getParentController().removeController(this);
       underlyingController = null;
-      parentController = null;
+      setParentController(null);
       parentKernel = null;
    }
 
@@ -118,12 +117,12 @@
       {
          return context;
       }
-      return parentController.getContext(name, state);
+      return getParentController().getContext(name, state);
    }
 
    public Set<ControllerContext> getNotInstalled()
    {
-      Set<ControllerContext> uninstalled = new HashSet<ControllerContext>(parentController.getNotInstalled());
+      Set<ControllerContext> uninstalled = new HashSet<ControllerContext>(getParentController().getNotInstalled());
       uninstalled.addAll(super.getNotInstalled());
       return uninstalled;
    }
@@ -232,9 +231,9 @@
       KernelRegistryEntry entry = super.getEntry(name);
       if (entry != null)
          return entry;
-      if (parentController instanceof KernelRegistryPlugin)
+      if (getParentController() instanceof KernelRegistryPlugin)
       {
-         return ((KernelRegistryPlugin)parentController).getEntry(name);
+         return ((KernelRegistryPlugin)getParentController()).getEntry(name);
       }
       return null;
    }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/test/kernel/junit/MicrocontainerTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/test/kernel/junit/MicrocontainerTestDelegate.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/test/kernel/junit/MicrocontainerTestDelegate.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -167,7 +167,7 @@
     * @return the context
     * @throws IllegalStateException when the context does not exist at that state
     */
-   protected KernelControllerContext handleNotFoundContext(KernelController controller, Object name, ControllerState state)
+   protected KernelControllerContext handleNotFoundContext(Controller controller, Object name, ControllerState state)
    {
       throw new IllegalStateException("Bean not found " + name + " at state " + state);
    }

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestCase.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestCase.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -22,6 +22,10 @@
 package org.jboss.test.kernel.deployment.test;
 
 import junit.framework.Test;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.kernel.deployment.support.SimpleBean;
+import org.jboss.test.kernel.deployment.support.SimpleObjectWithBean;
+import org.jboss.test.kernel.junit.MicrocontainerShutdownTestDelegate;
 
 /**
  * Scoping shutdown tests.
@@ -41,12 +45,24 @@
       return suite(ScopingShutdownTestCase.class);
    }
 
+   /**
+    * Default setup with security manager enabled.
+    *
+    * @param clazz the class
+    * @return the delegate
+    * @throws Exception for any error
+    */
+   public static AbstractTestDelegate getDelegate(Class clazz) throws Exception
+   {
+      AbstractTestDelegate delegate = new ScopingShutdownTestDelegate(clazz);
+      delegate.enableSecurity = true;
+      return delegate;
+   }
+
    // ---- tests
 
-   // TODO - enable test
    public void testScopingShutdown() throws Throwable
    {
-/*
       ClassLoader cl = (ClassLoader) getBean("cl");
       assertNotNull(cl);
 
@@ -79,13 +95,12 @@
 
       ((MicrocontainerShutdownTestDelegate)getMCDelegate()).shutdown();
 
-      assertNull(getBean("deploy4"));
-      assertNull(getBean("deploy3"));
-      assertNull(getBean("deploy2"));
-      assertNull(getBean("deploy1"));
-      assertNull(getBean("appScopeObject"));
-      assertNull(getBean("cl"));
-*/
+      assertNull(getControllerContext("deploy4"));
+      assertNull(getControllerContext("deploy3"));
+      assertNull(getControllerContext("deploy2"));
+      assertNull(getControllerContext("deploy1"));
+      assertNull(getControllerContext("appScopeObject"));
+      assertNull(getControllerContext("cl"));
    }
 
 }

Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestDelegate.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingShutdownTestDelegate.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -0,0 +1,49 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.deployment.test;
+
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * Scoping shutdown Deployment Test Delegate.
+ * Doesn't throw exception on not found bean.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ScopingShutdownTestDelegate extends ScopingTestDelegate
+{
+   public ScopingShutdownTestDelegate(Class clazz) throws Exception
+   {
+      super(clazz);
+   }
+
+   protected KernelControllerContext handleNotFoundContext(Controller controller, Object name, ControllerState state)
+   {
+      if (controller.isShutdown() == false)
+         return super.handleNotFoundContext(controller, name, state);
+      else
+         return null;        
+   }
+
+}

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/ScopingTestDelegate.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -42,24 +42,31 @@
 
    protected KernelControllerContext getControllerContext(final Object name, final ControllerState state)
    {
+      Controller controller;
+      KernelControllerContext context;
       try
       {
-         Controller controller = new TestController((AbstractController)kernel.getController());
-         KernelControllerContext context = (KernelControllerContext)controller.getContext(name, state);
-         if (context == null)
-            throw new IllegalStateException("Bean not found " + name + " at state " + state);
-         return context;
+         controller = new TestController((AbstractController)kernel.getController());
+         context = (KernelControllerContext)controller.getContext(name, state);
       }
       catch (Exception e)
       {
          throw new Error(e);
       }
+      if (context == null)
+         handleNotFoundContext(controller, name, state);
+      return context;
    }
 
    private class TestController extends AbstractController
    {
       private AbstractController delegate;
 
+      public boolean isShutdown()
+      {
+         return delegate.isShutdown();
+      }
+
       public TestController(AbstractController controller) throws Exception
       {
          this.delegate = controller;

Modified: projects/microcontainer/trunk/spring-int/src/tests/org/jboss/test/spring/test/LazyTempSpringMicrocontainerTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/spring-int/src/tests/org/jboss/test/spring/test/LazyTempSpringMicrocontainerTestDelegate.java	2007-06-08 13:50:50 UTC (rev 63423)
+++ projects/microcontainer/trunk/spring-int/src/tests/org/jboss/test/spring/test/LazyTempSpringMicrocontainerTestDelegate.java	2007-06-08 13:56:40 UTC (rev 63424)
@@ -21,9 +21,9 @@
 */
 package org.jboss.test.spring.test;
 
+import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.dependency.spi.ControllerState;
-import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 
 /**
@@ -36,7 +36,7 @@
       super(clazz);
    }
 
-   protected KernelControllerContext handleNotFoundContext(KernelController controller, Object name, ControllerState state)
+   protected KernelControllerContext handleNotFoundContext(Controller controller, Object name, ControllerState state)
    {
       KernelControllerContext context = (KernelControllerContext)controller.getContext(name, null);
       if (context != null && ControllerMode.ON_DEMAND.equals(context.getMode()))




More information about the jboss-cvs-commits mailing list