[jboss-cvs] JBossAS SVN: r101260 - in projects/kernel/branches/jsr330: dependency/src/main/java/org/jboss/dependency/plugins and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 22 13:27:29 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-02-22 13:27:28 -0500 (Mon, 22 Feb 2010)
New Revision: 101260

Added:
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/ObjectWithLotsOfProperties.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/SomeAnnotation.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/StartStopObjectWithLotsofMethods.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/ObjectWithLotsOfPropertiesBenchmark.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/StartStopObjectWithLotsOfMethodsBenchmark.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java
Modified:
   projects/kernel/branches/jsr330/
   projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
   projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/MapControllerStateModel.java
   projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
   projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
   projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
   projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/AbstractBenchmark.java
Log:
Merged revisions 101025,101109,101129,101159,101181,101247 via svnmerge from 
https://svn.jboss.org/repos/jbossas/projects/kernel/trunk

.......
  r101025 | kabir.khan at jboss.com | 2010-02-16 15:32:32 +0000 (Tue, 16 Feb 2010) | 1 line
  
  [JBKERNEL-99][JBKERNEL-95] Cleanup + some more benchmarks
.......
  r101109 | kabir.khan at jboss.com | 2010-02-18 11:22:27 +0000 (Thu, 18 Feb 2010) | 1 line
  
  [JBKERNEL-100] Check for null values in ungetValue()
.......
  r101129 | kabir.khan at jboss.com | 2010-02-18 17:43:56 +0000 (Thu, 18 Feb 2010) | 1 line
  
  [JBKERNEL-95] More benchmarks, don't always create iterators in CommonAnnotationAdapter if there are no annotations
.......
  r101159 | kabir.khan at jboss.com | 2010-02-19 12:19:32 +0000 (Fri, 19 Feb 2010) | 1 line
  
  [JBKERNEL-95] Unnecessary read locks when accessing ConcurrentHashMap
.......
  r101181 | kabir.khan at jboss.com | 2010-02-19 19:02:27 +0000 (Fri, 19 Feb 2010) | 1 line
  
  [JBKERNEL-95] Undo last commit
.......
  r101247 | kabir.khan at jboss.com | 2010-02-22 15:46:32 +0000 (Mon, 22 Feb 2010) | 1 line
  
  [JBKERNEL-92] Make resolveCallbacks() access the callbacks in a thread safe way
.......



Property changes on: projects/kernel/branches/jsr330
___________________________________________________________________
Name: svnmerge-integrated
   - /projects/kernel/trunk:1-101017
   + /projects/kernel/trunk:1-101255

Modified: projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -23,6 +23,7 @@
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
@@ -107,8 +108,8 @@
    private final Set<AbstractController> childControllers = new CopyOnWriteArraySet<AbstractController>();
 
    /** The callback items */
-   private final Map<Object, Set<CallbackItem<?>>> installCallbacks = new ConcurrentHashMap<Object, Set<CallbackItem<?>>>();
-   private final Map<Object, Set<CallbackItem<?>>> uninstallCallbacks = new ConcurrentHashMap<Object, Set<CallbackItem<?>>>();
+   private final Map<Object, Set<CallbackItem<?>>> installCallbacks = new HashMap<Object, Set<CallbackItem<?>>>();
+   private final Map<Object, Set<CallbackItem<?>>> uninstallCallbacks = new HashMap<Object, Set<CallbackItem<?>>>();
 
    /** Whether an on demand context has been enabled */
    private boolean onDemandEnabled = true;
@@ -1831,14 +1832,20 @@
     * @param isInstallPhase install or uninstall phase
     * @return all matching registered callbacks or empty set if no such item
     */
