[jboss-cvs] JBossAS SVN: r71794 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/spi and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 8 11:25:52 EDT 2008


Author: alesj
Date: 2008-04-08 11:25:52 -0400 (Tue, 08 Apr 2008)
New Revision: 71794

Added:
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerStateModel.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CloneUtil.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueCloneTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryCloneTestCase.java
Modified:
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractDependencyInfo.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/DependencyInfo.java
   projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java
   projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ShutdownControllerTestCase.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertiesMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AbstractXMLTest.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java
Log:
ControllerStateModel introduction.
Metadata cloning.
Changing how DependencyInfo resolves items.



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	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractController.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -29,6 +29,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
@@ -42,6 +43,7 @@
 import org.jboss.dependency.spi.ControllerContextActions;
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.dependency.spi.LifecycleCallbackItem;
@@ -52,9 +54,10 @@
  * Abstract controller.
  *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
  */
-public class AbstractController extends JBossObject implements Controller
+public class AbstractController extends JBossObject implements Controller, ControllerStateModel
 {
    /** The lock */
    private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
@@ -196,10 +199,7 @@
          }
          else
          {
-            int index = states.indexOf(before);
-            if (index == -1)
-               throw new IllegalStateException(before + " is not a state in the controller.");
-            states.add(index, state);
+            states.add(getStateIndex(before), state);
          }
 
          Set<ControllerContext> contexts =  new CopyOnWriteArraySet<ControllerContext>();
@@ -382,14 +382,9 @@
       try
       {
          ControllerContext result = getRegisteredControllerContext(name, false);
-         if (result != null && state != null)
+         if (result != null && state != null && isBeforeState(result.getState(), state))
          {
-            int required = states.indexOf(state);
-            if (required == -1)
-               throw new IllegalArgumentException("Unknown state " + state + " states=" + states);
-            int current = states.indexOf(result.getState());
-            if (current < required)
-               return null;
+            return null;
          }
          return result;
       }
@@ -423,9 +418,9 @@
       }
    }
 
-   public List<ControllerState> getStates()
+   public ControllerStateModel getStates()
    {
-      return states;
+      return this;
    }
 
    public Set<ControllerContext> getContextsByState(ControllerState state)
@@ -1006,7 +1001,6 @@
       Object name = context.getName();
 
       ControllerState fromState = context.getState();
-      int currentIndex = states.indexOf(fromState);
 
       if (trace)
          log.trace("Uninstalling " + name + " from " + fromState.getStateString());
@@ -1036,9 +1030,7 @@
                         ControllerState whenRequired = item.getWhenRequired();
                         if (whenRequired == null)
                            whenRequired = ControllerState.NOT_INSTALLED;
-                        int proposed = states.indexOf(whenRequired);
-                        int actual = states.indexOf(dependent.getState());
-                        if (proposed <= actual)
+                        if (isBeforeState(dependent.getState(), whenRequired) == false)
                            uninstallContext(dependent, whenRequired, trace);
                      }
                   }
@@ -1053,7 +1045,7 @@
          return;
       
       // Calculate the previous state
-      currentIndex = states.indexOf(fromState);
+      int currentIndex = states.indexOf(fromState);
       int toIndex = currentIndex - 1;
       if (toIndex < 0)
       {
@@ -1311,8 +1303,7 @@
     */
    protected void handleUninstallLifecycleCallbacks(ControllerContext context, ControllerState state) throws Throwable
    {
-      int index = states.indexOf(state);
-      ControllerState oldState = states.get(index + 1);
+      ControllerState oldState = getNextState(state);
       handleLifecycleCallbacks(context, oldState, false);
    }
 
@@ -1432,12 +1423,7 @@
       if (ControllerMode.DISABLED.equals(mode))
          return false;
 
-      ControllerState fromState = context.getState();
-      int fromIndex = states.indexOf(fromState);
-      ControllerState requiredState = context.getRequiredState();
-      int requiredIndex = states.indexOf(requiredState);
-
-      return fromIndex < requiredIndex;
+      return isBeforeState(context.getState(), context.getRequiredState());
    }
 
    /**
@@ -1741,4 +1727,82 @@
          }
       }
    }
+
+   public ControllerState getPreviousState(ControllerState state)
+   {
+      return getState(getStateIndex(state) - 1);
+   }
+
+   public ControllerState getNextState(ControllerState state)
+   {
+      return getState(getStateIndex(state) + 1);
+   }
+
+   public boolean isBeforeState(ControllerState state, ControllerState reference)
+   {
+      int stateIndex = getStateIndex(state, true);
+      int referenceIndex = getStateIndex(reference, true);
+      return stateIndex < referenceIndex;
+   }
+
+   public boolean isAfterState(ControllerState state, ControllerState reference)
+   {
+      int stateIndex = getStateIndex(state, true);
+      int referenceIndex = getStateIndex(reference, true);
+      return stateIndex > referenceIndex;
+   }
+
+   public Iterator<ControllerState> iterator()
+   {
+      return states.iterator();
+   }
+
+   /**
+    * Get the state index.
+    *
+    * @param state the state
+    * @return state index
+    */
+   protected int getStateIndex(ControllerState state)
+   {
+      return getStateIndex(state, false);
+   }
+
+   /**
+    * Get the state index.
+    *
+    * You have allow not found flag in case
+    * error state is passed in, which is legal.
+    *
+    * @param state the state
+    * @param allowNotFound allow not found state
+    * @return state index
+    */
+   protected int getStateIndex(ControllerState state, boolean allowNotFound)
+   {
+      if (state == null)
+         throw new IllegalArgumentException("Null state");
+
+      int stateIndex = states.indexOf(state);
+      if (stateIndex < 0 && allowNotFound == false)
+         throw new IllegalArgumentException("No such state " + state + " in states " + states);
+
+      return stateIndex;
+   }
+
+   /**
+    * Get the controller state form index.
+    *
+    * @param index the state index
+    * @return controller state
+    */
+   protected ControllerState getState(int index)
+   {
+      if (index < 0)
+         return null;
+      else if (index >= states.size())
+         return null;
+      else
+         return states.get(index);
+   }
 }

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractDependencyInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractDependencyInfo.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractDependencyInfo.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -21,6 +21,7 @@
 */
 package org.jboss.dependency.plugins;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -133,23 +134,30 @@
    public boolean resolveDependencies(Controller controller, ControllerState state)
    {
       boolean resolved = true;
-      if (unresolved.isEmpty() == false)
+      Set<DependencyItem> items = getUnresolvedDependencies(state);
+      if (items.isEmpty() == false)
       {
-         for (DependencyItem item : unresolved)
+         for (DependencyItem item : items)
          {
-            if (state.equals(item.getWhenRequired()) && item.resolve(controller) == false)
-            {
+            if (item.resolve(controller) == false)
                resolved = false;
-               break;
-            }
          }
       }
       return resolved;
    }
 
