[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