-   protected Set<CallbackItem<?>> getCallbacks(Object name, boolean isInstallPhase)
+   protected Set<CallbackItem<?>> getCallbacks(Set<CallbackItem<?>> result, Object name, boolean isInstallPhase)
    {
       lockRead();
       try
       {
          Map<Object, Set<CallbackItem<?>>> map = (isInstallPhase ? installCallbacks : uninstallCallbacks);
          Set<CallbackItem<?>> callbacks = map.get(name);
-         return callbacks != null ? callbacks : Collections.<CallbackItem<?>>emptySet();
+         if (callbacks != null)
+         {
+            if (result == null)
+               result = new HashSet<CallbackItem<?>>();
+            result.addAll(callbacks);
+         }
+         return result;
       }
       finally
       {
@@ -1910,20 +1917,16 @@
          if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
          {
             // match callbacks by name
-            existingCallbacks = new HashSet<CallbackItem<?>>();
-            existingCallbacks.addAll(getCallbacks(context.getName(), isInstallPhase));
+            existingCallbacks = getCallbacks(existingCallbacks, context.getName(), isInstallPhase);
             // match by classes
             Collection<Class<?>> classes = getExposedClasses(context);
             if (classes != null && classes.isEmpty() == false)
             {
                for (Class<?> clazz : classes)
                {
-                  existingCallbacks.addAll(getCallbacks(clazz, isInstallPhase));
+                  existingCallbacks = getCallbacks(existingCallbacks, clazz, isInstallPhase);
                }
             }
-            
-            if (existingCallbacks.isEmpty())
-               existingCallbacks = null;
          }
          
          if (installs != null || uninstalls != null || existingCallbacks != null)

Modified: projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/MapControllerStateModel.java
===================================================================
--- projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/MapControllerStateModel.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/dependency/src/main/java/org/jboss/dependency/plugins/MapControllerStateModel.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -201,20 +201,13 @@
    {
       private static final long serialVersionUID = 1L;
       
-      final ControllerState state;
       volatile int index;
       volatile ControllerStateWrapper before;
       volatile ControllerStateWrapper after;
       
-      ControllerStateWrapper(ControllerState state)
-      {
-         super(state.getStateString(), false);
-         this.state = state;
-      }
-      
       public ControllerStateWrapper(ControllerState state, int index, ControllerStateWrapper before, ControllerStateWrapper after)
       {
-         this(state);
+         super(state.getStateString(), false);
          this.index = index;
          this.before = before;
          this.after = after;

Modified: projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -319,10 +319,13 @@
          ControllerState state = dependentState;
          if (state == null)
             state = ControllerState.INSTALLED;
-         ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
-         if (lookup != null)
+         if (getUnderlyingValue() != null)
          {
-            return ungetTarget(context, lookup);
+            ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
+            if (lookup != null)
+            {
+               return ungetTarget(context, lookup);
+            }
          }
       }
 

Modified: projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -272,11 +272,14 @@
    {
       if (getUnderlyingValue() == null)
       {
-         ControllerContext lookup = item.getControllerContext(context.getController());
-         if (lookup != null)
+         if (context != null && item != null)
          {
-            ungetTarget(context, lookup);
-            return null;
+            ControllerContext lookup = item.getControllerContext(context.getController());
+            if (lookup != null)
+            {
+               ungetTarget(context, lookup);
+               return null;
+            }
          }
       }
       return super.ungetValue(info, cl);

Modified: projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -410,17 +410,17 @@
 
       // class
       ClassInfo classInfo = info.getClassInfo();
-      for (Annotation annotation : retrieval.getAnnotations())
+      Annotation[] anns = retrieval.getAnnotations();
+      for (int i = 0 ; i < anns.length ; i++)
       {
-         for(T plugin : getPlugins(ElementType.TYPE, annotation, null, annotationClasses))
+         for(T plugin : getPlugins(ElementType.TYPE, anns[i], null, annotationClasses))
          {
             if (isApplyPhase)
-               applyPlugin(plugin, annotation, classInfo, retrieval, handle);
+               applyPlugin(plugin, anns[i], classInfo, retrieval, handle);
             else
-               cleanPlugin(plugin, annotation, classInfo, retrieval, handle);
+               cleanPlugin(plugin, anns[i], classInfo, retrieval, handle);
          }
       }
-      
       //Meta annotations on class
       Map<Class<? extends Annotation>, Set<T>> metaAnnotationsForType = getMetaAnnotationsForType(ElementType.TYPE);
       if (metaAnnotationsForType != null)
@@ -450,14 +450,15 @@
             MetaData cmdr = retrieval.getComponentMetaData(cis);
             if (cmdr != null)
             {
-               for (Annotation annotation : cmdr.getAnnotations())
+               Annotation[] canns = cmdr.getAnnotations();
+               for (int i = 0 ; i < canns.length ; i++)
                {
-                  for(T plugin : getPlugins(ElementType.CONSTRUCTOR, annotation, null, annotationClasses))
+                  for(T plugin : getPlugins(ElementType.CONSTRUCTOR, canns[i], null, annotationClasses))
                   {
                      if (isApplyPhase)
-                        applyPlugin(plugin, annotation, ci, cmdr, handle);
+                        applyPlugin(plugin, canns[i], ci, cmdr, handle);
                      else
-                        cleanPlugin(plugin, annotation, ci, cmdr, handle);
+                        cleanPlugin(plugin, canns[i], ci, cmdr, handle);
                   }
                }
             }
@@ -483,14 +484,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(sis);
                if (cmdr != null)
                {
-                  for (Annotation annotation : cmdr.getAnnotations())
+                  Annotation[] canns = cmdr.getAnnotations();
+                  for (int i = 0 ; i < canns.length ; i++)
                   {
-                     for(T plugin : getPlugins(ElementType.FIELD, annotation, null, annotationClasses))
+                     for(T plugin : getPlugins(ElementType.FIELD, canns[i], null, annotationClasses))
                      {
                         if (isApplyPhase)
-                           applyPlugin(plugin, annotation, field, cmdr, handle);
+                           applyPlugin(plugin, canns[i], field, cmdr, handle);
                         else
-                           cleanPlugin(plugin, annotation, field, cmdr, handle);
+                           cleanPlugin(plugin, canns[i], field, cmdr, handle);
                      }
                   }
                }
@@ -523,14 +525,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(mis);
                if (cmdr != null)
                {
-                  for (Annotation annotation : cmdr.getAnnotations())
+                  Annotation[] canns = cmdr.getAnnotations();
+                  for (int i = 0 ; i < canns.length ; i++)
                   {
-                     for(T plugin : getPlugins(ElementType.METHOD, annotation, METHOD_FILTER, annotationClasses))
+                     for(T plugin : getPlugins(ElementType.METHOD, canns[i], METHOD_FILTER, annotationClasses))
                      {
                         if (isApplyPhase)
-                           applyPlugin(plugin, annotation, mi, cmdr, handle);
+                           applyPlugin(plugin, canns[i], mi, cmdr, handle);
                         else
-                           cleanPlugin(plugin, annotation, mi, cmdr, handle);
+                           cleanPlugin(plugin, canns[i], mi, cmdr, handle);
                      }
                   }
                }
@@ -554,14 +557,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(mis);
                if (cmdr != null)
                {
-                  for (Annotation annotation : cmdr.getAnnotations())
+                  Annotation[] canns = cmdr.getAnnotations();
+                  for (int i = 0 ; i < canns.length ; i++)
                   {
-                     for(T plugin : getPlugins(ElementType.METHOD, annotation, METHOD_FILTER, annotationClasses))
+                     for(T plugin : getPlugins(ElementType.METHOD, canns[i], METHOD_FILTER, annotationClasses))
                      {                  
                         if (isApplyPhase)
-                           applyPlugin(plugin, annotation, smi, cmdr, handle);
+                           applyPlugin(plugin, canns[i], smi, cmdr, handle);
                         else
-                           cleanPlugin(plugin, annotation, smi, cmdr, handle);
+                           cleanPlugin(plugin, canns[i], smi, cmdr, handle);
                      }
                   }
                }
@@ -610,14 +614,15 @@
       MetaData cmdr = retrieval.getComponentMetaData(sis);
       if (cmdr != null)
       {
-         for (Annotation annotation : cmdr.getAnnotations())
+         Annotation[] canns = cmdr.getAnnotations();
+         for (int i = 0 ; i < canns.length ; i++)
          {
-            for(T plugin : getPlugins(ElementType.METHOD, annotation, PROPERTY_FILTER, annotationClasses))
+            for(T plugin : getPlugins(ElementType.METHOD, canns[i], PROPERTY_FILTER, annotationClasses))
             {
                if (isApplyPhase)
-                  applyPlugin(plugin, annotation, pi, cmdr, handle);
+                  applyPlugin(plugin, canns[i], pi, cmdr, handle);
                else
-                  cleanPlugin(plugin, annotation, pi, cmdr, handle);
+                  cleanPlugin(plugin, canns[i], pi, cmdr, handle);
             }
          }
       }

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/ObjectWithLotsOfProperties.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/ObjectWithLotsOfProperties.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/ObjectWithLotsOfProperties.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/ObjectWithLotsOfProperties.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,582 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.benchmark.support;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ObjectWithLotsOfProperties
+{
+   String property1;
+   String property2;
+   String property3;
+   String property4;
+   String property5;
+   String property6;
+   String property7;
+   String property8;
+   String property9;
+   String property10;
+   String property11;
+   String property12;
+   String property13;
+   String property14;
+   String property15;
+   String property16;
+   String property17;
+   String property18;
+   String property19;
+   String property20;
+   String property21;
+   String property22;
+   String property23;
+   String property24;
+   String property25;
+   String property26;
+   String property27;
+   String property28;
+   String property29;
+   String property30;
+   String property31;
+   String property32;
+   String property33;
+   String property34;
+   String property35;
+   String property36;
+   String property37;
+   String property38;
+   String property39;
+   String property40;
+   String property41;
+   String property42;
+   String property43;
+   String property44;
+   String property45;
+   String property46;
+   String property47;
+   String property48;
+   String property49;
+   String property50;
+   
+   @SomeAnnotation
+   public String getProperty1()
+   {
+      return property1;
+   }
+   @SomeAnnotation
+   public void setProperty1(String property1)
+   {
+      this.property1 = property1;
+   }
+   @SomeAnnotation
+   public String getProperty2()
+   {
+      return property2;
+   }
+   @SomeAnnotation
+   public void setProperty2(String property2)
+   {
+      this.property2 = property2;
+   }
+   @SomeAnnotation
+   public String getProperty3()
+   {
+      return property3;
+   }
+   @SomeAnnotation
+   public void setProperty3(String property3)
+   {
+      this.property3 = property3;
+   }
+   @SomeAnnotation
+   public String getProperty4()
+   {
+      return property4;
+   }
+   @SomeAnnotation
+   public void setProperty4(String property4)
+   {
+      this.property4 = property4;
+   }
+   @SomeAnnotation
+   public String getProperty5()
+   {
+      return property5;
+   }
+   @SomeAnnotation
+   public void setProperty5(String property5)
+   {
+      this.property5 = property5;
+   }
+   @SomeAnnotation
+   public String getProperty6()
+   {
+      return property6;
+   }
+   @SomeAnnotation
+   public void setProperty6(String property6)
+   {
+      this.property6 = property6;
+   }
+   @SomeAnnotation
+   public String getProperty7()
+   {
+      return property7;
+   }
+   @SomeAnnotation
+   public void setProperty7(String property7)
+   {
+      this.property7 = property7;
+   }
+   @SomeAnnotation
+   public String getProperty8()
+   {
+      return property8;
+   }
+   @SomeAnnotation
+   public void setProperty8(String property8)
+   {
+      this.property8 = property8;
+   }
+   @SomeAnnotation
+   public String getProperty9()
+   {
+      return property9;
+   }
+   @SomeAnnotation
+   public void setProperty9(String property9)
+   {
+      this.property9 = property9;
+   }
+   @SomeAnnotation
+   public String getProperty10()
+   {
+      return property10;
+   }
+   @SomeAnnotation
+   public void setProperty10(String property10)
+   {
+      this.property10 = property10;
+   }
+   @SomeAnnotation
+   public String getProperty11()
+   {
+      return property11;
+   }
+   @SomeAnnotation
+   public void setProperty11(String property11)
+   {
+      this.property11 = property11;
+   }
+   @SomeAnnotation
+   public String getProperty12()
+   {
+      return property12;
+   }
+   @SomeAnnotation
+   public void setProperty12(String property12)
+   {
+      this.property12 = property12;
+   }
+   @SomeAnnotation
+   public String getProperty13()
+   {
+      return property13;
+   }
+   @SomeAnnotation
+   public void setProperty13(String property13)
+   {
+      this.property13 = property13;
+   }
+   @SomeAnnotation
+   public String getProperty14()
+   {
+      return property14;
+   }
+   @SomeAnnotation
+   public void setProperty14(String property14)
+   {
+      this.property14 = property14;
+   }
+   @SomeAnnotation
+   public String getProperty15()
+   {
+      return property15;
+   }
+   @SomeAnnotation
+   public void setProperty15(String property15)
+   {
+      this.property15 = property15;
+   }
+   @SomeAnnotation
+   public String getProperty16()
+   {
+      return property16;
+   }
+   @SomeAnnotation
+   public void setProperty16(String property16)
+   {
+      this.property16 = property16;
+   }
+   @SomeAnnotation
+   public String getProperty17()
+   {
+      return property17;
+   }
+   @SomeAnnotation
+   public void setProperty17(String property17)
+   {
+      this.property17 = property17;
+   }
+   @SomeAnnotation
+   public String getProperty18()
+   {
+      return property18;
+   }
+   @SomeAnnotation
+   public void setProperty18(String property18)
+   {
+      this.property18 = property18;
+   }
+   @SomeAnnotation
+   public String getProperty19()
+   {
+      return property19;
+   }
+   @SomeAnnotation
+   public void setProperty19(String property19)
+   {
+      this.property19 = property19;
+   }
+   @SomeAnnotation
+   public String getProperty20()
+   {
+      return property20;
+   }
+   @SomeAnnotation
+   public void setProperty20(String property20)
+   {
+      this.property20 = property20;
+   }
+   @SomeAnnotation
+   public String getProperty21()
+   {
+      return property21;
+   }
+   @SomeAnnotation
+   public void setProperty21(String property21)
+   {
+      this.property21 = property21;
+   }
+   @SomeAnnotation
+   public String getProperty22()
+   {
+      return property22;
+   }
+   @SomeAnnotation
+   public void setProperty22(String property22)
+   {
+      this.property22 = property22;
+   }
+   @SomeAnnotation
+   public String getProperty23()
+   {
+      return property23;
+   }
+   @SomeAnnotation
+   public void setProperty23(String property23)
+   {
+      this.property23 = property23;
+   }
+   @SomeAnnotation
+   public String getProperty24()
+   {
+      return property24;
+   }
+   @SomeAnnotation
+   public void setProperty24(String property24)
+   {
+      this.property24 = property24;
+   }
+   @SomeAnnotation
+   public String getProperty25()
+   {
+      return property25;
+   }
+   @SomeAnnotation
+   public void setProperty25(String property25)
+   {
+      this.property25 = property25;
+   }
+   @SomeAnnotation
+   public String getProperty26()
+   {
+      return property26;
+   }
+   @SomeAnnotation
+   public void setProperty26(String property26)
+   {
+      this.property26 = property26;
+   }
+   @SomeAnnotation
+   public String getProperty27()
+   {
+      return property27;
+   }
+   @SomeAnnotation
+   public void setProperty27(String property27)
+   {
+      this.property27 = property27;
+   }
+   @SomeAnnotation
+   public String getProperty28()
+   {
+      return property28;
+   }
+   @SomeAnnotation
+   public void setProperty28(String property28)
+   {
+      this.property28 = property28;
+   }
+   @SomeAnnotation
+   public String getProperty29()
+   {
+      return property29;
+   }
+   @SomeAnnotation
+   public void setProperty29(String property29)
+   {
+      this.property29 = property29;
+   }
+   @SomeAnnotation
+   public String getProperty30()
+   {
+      return property30;
+   }
+   @SomeAnnotation
+   public void setProperty30(String property30)
+   {
+      this.property30 = property30;
+   }
+   @SomeAnnotation
+   public String getProperty31()
+   {
+      return property31;
+   }
+   @SomeAnnotation
+   public void setProperty31(String property31)
+   {
+      this.property31 = property31;
+   }
+   @SomeAnnotation
+   public String getProperty32()
+   {
+      return property32;
+   }
+   @SomeAnnotation
+   public void setProperty32(String property32)
+   {
+      this.property32 = property32;
+   }
+   @SomeAnnotation
+   public String getProperty33()
+   {
+      return property33;
+   }
+   @SomeAnnotation
+   public void setProperty33(String property33)
+   {
+      this.property33 = property33;
+   }
+   @SomeAnnotation
+   public String getProperty34()
+   {
+      return property34;
+   }
+   @SomeAnnotation
+   public void setProperty34(String property34)
+   {
+      this.property34 = property34;
+   }
+   @SomeAnnotation
+   public String getProperty35()
+   {
+      return property35;
+   }
+   @SomeAnnotation
+   public void setProperty35(String property35)
+   {
+      this.property35 = property35;
+   }
+   @SomeAnnotation
+   public String getProperty36()
+   {
+      return property36;
+   }
+   @SomeAnnotation
+   public void setProperty36(String property36)
+   {
+      this.property36 = property36;
+   }
+   @SomeAnnotation
+   public String getProperty37()
+   {
+      return property37;
+   }
+   @SomeAnnotation
+   public void setProperty37(String property37)
+   {
+      this.property37 = property37;
+   }
+   @SomeAnnotation
+   public String getProperty38()
+   {
+      return property38;
+   }
+   @SomeAnnotation
+   public void setProperty38(String property38)
+   {
+      this.property38 = property38;
+   }
+   @SomeAnnotation
+   public String getProperty39()
+   {
+      return property39;
+   }
+   @SomeAnnotation
+   public void setProperty39(String property39)
+   {
+      this.property39 = property39;
+   }
+   @SomeAnnotation
+   public String getProperty40()
+   {
+      return property40;
+   }
+   @SomeAnnotation
+   public void setProperty40(String property40)
+   {
+      this.property40 = property40;
+   }
+   @SomeAnnotation
+   public String getProperty41()
+   {
+      return property41;
+   }
+   @SomeAnnotation
+   public void setProperty41(String property41)
+   {
+      this.property41 = property41;
+   }
+   @SomeAnnotation
+   public String getProperty42()
+   {
+      return property42;
+   }
+   @SomeAnnotation
+   public void setProperty42(String property42)
+   {
+      this.property42 = property42;
+   }
+   @SomeAnnotation
+   public String getProperty43()
+   {
+      return property43;
+   }
+   @SomeAnnotation
+   public void setProperty43(String property43)
+   {
+      this.property43 = property43;
+   }
+   @SomeAnnotation
+   public String getProperty44()
+   {
+      return property44;
+   }
+   @SomeAnnotation
+   public void setProperty44(String property44)
+   {
+      this.property44 = property44;
+   }
+   @SomeAnnotation
+   public String getProperty45()
+   {
+      return property45;
+   }
+   @SomeAnnotation
+   public void setProperty45(String property45)
+   {
+      this.property45 = property45;
+   }
+   @SomeAnnotation
+   public String getProperty46()
+   {
+      return property46;
+   }
+   @SomeAnnotation
+   public void setProperty46(String property46)
+   {
+      this.property46 = property46;
+   }
+   @SomeAnnotation
+   public String getProperty47()
+   {
+      return property47;
+   }
+   @SomeAnnotation
+   public void setProperty47(String property47)
+   {
+      this.property47 = property47;
+   }
+   @SomeAnnotation
+   public String getProperty48()
+   {
+      return property48;
+   }
+   @SomeAnnotation
+   public void setProperty48(String property48)
+   {
+      this.property48 = property48;
+   }
+   @SomeAnnotation
+   public String getProperty49()
+   {
+      return property49;
+   }
+   @SomeAnnotation
+   public void setProperty49(String property49)
+   {
+      this.property49 = property49;
+   }
+   @SomeAnnotation
+   public String getProperty50()
+   {
+      return property50;
+   }
+   @SomeAnnotation
+   public void setProperty50(String property50)
+   {
+      this.property50 = property50;
+   }
+}

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/SomeAnnotation.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/SomeAnnotation.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/SomeAnnotation.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/SomeAnnotation.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,36 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.benchmark.support;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface SomeAnnotation
+{
+
+}

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/StartStopObjectWithLotsofMethods.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/StartStopObjectWithLotsofMethods.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/StartStopObjectWithLotsofMethods.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/support/StartStopObjectWithLotsofMethods.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.benchmark.support;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class StartStopObjectWithLotsofMethods
+{
+   public boolean started;
+   public boolean created;
+   
+   public void method1() {}
+   public void method2() {}
+   public void method3() {}
+   public void method4() {}
+   public void method5() {}
+   public void method6() {}
+   public void method7() {}
+   public void method8() {}
+   public void method9() {}
+   public void method10() {}
+   public void method11() {}
+   public void method12() {}
+   public void method13() {}
+   public void method14() {}
+   public void method15() {}
+   public void method16() {}
+   public void method17() {}
+   public void method18() {}
+   public void method19() {}
+   public void method20() {}
+   public void method21() {}
+   public void method22() {}
+   public void method23() {}
+   public void method24() {}
+   public void method25() {}
+   public void method26() {}
+   public void method27() {}
+   public void method28() {}
+   public void method29() {}
+   public void method30() {}
+   public void method31() {}
+   public void method32() {}
+   public void method33() {}
+   public void method34() {}
+   public void method35() {}
+   public void method36() {}
+   public void method37() {}
+   public void method38() {}
+   public void method39() {}
+
+   public void start()
+   {
+      started = true;
+   }
+   
+   public void create()
+   {
+      created = true;
+   }
+   
+}

Modified: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/AbstractBenchmark.java
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/AbstractBenchmark.java	2010-02-22 18:21:50 UTC (rev 101259)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/AbstractBenchmark.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -24,6 +24,7 @@
 import java.util.List;
 
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 
@@ -44,6 +45,7 @@
    public void testBenchmark() throws Throwable
    {
       List<BeanMetaData> metaDatas = setupContexts();
+      assertEquals(iterations, metaDatas.size());
       
       long start = System.currentTimeMillis();
       for (BeanMetaData bmd : metaDatas)
@@ -53,10 +55,17 @@
       
       for (BeanMetaData bmd : metaDatas)
       {
-         assertNotNull(getControllerContext(bmd.getName(), ControllerState.INSTALLED));
+         ControllerContext ctx = getControllerContext(bmd.getName(), ControllerState.INSTALLED); 
+         assertNotNull(ctx);
+         extraCheck(ctx);
       }
    }
    
    protected abstract List<BeanMetaData> setupContexts();
    
+   protected void extraCheck(ControllerContext context)
+   {
+      
+   }
+   
 }

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/ObjectWithLotsOfPropertiesBenchmark.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/ObjectWithLotsOfPropertiesBenchmark.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/ObjectWithLotsOfPropertiesBenchmark.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/ObjectWithLotsOfPropertiesBenchmark.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,71 @@
+   
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.benchmark.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.test.kernel.benchmark.support.ObjectWithLotsOfProperties;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ObjectWithLotsOfPropertiesBenchmark extends AbstractBenchmark
+{
+   public ObjectWithLotsOfPropertiesBenchmark(String name)
+   {
+      super(name);
+      super.iterations = 1000;
+   }
+
+   @Override
+   protected List<BeanMetaData> setupContexts()
+   {
+      List<BeanMetaData> beans = new ArrayList<BeanMetaData>(iterations);
+      for (int i = 0 ; i < iterations ; i++)
+      {
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean" + i, ObjectWithLotsOfProperties.class.getName());
+         for (int j = 1 ; j <= 50 ; j++)
+            builder.addPropertyMetaData("property" + j, "Bean" + + i + j);
+         beans.add(builder.getBeanMetaData());
+      }
+      return beans;
+   }
+   
+   @Override
+   protected void extraCheck(ControllerContext ctx)
+   {
+      ObjectWithLotsOfProperties obj = (ObjectWithLotsOfProperties)ctx.getTarget();
+      assertEquals(ctx.getName() + "1", obj.getProperty1());
+      assertEquals(ctx.getName() + "5", obj.getProperty5());
+      assertEquals(ctx.getName() + "25", obj.getProperty25());
+      assertEquals(ctx.getName() + "37", obj.getProperty37());
+      assertEquals(ctx.getName() + "48", obj.getProperty48());
+      assertEquals(ctx.getName() + "50", obj.getProperty50());
+   }
+}

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/StartStopObjectWithLotsOfMethodsBenchmark.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/StartStopObjectWithLotsOfMethodsBenchmark.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/StartStopObjectWithLotsOfMethodsBenchmark.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/benchmark/test/StartStopObjectWithLotsOfMethodsBenchmark.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,65 @@
+   
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.benchmark.test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.test.kernel.benchmark.support.StartStopObjectWithLotsofMethods;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class StartStopObjectWithLotsOfMethodsBenchmark extends AbstractBenchmark
+{
+   public StartStopObjectWithLotsOfMethodsBenchmark(String name)
+   {
+      super(name);
+      super.iterations = 1000;
+   }
+
+   @Override
+   protected List<BeanMetaData> setupContexts()
+   {
+      List<BeanMetaData> beans = new ArrayList<BeanMetaData>(iterations);
+      for (int i = 0 ; i < iterations ; i++)
+      {
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean" + i, StartStopObjectWithLotsofMethods.class.getName());
+         beans.add(builder.getBeanMetaData());
+      }
+      return beans;
+   }
+   
+   @Override
+   protected void extraCheck(ControllerContext ctx)
+   {
+      StartStopObjectWithLotsofMethods obj = (StartStopObjectWithLotsofMethods)ctx.getTarget();
+      assertTrue(obj.started);
+      assertTrue(obj.created);
+   }
+}

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/dependency/test/UninstallNoOptionalContextDependencyTestCase.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,148 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, 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.dependency.test;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+import junit.framework.Test;
+
+import org.jboss.beans.metadata.api.model.InjectOption;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.plugins.action.ControllerContextAction;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.plugins.dependency.ConfigureAction;
+import org.jboss.kernel.plugins.dependency.KernelControllerContextAction;
+import org.jboss.kernel.plugins.dependency.KernelControllerContextActions;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.kernel.dependency.support.SimpleBeanImpl;
+import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependency;
+import org.jboss.test.kernel.dependency.support.SimpleBeanWithDependencyImpl;
+import org.jboss.test.kernel.deployment.support.LoggerDecorator;
+
+/**
+ * Constructor Dependency Test Case.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 64400 $
+ */
+public class UninstallNoOptionalContextDependencyTestCase extends OldAbstractKernelDependencyTest
+{
+   public static Test suite()
+   {
+      return suite(UninstallNoOptionalContextDependencyTestCase.class);
+   }
+
+   public UninstallNoOptionalContextDependencyTestCase(String name) throws Throwable
+   {
+      super(name);
+   }
+
+   public UninstallNoOptionalContextDependencyTestCase(String name, boolean xmltest) throws Throwable
+   {
+      super(name, xmltest);
+   }
+
+   public void testUninstallOptionalInjectionNotPresent() throws Throwable
+   {
+      //Get hold of the ConfigureAction instance - UGLY but needed so we can replace its logger :-)
+      KernelControllerContextActions actions = KernelControllerContextActions.getInstance();
+      Field field =  getField(actions.getClass().getSuperclass(), "actions");
+      Map<ControllerState, ControllerContextAction> actionsMap = (Map<ControllerState, ControllerContextAction>)field.get(actions);
+      ConfigureAction action = (ConfigureAction)actionsMap.get(ControllerState.CONFIGURED);
+      Class<?> clazz = action.getClass();
+      while (clazz != null && clazz != KernelControllerContextAction.class)
+         clazz = clazz.getSuperclass();
+      assertNotNull(clazz);
+      field = getField(clazz, "log");
+
+      Logger old = (Logger) field.get(action);
+      LoggerDecorator newLogger = new LoggerDecorator(old);
+      try
+      {
+         field.set(action, newLogger);
+         uninstallOptionalInjectionNotPresent();
+         ControllerContext context1 = assertInstall(0, "Name1");
+         
+         SimpleBeanWithDependency bean1 = (SimpleBeanWithDependency) context1.getTarget();
+         assertNotNull(bean1);
+         assertNull(bean1.getSimpleBean());
+         
+         uninstall("Name1");
+         
+         assertFalse(newLogger.isWarnErrorCalled());
+      }
+      finally
+      {
+         field.set(action, old);
+      }
+   }
+
+   public void uninstallOptionalInjectionNotPresent() throws Throwable
+   {
+      BeanMetaDataBuilder builder1 = BeanMetaDataBuilder.createBuilder("Name1", SimpleBeanWithDependencyImpl.class.getName());
+      AbstractInjectionValueMetaData injection = new AbstractInjectionValueMetaData();
+      injection.setInjectionOption(InjectOption.OPTIONAL);
+      builder1.addPropertyMetaData("simpleBean", injection);
+      
+      BeanMetaDataBuilder builder2 = BeanMetaDataBuilder.createBuilder("Name2", SimpleBeanImpl.class.getName());
+
+      setBeanMetaDatas(new BeanMetaData[] {builder1.getBeanMetaData(), builder2.getBeanMetaData()});
+   }
+
+   public static Field getField(Class<?> clazz, String name)
+   {
+      Field field = null;
+       
+      while (field == null && clazz != null)
+      {
+         try
+         {
+            field = clazz.getDeclaredField(name);
+            field.setAccessible(true);
+            break;
+         }
+         catch (Exception e)
+         {
+         }
+         clazz = clazz.getSuperclass();
+      }
+
+      if (field == null)
+         throw new IllegalStateException("No field called '" + name + "' in " + clazz.getName());
+      return field; 
+   }
+
+   /**
+    * Don't use security for this test
+    */
+   public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+   {
+      AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
+      return delegate;
+   }
+
+}
\ No newline at end of file

Copied: projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java (from rev 101247, projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java)
===================================================================
--- projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java	                        (rev 0)
+++ projects/kernel/branches/jsr330/kernel/src/test/java/org/jboss/test/kernel/deployment/support/LoggerDecorator.java	2010-02-22 18:27:28 UTC (rev 101260)
@@ -0,0 +1,451 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.support;
+
+import java.lang.reflect.Field;
+
+import org.jboss.logging.Logger;
+import org.jboss.logging.LoggerPlugin;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class LoggerDecorator extends Logger
+{
+   private static final long serialVersionUID = 1L;
+   
+   Logger delegate;
+   boolean warnErrorCalled;
+   
+   
+   public LoggerDecorator(Logger delegate)
+   {
+      // FIXME LoggerDecorator constructor
+      super(delegate.getName());
+      this.delegate = delegate;
+   }
+
+   public boolean isWarnErrorCalled()
+   {
+      return warnErrorCalled;
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#debug(java.lang.Object, java.lang.Throwable)
+    */
+   public void debug(Object message, Throwable t)
+   {
+      delegate.debug(message, t);
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#debug(java.lang.Object)
+    */
+   public void debug(Object message)
+   {
+      delegate.debug(message);
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#debug(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void debug(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.debug(loggerFqcn, message, t);
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#debugf(java.lang.String, java.lang.Object[])
+    */
+   public void debugf(String format, Object... params)
+   {
+      delegate.debugf(format, params);
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#debugf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void debugf(Throwable t, String format, Object... params)
+   {
+      delegate.debugf(t, format, params);
+   }
+
+   /**
+    * @param obj
+    * @return
+    * @see java.lang.Object#equals(java.lang.Object)
+    */
+   public boolean equals(Object obj)
+   {
+      return delegate.equals(obj);
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#error(java.lang.Object, java.lang.Throwable)
+    */
+   public void error(Object message, Throwable t)
+   {
+      delegate.error(message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#error(java.lang.Object)
+    */
+   public void error(Object message)
+   {
+      delegate.error(message);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#error(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void error(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.error(loggerFqcn, message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#errorf(java.lang.String, java.lang.Object[])
+    */
+   public void errorf(String format, Object... params)
+   {
+      delegate.errorf(format, params);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#errorf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void errorf(Throwable t, String format, Object... params)
+   {
+      delegate.errorf(t, format, params);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#fatal(java.lang.Object, java.lang.Throwable)
+    */
+   public void fatal(Object message, Throwable t)
+   {
+      delegate.fatal(message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#fatal(java.lang.Object)
+    */
+   public void fatal(Object message)
+   {
+      delegate.fatal(message);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#fatal(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void fatal(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.fatal(loggerFqcn, message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#fatalf(java.lang.String, java.lang.Object[])
+    */
+   public void fatalf(String format, Object... params)
+   {
+      delegate.fatalf(format, params);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#fatalf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void fatalf(Throwable t, String format, Object... params)
+   {
+      delegate.fatalf(t, format, params);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @return
+    * @see org.jboss.logging.Logger#getLoggerPlugin()
+    */
+   public LoggerPlugin getLoggerPlugin()
+   {
+      return delegate.getLoggerPlugin();
+   }
+
+   /**
+    * @return
+    * @see org.jboss.logging.Logger#getName()
+    */
+   public String getName()
+   {
+      return delegate.getName();
+   }
+
+   /**
+    * @return
+    * @see java.lang.Object#hashCode()
+    */
+   public int hashCode()
+   {
+      return delegate.hashCode();
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#info(java.lang.Object, java.lang.Throwable)
+    */
+   public void info(Object message, Throwable t)
+   {
+      delegate.info(message, t);
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#info(java.lang.Object)
+    */
+   public void info(Object message)
+   {
+      delegate.info(message);
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#info(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void info(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.info(loggerFqcn, message, t);
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#infof(java.lang.String, java.lang.Object[])
+    */
+   public void infof(String format, Object... params)
+   {
+      delegate.infof(format, params);
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#infof(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void infof(Throwable t, String format, Object... params)
+   {
+      delegate.infof(t, format, params);
+   }
+
+   /**
+    * @return
+    * @deprecated
+    * @see org.jboss.logging.Logger#isDebugEnabled()
+    */
+   public boolean isDebugEnabled()
+   {
+      return delegate.isDebugEnabled();
+   }
+
+   /**
+    * @return
+    * @deprecated
+    * @see org.jboss.logging.Logger#isInfoEnabled()
+    */
+   public boolean isInfoEnabled()
+   {
+      return delegate.isInfoEnabled();
+   }
+
+   /**
+    * @return
+    * @see org.jboss.logging.Logger#isTraceEnabled()
+    */
+   public boolean isTraceEnabled()
+   {
+      return delegate.isTraceEnabled();
+   }
+
+   /**
+    * @return
+    * @see java.lang.Object#toString()
+    */
+   public String toString()
+   {
+      return delegate.toString();
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#trace(java.lang.Object, java.lang.Throwable)
+    */
+   public void trace(Object message, Throwable t)
+   {
+      delegate.trace(message, t);
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#trace(java.lang.Object)
+    */
+   public void trace(Object message)
+   {
+      delegate.trace(message);
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#trace(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void trace(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.trace(loggerFqcn, message, t);
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#tracef(java.lang.String, java.lang.Object[])
+    */
+   public void tracef(String format, Object... params)
+   {
+      delegate.tracef(format, params);
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#tracef(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void tracef(Throwable t, String format, Object... params)
+   {
+      delegate.tracef(t, format, params);
+   }
+
+   /**
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#warn(java.lang.Object, java.lang.Throwable)
+    */
+   public void warn(Object message, Throwable t)
+   {
+      delegate.warn(message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param message
+    * @see org.jboss.logging.Logger#warn(java.lang.Object)
+    */
+   public void warn(Object message)
+   {
+      delegate.warn(message);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param loggerFqcn
+    * @param message
+    * @param t
+    * @see org.jboss.logging.Logger#warn(java.lang.String, java.lang.Object, java.lang.Throwable)
+    */
+   public void warn(String loggerFqcn, Object message, Throwable t)
+   {
+      delegate.warn(loggerFqcn, message, t);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#warnf(java.lang.String, java.lang.Object[])
+    */
+   public void warnf(String format, Object... params)
+   {
+      delegate.warnf(format, params);
+      warnErrorCalled = true;
+   }
+
+   /**
+    * @param t
+    * @param format
+    * @param params
+    * @see org.jboss.logging.Logger#warnf(java.lang.Throwable, java.lang.String, java.lang.Object[])
+    */
+   public void warnf(Throwable t, String format, Object... params)
+   {
+      delegate.warnf(t, format, params);
+      warnErrorCalled = true;
+   }
+
+   
+}




More information about the jboss-cvs-commits mailing list