-   public Set<DependencyItem> getUnresolvedDependencies()
+   public Set<DependencyItem> getUnresolvedDependencies(ControllerState state)
    {
-      return unresolved;
+      if (unresolved.isEmpty())
+         return Collections.emptySet();
+
+      Set<DependencyItem> result = new HashSet<DependencyItem>();
+      for (DependencyItem item : unresolved)
+      {
+         if (state == null || state.equals(item.getWhenRequired()))
+            result.add(item);
+      }
+      return result;
    }
 
    public <T> void addInstallItem(CallbackItem<T> callbackItem)

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/Controller.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -21,7 +21,6 @@
 */
 package org.jboss.dependency.spi;
 
-import java.util.List;
 import java.util.Set;
 
 import org.jboss.util.JBossInterface;
@@ -121,11 +120,11 @@
    void addState(ControllerState state, ControllerState before);
    
    /**
-    * Get the states.
+    * Get the states model.
     * 
     * @return the states in order
     */
-   List<ControllerState> getStates();
+   ControllerStateModel getStates();
 
    /**
     * Get the contexts in certain state

Added: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerStateModel.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerStateModel.java	                        (rev 0)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/ControllerStateModel.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,71 @@
+/*
+* 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.dependency.spi;
+
+/**
+ * ControllerState model.
+ * Helper/util methods.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface ControllerStateModel extends Iterable<ControllerState>
+{
+   /**
+    * Get previous state from state param
+    * or null if state param is the first.
+    *
+    * Throw exception if state is not recognized.
+    *
+    * @param state the current state
+    * @return previous state
+    */
+   ControllerState getPreviousState(ControllerState state);
+
+   /**
+    * Get next state from state param
+    * or null if state param is the last.
+    *
+    * Throw exception if state is not recognized.
+    *
+    * @param state the current state
+    * @return next state
+    */
+   ControllerState getNextState(ControllerState state);
+
+   /**
+    * Is state param before reference state param.
+    *
+    * @param state the state we are checking
+    * @param reference the state we are checking <b>against</b>
+    * @return true if state is before reference
+    */
+   boolean isBeforeState(ControllerState state, ControllerState reference);
+
+   /**
+    * Is state param after reference state param.
+    *
+    * @param state the state we are checking
+    * @param reference the state we are checking <b>against</b>
+    * @return true if state is after reference
+    */
+   boolean isAfterState(ControllerState state, ControllerState reference);
+}

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/DependencyInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/DependencyInfo.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/DependencyInfo.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -89,10 +89,11 @@
    
    /**
     * Return the unresolved dependencies
-    * 
+    *
+    * @param state the controller state
     * @return our unresolved dependencies
     */
-   Set<DependencyItem> getUnresolvedDependencies();
+   Set<DependencyItem> getUnresolvedDependencies(ControllerState state);
 
    /**
     * Add a callback reference

Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/spi/helpers/UnmodifiableDependencyInfo.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -83,9 +83,9 @@
       return delegate.resolveDependencies(controller, state);
    }
 
-   public Set<DependencyItem> getUnresolvedDependencies()
+   public Set<DependencyItem> getUnresolvedDependencies(ControllerState state)
    {
-      return delegate.getUnresolvedDependencies();
+      return delegate.getUnresolvedDependencies(state);
    }
 
    public <T> void addInstallItem(CallbackItem<T> callbackItem)

Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ShutdownControllerTestCase.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ShutdownControllerTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/ShutdownControllerTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -21,12 +21,12 @@
 */
 package org.jboss.test.dependency.controller.test;
 
-import java.util.List;
 import java.util.Set;
 
 import junit.framework.Test;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -45,7 +45,7 @@
 
    protected void validateEmptyContexts()
    {
-      List<ControllerState> states = controller.getStates();
+      ControllerStateModel states = controller.getStates();
       for(ControllerState state : states)
       {
          Set<ControllerContext> contexts = controller.getContextsByState(state);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAliasMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -105,4 +105,9 @@
       // this is what we probably want? - never saw duplicate annotation on a bean/prop/...
       return alias.equals(amd.alias);
    }
+
+   public AbstractAliasMetaData clone()
+   {
+      return (AbstractAliasMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractAnnotationMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -53,11 +53,9 @@
    private static final long serialVersionUID = 2L;
 
    public String annotation;
+   private Annotation ann;
+   private boolean replace = true;
 
-   protected Annotation ann;
-
-   protected boolean replace = true;
-
    /**
     * Create a new annotation meta data
     */
@@ -166,4 +164,9 @@
       // this is what we probably want? - never saw duplicate annotation on a bean/prop/...
       return (replace == amd.replace) && annotation.equals(amd.annotation);
    }
+
+   public AbstractAnnotationMetaData clone()
+   {
+      return (AbstractAnnotationMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -132,4 +132,9 @@
       }
       return expected.cast(result);
    }
+
+   public AbstractArrayMetaData clone()
+   {
+      return (AbstractArrayMetaData)super.clone();
+   }
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -50,6 +50,7 @@
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
+import static org.jboss.beans.metadata.plugins.CloneUtil.*;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
@@ -192,15 +193,30 @@
       List<BeanMetaData> nestedBeans = findNestedBeans();
       if (nestedBeans.isEmpty())
       {
-         return Collections.singletonList((BeanMetaData)this);
+         return Collections.singletonList(prepareThis());
       }
       else
       {
-         nestedBeans.add(this);
+         nestedBeans.add(prepareThis());
          return nestedBeans;
       }
    }
 
+   /**
+    * Prepare / check if this needs a name, etc.
+    *
+    * @return this instance or a clone
+    */
+   protected BeanMetaData prepareThis()
+   {
+      return this;
+   }
+
+   /**
+    * Fins the nested beans.
+    *
+    * @return list of nested beans
+    */
    protected List<BeanMetaData> findNestedBeans()
    {
       List<BeanMetaData> allBeans = new ArrayList<BeanMetaData>();
@@ -208,6 +224,12 @@
       return allBeans;
    }
 
+   /**
+    * Add all nested beans to the list.
+    *
+    * @param current the current meta data visitor node child
+    * @param list the nested beans list
+    */
    protected void addBeans(MetaDataVisitorNode current, List<BeanMetaData> list)
    {
       for(Iterator<? extends MetaDataVisitorNode> children = current.getChildren(); children != null && children.hasNext();)
@@ -222,7 +244,7 @@
             addBeans(next, list);
             if (next instanceof BeanMetaData)
             {
-               list.add((BeanMetaData) current);
+               list.add((BeanMetaData) next);
             }
          }
       }
@@ -511,7 +533,8 @@
    @XmlElement(name="create", type=AbstractLifecycleMetaData.class)
    public void setCreate(LifecycleMetaData lifecycle)
    {
-      lifecycle.setState(ControllerState.CREATE);
+      if (lifecycle != null)
+         lifecycle.setState(ControllerState.CREATE);
       this.create = lifecycle;
    }
 
@@ -528,7 +551,8 @@
    @XmlElement(name="start", type=AbstractLifecycleMetaData.class)
    public void setStart(LifecycleMetaData lifecycle)
    {
-      lifecycle.setState(ControllerState.START);
+      if (lifecycle != null)
+         lifecycle.setState(ControllerState.START);
       this.start = lifecycle;
    }
 
@@ -545,7 +569,8 @@
    @XmlElement(name="stop", type=AbstractLifecycleMetaData.class)
    public void setStop(LifecycleMetaData lifecycle)
    {
-      lifecycle.setState(ControllerState.START);
+      if (lifecycle != null)
+         lifecycle.setState(ControllerState.START);
       this.stop = lifecycle;
    }
 
@@ -562,7 +587,8 @@
    @XmlElement(name="destroy", type=AbstractLifecycleMetaData.class)
    public void setDestroy(LifecycleMetaData lifecycle)
    {
-      lifecycle.setState(ControllerState.CREATE);
+      if (lifecycle != null)
+         lifecycle.setState(ControllerState.CREATE);
       this.destroy = lifecycle;
    }
 
@@ -810,4 +836,34 @@
       buffer.append('/');
       buffer.append(name);
    }
+
+   public AbstractBeanMetaData clone()
+   {
+      AbstractBeanMetaData clone = (AbstractBeanMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
+
+   @SuppressWarnings("unchecked")
+   protected void doClone(AbstractBeanMetaData clone)
+   {
+      super.doClone(clone);
+      if (aliases != null)
+         clone.setAliases(new HashSet<Object>(aliases));
+      clone.setAliasMetaData(cloneCollection(aliasMetaData, HashSet.class, AliasMetaData.class));
+      clone.setClassLoader(cloneObject(classLoader, ClassLoaderMetaData.class));
+      clone.setConstructor(cloneObject(constructor, ConstructorMetaData.class));
+      clone.setCreate(cloneObject(create, LifecycleMetaData.class));
+      clone.setDemands(cloneCollection(demands, HashSet.class, DemandMetaData.class));
+      clone.setDepends(cloneCollection(depends, HashSet.class, DependencyMetaData.class));
+      clone.setDestroy(cloneObject(destroy, LifecycleMetaData.class));
+      clone.setInstallCallbacks(cloneCollection(installCallbacks, ArrayList.class, CallbackMetaData.class));
+      clone.setInstalls(cloneCollection(installs, ArrayList.class, InstallMetaData.class));
+      clone.setProperties(cloneCollection(properties, HashSet.class, PropertyMetaData.class));
+      clone.setStart(cloneObject(start, LifecycleMetaData.class));
+      clone.setStop(cloneObject(stop, LifecycleMetaData.class));
+      clone.setSupplies(cloneCollection(supplies, HashSet.class, SupplyMetaData.class));
+      clone.setUninstallCallbacks(cloneCollection(uninstallCallbacks, ArrayList.class, CallbackMetaData.class));
+      clone.setUninstalls(cloneCollection(uninstalls, ArrayList.class, InstallMetaData.class));
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -137,4 +137,16 @@
    {
       buffer.append(classloader);
    }
+
+   public AbstractClassLoaderMetaData clone()
+   {
+      AbstractClassLoaderMetaData clone = (AbstractClassLoaderMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
+
+   protected void doClone(AbstractClassLoaderMetaData clone)
+   {
+      clone.setClassLoader(CloneUtil.cloneObject(classloader, ValueMetaData.class));
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -55,4 +55,9 @@
    {
       this.className = className;
    }
+
+   public AbstractClassMetaData clone()
+   {
+      return (AbstractClassMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -219,7 +219,7 @@
     * 
     * @return the class instance
     */
-   protected Object getDefaultInstance()
+   protected Collection<Object> getDefaultInstance()
    {
       return new ArrayList<Object>();
    }
@@ -246,4 +246,12 @@
 
       return null;
    }
+
+   @SuppressWarnings("unchecked")
+   public AbstractCollectionMetaData clone()
+   {
+      AbstractCollectionMetaData clone = (AbstractCollectionMetaData)super.clone();
+      clone.collection = CloneUtil.cloneCollection(collection, ArrayList.class, MetaDataVisitorNode.class);
+      return clone;
+   }
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -24,6 +24,7 @@
 import java.io.Serializable;
 import java.util.List;
 import java.util.Set;
+import java.util.ArrayList;
 
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlElement;
@@ -305,4 +306,20 @@
          buffer.append(" factoryMethod=").append(factoryMethod);
       super.toString(buffer);
    }
+
+   public AbstractConstructorMetaData clone()
+   {
+      AbstractConstructorMetaData clone = (AbstractConstructorMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
+
+   @SuppressWarnings("unchecked")
+   protected void doClone(AbstractConstructorMetaData clone)
+   {
+      super.doClone(clone);
+      clone.setFactory(CloneUtil.cloneObject(factory, ValueMetaData.class));
+      clone.setValue(CloneUtil.cloneObject(value, ValueMetaData.class));
+      clone.setParameters(CloneUtil.cloneCollection(parameters, ArrayList.class, ParameterMetaData.class));
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDemandMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -200,12 +200,9 @@
        */
       public DemandDependencyItem(Object name)
       {
-         super(name, getDemand(), whenRequired, null);
+         super(name, null, whenRequired, null);
          if (getTransformer() != null)
-         {
             matcher = MatcherFactory.getInstance().createMatcher(getTransformer(), getDemand());
-            setIDependOn(matcher);
-         }
       }
 
       /**
@@ -261,4 +258,9 @@
          return builder.toString();
       }
    }
+
+   public AbstractDemandMetaData clone()
+   {
+      return (AbstractDemandMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -153,4 +153,9 @@
          super(name, dependency, state, state);
       }
    }
+
+   public AbstractDependencyMetaData clone()
+   {
+      return (AbstractDependencyMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -247,4 +247,9 @@
       if (dependentState != null)
          buffer.append(" dependentState=").append(dependentState.getStateString());
    }
+
+   public AbstractDependencyValueMetaData clone()
+   {
+      return (AbstractDependencyValueMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -22,11 +22,13 @@
 package org.jboss.beans.metadata.plugins;
 
 import java.io.Serializable;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
+import static org.jboss.beans.metadata.plugins.CloneUtil.cloneCollection;
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.FeatureMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
@@ -150,4 +152,10 @@
    {
       buffer.append(description);
    }
+
+   @SuppressWarnings("unchecked")
+   protected void doClone(AbstractFeatureMetaData clone)
+   {
+      clone.setAnnotations(cloneCollection(annotations, HashSet.class, AnnotationMetaData.class));
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -21,20 +21,20 @@
 */
 package org.jboss.beans.metadata.plugins;
 
-import java.util.List;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.beans.metadata.api.model.AutowireType;
+import org.jboss.beans.metadata.api.model.FromContext;
+import org.jboss.beans.metadata.api.model.InjectOption;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.beans.metadata.api.model.InjectOption;
-import org.jboss.beans.metadata.api.model.FromContext;
 import org.jboss.dependency.plugins.AttributeCallbackItem;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.kernel.plugins.dependency.ClassContextDependencyItem;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -217,19 +217,17 @@
 
             KernelControllerContext kcc = visitor.getControllerContext();
             Controller controller = kcc.getController();
-            List<ControllerState> states = controller.getStates();
-            int whenIndex = states.indexOf(when);
+            ControllerStateModel states = controller.getStates();
 
             if (dependentState == null)
             {
-               dependentState = states.get(whenIndex - 1);
+               dependentState = states.getPreviousState(when);
             }
             else
             {
-               int dependentIndex = states.indexOf(dependentState);
-               if (whenIndex <= dependentIndex)
+               if (states.isBeforeState(when, dependentState))
                {
-                  dependentState = states.get(whenIndex - 1);
+                  dependentState = states.getPreviousState(when);
                   if (log.isTraceEnabled())
                     log.trace("Cannot set demand state to more/equal than when required state, changing it to : " + dependentState);
                }
@@ -346,4 +344,8 @@
          buffer.append(" fromContext=").append(fromContext);
    }
 
+   public AbstractInjectionValueMetaData clone()
+   {
+      return (AbstractInjectionValueMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -167,4 +167,9 @@
          super(name, bean, state, dependentState);
       }
    }
+
+   public AbstractInstallMetaData clone()
+   {
+      return (AbstractInstallMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLazyMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -26,6 +26,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.HashSet;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlNsForm;
@@ -150,4 +151,12 @@
    {
       this.interfaces = interfaces;
    }
+
+   public AbstractLazyMetaData clone()
+   {
+      AbstractLazyMetaData clone = (AbstractLazyMetaData)super.clone();
+      if (interfaces != null)
+         clone.setInterfaces(new HashSet<String>(interfaces));
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -22,12 +22,12 @@
 package org.jboss.beans.metadata.plugins;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
-
-import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.beans.metadata.spi.LifecycleMetaData;
@@ -209,4 +209,22 @@
    {
       buffer.append(methodName);
    }
+
+   public AbstractLifecycleMetaData clone()
+   {
+      AbstractLifecycleMetaData clone = (AbstractLifecycleMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
+
+   @SuppressWarnings("unchecked")
+   protected void doClone(AbstractLifecycleMetaData clone)
+   {
+      super.doClone(clone);
+      clone.setIgnored(ignored);
+      clone.setMethodName(methodName);
+      clone.setParameters(CloneUtil.cloneCollection(parameters, ArrayList.class, ParameterMetaData.class));
+      clone.setState(state);
+      clone.setType(type);
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractListMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -118,4 +118,9 @@
    {
       return collection.subList(fromIndex, toIndex);
    }
+
+   public AbstractListMetaData clone()
+   {
+      return (AbstractListMetaData)super.clone();
+   }
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -286,4 +286,11 @@
 
       return configurator.getClassInfo(valueType, cl);
    }
+
+   public AbstractMapMetaData clone()
+   {
+      AbstractMapMetaData clone = (AbstractMapMetaData)super.clone();
+      clone.map = CloneUtil.cloneMap(map, MetaDataVisitorNode.class, MetaDataVisitorNode.class);
+      return clone;
+   }
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractNamedAliasMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -91,4 +91,9 @@
       AbstractNamedAliasMetaData amd = (AbstractNamedAliasMetaData)object;
       return name.equals(amd.name);
    }
+
+   public AbstractNamedAliasMetaData clone()
+   {
+      return (AbstractNamedAliasMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -296,4 +296,12 @@
    {
       buffer.append(type);
    }
+
+   public AbstractParameterMetaData clone()
+   {
+      AbstractParameterMetaData clone = (AbstractParameterMetaData)super.clone();
+      doClone(clone);
+      clone.setValue(CloneUtil.cloneObject(value, ValueMetaData.class));
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertiesMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertiesMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertiesMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -64,4 +64,8 @@
       throw new IllegalArgumentException("Illegal call to set properties value type!");
    }
 
+   public AbstractPropertiesMetaData clone()
+   {
+      return (AbstractPropertiesMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -320,4 +320,12 @@
    {
       buffer.append(name);
    }
+
+   public AbstractPropertyMetaData clone()
+   {
+      AbstractPropertyMetaData clone = (AbstractPropertyMetaData)super.clone();
+      doClone(clone);
+      clone.setValue(CloneUtil.cloneObject(value, ValueMetaData.class));
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSetMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -93,8 +93,13 @@
       return changed;
    }
 
-   protected Object getDefaultInstance()
+   protected Set<Object> getDefaultInstance()
    {
       return new HashSet<Object>();
    }
+
+   public AbstractSetMetaData clone()
+   {
+      return (AbstractSetMetaData)super.clone();
+   }
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSupplyMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -188,4 +188,9 @@
    {
       return HashCode.generate(supply);
    }
+
+   public AbstractSupplyMetaData clone()
+   {
+      return (AbstractSupplyMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -379,5 +379,4 @@
       ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
       return getClassInfo(classType, cl);
    }
-
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueFactoryMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -355,4 +355,12 @@
       if (parameters != null && parameters.isEmpty() == false)
          buffer.append(" parameters=").append(parameters);
    }
+
+   @SuppressWarnings("unchecked")
+   public AbstractValueFactoryMetaData clone()
+   {
+      AbstractValueFactoryMetaData clone = (AbstractValueFactoryMetaData)super.clone();
+      clone.setParameters(CloneUtil.cloneCollection(parameters, ArrayList.class, ParameterMetaData.class));
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -148,4 +148,12 @@
    {
       buffer.append(value);
    }
+
+   public AbstractValueMetaData clone()
+   {
+      AbstractValueMetaData clone = (AbstractValueMetaData)super.clone();
+      if (value instanceof MetaDataVisitorNode)
+         clone.setValue(CloneUtil.cloneObject((MetaDataVisitorNode)value, MetaDataVisitorNode.class));
+      return clone;
+   }
 }

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CloneUtil.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CloneUtil.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/CloneUtil.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,103 @@
+/*
+* 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.beans.metadata.plugins;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+
+/**
+ * Clone util helper.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+class CloneUtil
+{
+   /**
+    * Simple clone object.
+    *
+    * @param original the original
+    * @param expectedClass the expected class
+    * @return clone
+    */
+   public static <T extends MetaDataVisitorNode> T cloneObject(T original, Class<T> expectedClass)
+   {
+      if (original == null)
+         return null;
+
+      Object clone = original.clone();
+
+      if (expectedClass.isInstance(clone) == false)
+         throw new IllegalArgumentException("Clone '" + clone + "' is not of expected class: " + expectedClass);
+
+      return expectedClass.cast(clone);
+   }
+
+   /**
+    * Simple collection clone.
+    *
+    * @param collection the collection to be cloned
+    * @param expectedClass expected collection class
+    * @param componentType expected component class
+    * @return cloned collection
+    */
+   public static <U extends MetaDataVisitorNode, T extends Collection<U>> T cloneCollection(T collection, Class<? extends T> expectedClass, Class<U> componentType)
+   {
+      if (collection == null)
+         return null;
+
+      try
+      {
+         T clone = expectedClass.newInstance();
+         for (U item : collection)
+               clone.add(cloneObject(item, componentType));
+
+         return clone;
+      }
+      catch (Throwable t)
+      {
+         throw new RuntimeException(t);
+      }
+   }
+
+   /**
+    * Simple map clone.
+    *
+    * @param map the map to clone
+    * @param keyClass the key class
+    * @param valueClass the value class
+    * @return map clone
+    */
+   public static <U extends MetaDataVisitorNode, T extends MetaDataVisitorNode> Map<U, T> cloneMap(Map<U, T> map, Class<U> keyClass, Class<T> valueClass)
+   {
+      if (map == null)
+         return null;
+
+      Map<U, T> clone = new HashMap<U, T>();
+      for (Map.Entry<U, T> entry : map.entrySet())
+         clone.put(cloneObject(entry.getKey(), keyClass), cloneObject(entry.getValue(), valueClass));
+
+      return clone;
+   }
+}

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/InstallCallbackMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -48,4 +48,11 @@
    {
       visitor.addInstallCallback(callback);
    }
+
+   public InstallCallbackMetaData clone()
+   {
+      InstallCallbackMetaData clone = (InstallCallbackMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -164,4 +164,9 @@
    {
       this.trim = trim;
    }
+
+   public StringValueMetaData clone()
+   {
+      return (StringValueMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -76,4 +76,9 @@
 
       super.initialVisit(visitor);
    }
+
+   public ThisValueMetaData clone()
+   {
+      return (ThisValueMetaData)super.clone();
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/UninstallCallbackMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -48,4 +48,11 @@
    {
       visitor.addUninstallCallback(callback);
    }
+
+   public UninstallCallbackMetaData clone()
+   {
+      UninstallCallbackMetaData clone = (UninstallCallbackMetaData)super.clone();
+      doClone(clone);
+      return clone;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -27,7 +27,7 @@
  * A metadata vistor node.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
 public interface MetaDataVisitorNode
 {
@@ -51,4 +51,11 @@
     * @return Iterator<MetaDataVisitorNode> or null if there aren't any
     */
    public Iterator<? extends MetaDataVisitorNode> getChildren();
+
+   /**
+    * Clone the object
+    *
+    * @return a clone of the object
+    */
+   Object clone();
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -638,4 +638,4 @@
          return values().iterator();
       }
    }
-}
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -104,6 +104,7 @@
          list = matchSupplies((Matcher)name);
       else
          list = suppliers.get(name);
+
       if (list != null && list.isEmpty() == false)
          return list.get(0);
       else if (name instanceof Class)
@@ -292,12 +293,9 @@
          if (contexts != null && contexts.isEmpty() == false)
          {
             Set<KernelControllerContext> kccs = new HashSet<KernelControllerContext>();
-            List<ControllerState> states = getStates();
-            int stateIndex = states.indexOf(state);
             for(KernelControllerContext context : contexts)
             {
-               int contextStateIndex = states.indexOf(context.getState());
-               if (contextStateIndex >= stateIndex)
+               if (isBeforeState(context.getState(), state) == false)
                   kccs.add(context);
             }
             return Collections.unmodifiableSet(kccs);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/AbstractKernelDeployer.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -33,6 +33,7 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerMode;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.kernel.Kernel;
@@ -193,7 +194,6 @@
     */
    protected void internalValidate(Set<ControllerContext> notInstalled) throws Throwable
    {
-      List<ControllerState> states = controller.getStates();
       if (notInstalled.isEmpty() == false)
       {
          for (Iterator<ControllerContext> i = notInstalled.iterator(); i.hasNext();)
@@ -255,9 +255,8 @@
                         boolean print = true;
                         if (otherState != null && otherState.equals(ControllerState.ERROR) == false)
                         {
-                           int index1 = states.indexOf(dependentState);
-                           int index2 = states.indexOf(otherState);
-                           if (index2 >= index1)
+                           ControllerStateModel states = controller.getStates();
+                           if (states.isBeforeState(otherState, dependentState) == false)
                               print = false;
                         }
 

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AbstractXMLTest.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AbstractXMLTest.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AbstractXMLTest.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -44,11 +44,11 @@
 import org.jboss.beans.metadata.spi.DemandMetaData;
 import org.jboss.beans.metadata.spi.DependencyMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.LazyMetaData;
 import org.jboss.beans.metadata.spi.ParameterMetaData;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.beans.metadata.spi.LazyMetaData;
 import org.jboss.beans.metadata.spi.factory.GenericBeanFactoryMetaData;
 import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
 import org.jboss.test.AbstractTestCaseWithSetup;
@@ -59,12 +59,14 @@
  * AbstractXMLTest.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
  */
 public class AbstractXMLTest extends AbstractTestCaseWithSetup
 {
    protected String rootName = getRootName();
-   
+   protected boolean useClone;
+
    /**
     * Create a new AbstractXMLTest.
     * 
@@ -72,7 +74,19 @@
     */
    public AbstractXMLTest(String name)
    {
+      this(name, false);
+   }
+
+   /**
+    * Create a new AbstractXMLTest.
+    *
+    * @param name the name of the test
+    * @param useClone use clone when testing
+    */
+   public AbstractXMLTest(String name, boolean useClone)
+   {
       super(name);
+      this.useClone = useClone;
    }
 
    /**
@@ -96,10 +110,28 @@
     */
    protected AbstractBeanMetaData unmarshalBean(String name) throws Exception
    {
-      return unmarshal(name, AbstractBeanMetaData.class);
+      return unmarshalBean(name, useClone);
    }
 
    /**
+    * Unmarshal a bean
+    *
+    * @param name the name
+    * @param useClone should we return the clone
+    * @return the unmarshalled object
+    * @throws Exception for any error
+    */
+   protected AbstractBeanMetaData unmarshalBean(String name, boolean useClone) throws Exception
+   {
+      AbstractBeanMetaData bmd = unmarshal(name, AbstractBeanMetaData.class);
+
+      if (useClone)
+         return bmd.clone();
+
+      return bmd;
+   }
+
+   /**
     * Unmarshal a bean factory
     * 
     * @param name the name
@@ -127,9 +159,8 @@
       if (object == null)
          fail("No object from " + name);
 
+      // Test that serialize/deserialize works accurately reproduces the object
       Serializable serializable = assertInstanceOf(object, Serializable.class, false);
-
-      // Test that serialize/deserialize works accurately reproduces the object
       object = deserialize(serialize(serializable));
 
       assertTrue("Object '" + object + "' cannot be assigned to " + expected.getName(), expected.isAssignableFrom(object.getClass()));

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * AliasCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AliasCloneTestCase extends AliasTestCase
+{
+   public AliasCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   public static Test suite()
+   {
+      return suite(AliasCloneTestCase.class);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AliasTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -44,6 +44,11 @@
       super(name);
    }
 
+   protected AliasTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
+
    public static Test suite()
    {
       return suite(AliasTestCase.class);

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * AnnotationCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AnnotationCloneTestCase extends AnnotationTestCase
+{
+   public static Test suite()
+   {
+      return suite(AnnotationCloneTestCase.class);
+   }
+
+   public AnnotationCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/AnnotationTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -97,4 +97,9 @@
    {
       super(name);
    }
+
+   protected AnnotationTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ArrayCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ArrayCloneTestCase extends ArrayTestCase
+{
+   public static Test suite()
+   {
+      return suite(ArrayCloneTestCase.class);
+   }
+
+   public ArrayCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ArrayTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -175,4 +175,9 @@
    {
       super(name);
    }
+
+   protected ArrayTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * BeanTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeanCloneTestCase extends BeanTestCase
+{
+   public static Test suite()
+   {
+      return suite(BeanCloneTestCase.class);
+   }
+
+   public BeanCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -897,4 +897,9 @@
    {
       super(name);
    }
+
+   protected BeanTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * CallbackCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class CallbackCloneTestCase extends CallbackTestCase
+{
+   public CallbackCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   public static Test suite()
+   {
+      return suite(CallbackCloneTestCase.class);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CallbackTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -42,6 +42,11 @@
       super(name);
    }
 
+   protected CallbackTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
+
    public static Test suite()
    {
       return suite(CallbackTestCase.class);

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ClassLoaderCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ClassLoaderCloneTestCase extends ClassLoaderTestCase
+{
+   public static Test suite()
+   {
+      return suite(ClassLoaderCloneTestCase.class);
+   }
+
+   public ClassLoaderCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ClassLoaderTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -74,4 +74,9 @@
    {
       super(name);
    }
+
+   protected ClassLoaderTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * CollectionCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class CollectionCloneTestCase extends CollectionTestCase
+{
+   public static Test suite()
+   {
+      return suite(CollectionCloneTestCase.class);
+   }
+
+   public CollectionCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/CollectionTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -175,4 +175,9 @@
    {
       super(name);
    }
+
+   protected CollectionTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ConstructorCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ConstructorCloneTestCase extends ConstructorTestCase
+{
+   public static Test suite()
+   {
+      return suite(ConstructorCloneTestCase.class);
+   }
+
+   public ConstructorCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ConstructorTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -263,4 +263,9 @@
    {
       super(name);
    }
+
+   protected ConstructorTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * Demand TestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class DemandCloneTestCase extends DemandTestCase
+{
+   public static Test suite()
+   {
+      return suite(DemandCloneTestCase.class);
+   }
+
+   public DemandCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DemandTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -79,4 +79,9 @@
    {
       super(name);
    }
+
+   protected DemandTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * DependencyCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class DependencyCloneTestCase extends DependencyTestCase
+{
+   public static Test suite()
+   {
+      return suite(DependencyCloneTestCase.class);
+   }
+
+   public DependencyCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/DependencyTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -63,4 +63,9 @@
    {
       super(name);
    }
+
+   protected DependencyTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * FactoryCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class FactoryCloneTestCase extends FactoryTestCase
+{
+   public static Test suite()
+   {
+      return suite(FactoryCloneTestCase.class);
+   }
+
+   public FactoryCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/FactoryTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -92,4 +92,9 @@
    {
       super(name);
    }
+
+   protected FactoryTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * InjectionTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InjectionCloneTestCase extends InjectionTestCase
+{
+   public static Test suite()
+   {
+      return suite(InjectionCloneTestCase.class);
+   }
+
+   public InjectionCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InjectionTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -109,4 +109,9 @@
    {
       super(name);
    }
+
+   protected InjectionTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * InstallCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InstallCloneTestCase extends InstallTestCase
+{
+   public static Test suite()
+   {
+      return suite(InstallTestCase.class);
+   }
+
+   public InstallCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/InstallTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -159,4 +159,9 @@
    {
       super(name);
    }
+
+   protected InstallTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * LifecycleCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class LifecycleCloneTestCase extends LifecycleTestCase
+{
+   public static Test suite()
+   {
+      return suite(LifecycleCloneTestCase.class);
+   }
+
+   public LifecycleCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/LifecycleTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -122,4 +122,9 @@
    {
       super(name);
    }
+
+   protected LifecycleTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ListCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ListCloneTestCase extends ListTestCase
+{
+   public static Test suite()
+   {
+      return suite(ListCloneTestCase.class);
+   }
+
+   public ListCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ListTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -175,4 +175,9 @@
    {
       super(name);
    }
+
+   protected ListTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * MapCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class MapCloneTestCase extends MapTestCase
+{
+   public static Test suite()
+   {
+      return suite(MapCloneTestCase.class);
+   }
+
+   public MapCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/MapTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -214,4 +214,9 @@
    {
       super(name);
    }
+
+   protected MapTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ParameterCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ParameterCloneTestCase extends ParameterTestCase
+{
+   public static Test suite()
+   {
+      return suite(ParameterCloneTestCase.class);
+   }
+
+   public ParameterCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ParameterTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -184,4 +184,9 @@
    {
       super(name);
    }
+
+   protected ParameterTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * PropertyCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class PropertyCloneTestCase extends PropertyTestCase
+{
+   public static Test suite()
+   {
+      return suite(PropertyCloneTestCase.class);
+   }
+
+   public PropertyCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/PropertyTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -204,4 +204,9 @@
    {
       super(name);
    }
+
+   protected PropertyTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * SetCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class SetCloneTestCase extends SetTestCase
+{
+   public static Test suite()
+   {
+      return suite(SetCloneTestCase.class);
+   }
+
+   public SetCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SetTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -175,4 +175,9 @@
    {
       super(name);
    }
+
+   protected SetTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * SupplyCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class SupplyCloneTestCase extends SupplyTestCase
+{
+   public static Test suite()
+   {
+      return suite(SupplyCloneTestCase.class);
+   }
+
+   public SupplyCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/SupplyTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -70,4 +70,9 @@
    {
       super(name);
    }
+
+   protected SupplyTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ValueCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ValueCloneTestCase extends ValueTestCase
+{
+   public static Test suite()
+   {
+      return suite(ValueCloneTestCase.class);
+   }
+
+   public ValueCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Copied: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryCloneTestCase.java (from rev 71757, projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryTestCase.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryCloneTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryCloneTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -0,0 +1,42 @@
+/*
+* 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.xml.test;
+
+import junit.framework.Test;
+
+/**
+ * ValueFactoryCloneTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ValueFactoryCloneTestCase extends ValueFactoryTestCase
+{
+   public static Test suite()
+   {
+      return suite(ValueFactoryCloneTestCase.class);
+   }
+
+   public ValueFactoryCloneTestCase(String name)
+   {
+      super(name, true);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueFactoryTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -126,4 +126,9 @@
    {
       super(name);
    }
+
+   protected ValueFactoryTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueTestCase.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/ValueTestCase.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -82,4 +82,9 @@
    {
       super(name);
    }
+
+   protected ValueTestCase(String name, boolean useClone)
+   {
+      super(name, useClone);
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java	2008-04-08 15:22:39 UTC (rev 71793)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java	2008-04-08 15:25:52 UTC (rev 71794)
@@ -95,6 +95,30 @@
       suite.addTest(AnnotationJaxbTestCase.suite());
       suite.addTest(CallbackJaxbTestCase.suite());
       suite.addTest(ValueFactoryJaxbTestCase.suite());
+
+      // clone
+      suite.addTest(BeanCloneTestCase.suite());
+      suite.addTest(ClassLoaderCloneTestCase.suite());
+      suite.addTest(ConstructorCloneTestCase.suite());
+      suite.addTest(FactoryCloneTestCase.suite());
+      suite.addTest(ParameterCloneTestCase.suite());
+      suite.addTest(PropertyCloneTestCase.suite());
+      suite.addTest(LifecycleCloneTestCase.suite());
+      suite.addTest(DependencyCloneTestCase.suite());
+      suite.addTest(DemandCloneTestCase.suite());
+      suite.addTest(SupplyCloneTestCase.suite());
+      suite.addTest(InstallCloneTestCase.suite());
+      suite.addTest(ValueCloneTestCase.suite());
+      suite.addTest(InjectionCloneTestCase.suite());
+      suite.addTest(CollectionCloneTestCase.suite());
+      suite.addTest(ListCloneTestCase.suite());
+      suite.addTest(SetCloneTestCase.suite());
+      suite.addTest(ArrayCloneTestCase.suite());
+      suite.addTest(MapCloneTestCase.suite());
+      suite.addTest(AnnotationCloneTestCase.suite());
+      suite.addTest(CallbackCloneTestCase.suite());
+      suite.addTest(ValueFactoryCloneTestCase.suite());
+
       // policy
       suite.addTest(ScopeJaxbTestCase.suite());
       suite.addTest(BindingJaxbTestCase.suite());




More information about the jboss-cvs-commits mailing list