[jboss-cvs] JBossAS SVN: r104317 - in projects/jboss-reflect/trunk/src: main/java/org/jboss/reflect/plugins/javassist and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 29 10:54:13 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-04-29 10:54:09 -0400 (Thu, 29 Apr 2010)
New Revision: 104317

Added:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/ErrorCheckingMemberFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/support/ClassInfoBeanWithArrayMembers.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoWithArrayMembersTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/IntrospectionClassInfoWithArrayMembersTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/JavassistClassInfoWithArrayMembersTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractMemberFactoryArrayUnitTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryArrayUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryBoxedInterfaceUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivatePrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryTestSuite.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/GeneratedMemberFactoryTestSuite.java
Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectionUtils.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SecurityActions.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistBehaviorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistConstructorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistFieldFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMethodFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistConstructor.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistField.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistMethod.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultMemberFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMemberFactoryTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodAndFieldFactoryTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFactoryTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFieldAndConstructorFactoryTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryArrayUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryBoxedInterfaceUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivatePrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticBoxedUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryTestSuite.java
Log:
[JBREFLECT-6] [JBREFLECT-121]
6: Remove the checking from the generated byte code and put in wrapper classes created by ErrorCheckingMemberFactory. Test that the same errors are reported from ErrorCheckingMemberFactory as from ReflectionUtils.
121: Fix bug where the SignatureKeys used to cache constructor/methods in JavassistTypeInfo.getDeclaredMethods()/-Constructors() are different from those created when passing in TypeInfos to getDeclaredMethod()/-Constructor()


Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectionUtils.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectionUtils.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectionUtils.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -25,6 +25,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -66,6 +67,10 @@
             if (clazz.isInstance(target) == false)
                throw new IllegalArgumentException("Wrong target. " + target.getClass().getName() + " is not a " + clazz.getName());
          }
+         else if (target == null && !Modifier.isStatic(method.getModifiers()))
+         {
+            throw new IllegalArgumentException("Null target calling: " + method);
+         }
          throw handleErrors(method.getName(), Strings.defaultToString(target), method.getParameterTypes(), arguments, t);
       }
    }
@@ -166,6 +171,8 @@
    {
       if (field == null)
          throw new IllegalArgumentException("Null field");
+      if (target == null && !Modifier.isStatic(field.getModifiers()))
+         throw new IllegalArgumentException("Null target getting " + field.getDeclaringClass().getName() + "." + field.getName());
 
       try
       {
@@ -190,6 +197,8 @@
    {
       if (field == null)
          throw new IllegalArgumentException("Null field");
+      if (target == null && !Modifier.isStatic(field.getModifiers()))
+         throw new IllegalArgumentException("Null target getting " + field.getDeclaringClass().getName() + "." + field.getName());
 
       try
       {
@@ -417,7 +426,7 @@
       if (t instanceof IllegalArgumentException)
       {
          Class<?> clazz = field.getDeclaringClass();
-         if (clazz.isInstance(target) == false)
+         if (clazz.isInstance(target) == false && !(Modifier.isStatic(field.getModifiers()) && target == null))
             throw new IllegalArgumentException("Wrong target. " + target.getClass().getName() + " is not a " + clazz.getName());
 
          String valueType = null;

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -31,10 +31,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import javassist.CtConstructor;
-import javassist.CtField;
-import javassist.CtMethod;
-
 import org.jboss.reflect.plugins.javassist.bytecode.JavassistMemberFactory;
 import org.jboss.reflect.plugins.javassist.defaultmember.DefaultMemberFactory;
 import org.jboss.reflect.plugins.javassist.metrics.MetricsJavassistConstructor;
@@ -70,9 +66,6 @@
 {
    public static final JavassistReflectionFactory INSTANCE;
    
-   /** Whether to check arguments */
-   private static final boolean check;
-   
    /** Whether to output generated classes to disk */
    private static final boolean debug;
    
@@ -85,7 +78,6 @@
    protected static final Class<?> MAGIC_ACCESSOR_IMPL;
    static
    {
-      check = initBooleanProperty(JavassistReflectionFactory.class.getName() + ".check");
       debug = initBooleanProperty(JavassistReflectionFactory.class.getName() + ".debug");
       enableMetrics = initBooleanProperty(JavassistReflectionFactory.class.getName() + ".enableMetrics");
       forceGenerate = initForceGenerate(JavassistReflectionFactory.class.getName() + ".file");
@@ -197,7 +189,7 @@
    {
       String sig = JavassistUtil.getSignature(info.getCtMethod());
       JavassistMethod method = generateAccessor(sig) ?
-            JavassistMemberFactory.createJavassistMethod(MAGIC_ACCESSOR_IMPL, info.getCtMethod(), check, debug) :
+            JavassistMemberFactory.createJavassistMethod(MAGIC_ACCESSOR_IMPL, info.getCtMethod(), debug) :
                DefaultMemberFactory.createJavassistMethod(info);
       
       if (enableMetrics)
@@ -217,7 +209,7 @@
    {
       String sig = JavassistUtil.getSignature(info.getCtConstructor());
       JavassistConstructor ctor = generateAccessor(sig) ?
-            JavassistMemberFactory.createJavassistConstructor(MAGIC_ACCESSOR_IMPL, info.getCtConstructor(), check, debug) :
+            JavassistMemberFactory.createJavassistConstructor(MAGIC_ACCESSOR_IMPL, info.getCtConstructor(), debug) :
                DefaultMemberFactory.createJavassistConstructor(info);
             
       if (enableMetrics)
@@ -237,7 +229,7 @@
    {
       String sig = JavassistUtil.getSignature(info.getCtField());
       JavassistField field = generateAccessor(sig) ?
-            JavassistMemberFactory.createJavassistField(MAGIC_ACCESSOR_IMPL, info.getCtField(), check, debug) :
+            JavassistMemberFactory.createJavassistField(MAGIC_ACCESSOR_IMPL, info.getCtField(), debug) :
                DefaultMemberFactory.createJavassistField(info);
             
       if (enableMetrics)

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -57,6 +57,7 @@
 import org.jboss.reflect.spi.MutableFieldInfo;
 import org.jboss.reflect.spi.MutableMethodInfo;
 import org.jboss.reflect.spi.PackageInfo;
+import org.jboss.reflect.spi.PrimitiveInfo;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.reflect.spi.TypeInfoFactory;
 import org.jboss.util.JBossStringBuilder;
@@ -639,7 +640,7 @@
          CtClass[] parameterTypes = constructor.getParameterTypes();
          String[] params = new String[parameterTypes.length];
          for (int i = 0; i < params.length; ++i)
-            params[i] = parameterTypes[i].getName();
+            params[i] = getParameterTypeStringForSignature(parameterTypes[i]);
          SignatureKey key = new SignatureKey(null, params);
          JavassistConstructorInfo info = new JavassistConstructorInfo(factory, this, constructor);
          synchronized (constructors)
@@ -723,7 +724,9 @@
          CtClass[] parameterTypes = method.getParameterTypes();
          String[] params = new String[parameterTypes.length];
          for (int i = 0; i < params.length; ++i)
-            params[i] = parameterTypes[i].getName();
+         {
+            params[i] = getParameterTypeStringForSignature(parameterTypes[i]);
+         }
          SignatureKey key = new SignatureKey(method.getName(), params);
          return generateMethodInfo(key, method);
       }
@@ -732,7 +735,7 @@
          throw JavassistTypeInfoFactoryImpl.raiseClassNotFound("for method " + method.getName(), e);
       }
    }
-
+   
    /**
     * Generate method info
     * 
@@ -1290,4 +1293,34 @@
       }
    }
 
+   /**
+    * Constructs the string for a parameter for a signature in the same way as TypeInfo does
+    * 
+    * @param clazz
+    * @return the string
+    */
+   protected String getParameterTypeStringForSignature(CtClass clazz) throws NotFoundException
+   {
+      if (clazz.isArray())
+      {
+         StringBuilder sb = new StringBuilder();
+         while (clazz.isArray())
+         {
+            sb.append("[");
+            clazz = clazz.getComponentType();
+         }
+         if (!clazz.isPrimitive())
+         {
+            sb.append("L");
+            sb.append(clazz.getName());
+            sb.append(";");
+         }
+         else
+            sb.append(PrimitiveInfo.getPrimativeArrayType(clazz.getName()));
+         
+         return sb.toString();
+      }
+      else
+         return clazz.getName();
+   }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -285,7 +285,7 @@
     * @param clazz the class
     * @return the converted name
     */
-   protected String convertName(CtClass clazz)
+   protected static String convertName(CtClass clazz)
    {
       CtClass temp = clazz;
       if (temp.isArray())

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -23,17 +23,24 @@
 
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.util.Classes;
+import org.jboss.util.JBossStringBuilder;
 
 import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 
 import javassist.CannotCompileException;
 import javassist.ClassPool;
+import javassist.CtBehavior;
 import javassist.CtClass;
 import javassist.CtConstructor;
 import javassist.CtField;
 import javassist.CtMethod;
 import javassist.CtPrimitiveType;
 import javassist.NotFoundException;
+import javassist.bytecode.Descriptor;
 
 /**
  * A JavassistUtil.
@@ -202,4 +209,163 @@
       return field.getDeclaringClass().getName() + "." + field.getName();
    }
    
+   public static Field ctFieldToField(CtField field)
+   {
+      ClassLoader cl = null;
+      try
+      {
+         CtClass declaring = field.getDeclaringClass(); 
+         cl = getClassLoader(declaring);
+         Class<?> realClass = cl.loadClass(declaring.getName());
+         //TODO might need to check if the class is being generated in which case we should call ctClassToClass?
+         
+         
+         return SecurityActions.getDeclaredField(realClass, field.getName());
+      }
+      catch (ClassNotFoundException e)
+      {
+         throw new RuntimeException(field.getDeclaringClass().getName() + " not found in " + cl);
+      }
+      catch (NoSuchFieldException e)
+      {
+         throw new RuntimeException(field.getName() + " not found in " + field.getDeclaringClass().getName() );
+      }
+   }
+
+   private static Class<?> loadClass(ClassLoader cl, CtClass ctClass)
+   {
+      if (ctClass.isPrimitive())
+      {
+         return getPrimitiveClass(ctClass);
+      }
+      else if (ctClass.isArray())
+      {
+         JBossStringBuilder buffer = new JBossStringBuilder();
+         try
+         {
+            CtClass temp = ctClass;
+            int dims = 0;
+            while (temp.isArray())
+            {
+               buffer.append('[');
+               temp = temp.getComponentType();
+            }
+            if (temp.isPrimitive())
+            {
+               CtPrimitiveType primitive = (CtPrimitiveType) temp;
+               buffer.append(Character.toString(primitive.getDescriptor()));
+            }
+            else
+            {
+               buffer.append('L');
+               buffer.append(temp.getName());
+               buffer.append(';');
+            }
+            return Classes.loadClass(buffer.toString(), cl);
+         }
+         catch (NotFoundException e)
+         {
+            throw new RuntimeException(ctClass.getName(), e);
+         }
+         catch (ClassNotFoundException e)
+         {
+            throw new RuntimeException(buffer.toString() + " not found in " + cl);
+         }
+      }
+      
+      try
+      {
+         return cl.loadClass(ctClass.getName());
+         //TODO might need to check if the class is being generated in which case we should call ctClassToClass?
+      }
+      catch (ClassNotFoundException e)
+      {
+         throw new RuntimeException(ctClass.getName() + " not found in " + cl);
+      }
+   }
+   
+   private static Class<?> getPrimitiveClass(CtClass ctClass)
+   {
+      if (!ctClass.isPrimitive())
+         throw new IllegalArgumentException("Not a primitive ");
+
+      if (ctClass == CtClass.booleanType)
+         return Boolean.TYPE;
+      else if (ctClass == CtClass.byteType)
+         return Byte.TYPE;
+      else if (ctClass == CtClass.charType)
+         return Character.TYPE;
+      else if (ctClass == CtClass.doubleType)
+         return Double.TYPE;
+      else if (ctClass == CtClass.floatType)
+         return Float.TYPE;
+      else if (ctClass == CtClass.intType)
+         return Integer.TYPE;
+      else if (ctClass == CtClass.longType)
+         return Long.TYPE;
+      else if (ctClass == CtClass.shortType)
+         return Short.TYPE;
+      
+      return null;
+   }
+   
+   private static Class<?>[] loadParameters(ClassLoader cl, CtBehavior behavior)
+   {
+      CtClass[] params;
+      try
+      {
+         params = behavior.getParameterTypes();
+      }
+      catch (NotFoundException e)
+      {
+         throw new RuntimeException("Could not determine the parameters for " + behavior + " in " + behavior.getDeclaringClass().getClassPool(), e);
+      }
+      Class<?>[] real = new Class<?>[params.length];
+      
+      for (int i = 0 ; i < params.length ; i++)
+         real[i] = loadClass(cl, params[i]);
+      
+      return real;
+   }
+   
+   public static Method ctMethodToMethod(CtMethod method)
+   {
+      ClassLoader cl = null;
+      try
+      {
+         CtClass declaring = method.getDeclaringClass(); 
+         cl = getClassLoader(declaring);
+         Class<?> realClass = loadClass(cl, declaring);
+         Class<?>[] params = loadParameters(cl, method);
+         
+         return SecurityActions.getDeclaredMethod(realClass, method.getName(), params);
+      }
+      catch (NoSuchMethodException e)
+      {
+         throw new RuntimeException(method.getName() + method.getSignature() + " not found in " + method.getDeclaringClass().getName() );
+      }
+   }
+
+
+   public static Constructor<?> ctConstructorToConstructor(CtConstructor constructor)
+   {
+      ClassLoader cl = null;
+      try
+      {
+         CtClass declaring = constructor.getDeclaringClass(); 
+         cl = getClassLoader(declaring);
+         Class<?> realClass = cl.loadClass(declaring.getName());
+         Class<?>[] params = loadParameters(cl, constructor);
+         
+         return SecurityActions.getDeclaredConstructor(realClass, params);
+      }
+      catch (ClassNotFoundException e)
+      {
+         throw new RuntimeException(constructor.getDeclaringClass().getName() + " not found in " + cl);
+      }
+      catch (NoSuchMethodException e)
+      {
+         throw new RuntimeException(constructor.getName() + constructor.getSignature() + " not found in " + constructor.getDeclaringClass().getName() );
+      }
+   }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SecurityActions.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SecurityActions.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SecurityActions.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -22,6 +22,7 @@
 package org.jboss.reflect.plugins.javassist;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -104,6 +105,90 @@
       }
    }
    
+   static Field getDeclaredField(final Class<?> clazz, final String name) throws NoSuchFieldException
+   {
+      if (System.getSecurityManager() == null)
+         return clazz.getDeclaredField(name);
+      else
+      {
+         try
+         {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<Field>()
+            {
+               public Field run() throws Exception
+               {
+                  return clazz.getDeclaredField(name);
+               }
+            });
+         }
+         catch (PrivilegedActionException e)
+         {
+            Throwable cause = e.getCause();
+            if (cause instanceof NoSuchFieldException)
+               throw (NoSuchFieldException)cause;
+            if (cause instanceof RuntimeException)
+               throw (RuntimeException)cause;
+            throw new RuntimeException(cause);
+         }
+      }
+   }
+   
+   static Method getDeclaredMethod(final Class<?> clazz, final String name, final Class<?>...parameters) throws NoSuchMethodException
+   {
+      if (System.getSecurityManager() == null)
+         return clazz.getDeclaredMethod(name, parameters);
+      else
+      {
+         try
+         {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<Method>()
+            {
+               public Method run() throws Exception
+               {
+                  return clazz.getDeclaredMethod(name, parameters);
+               }
+            });
+         }
+         catch (PrivilegedActionException e)
+         {
+            Throwable cause = e.getCause();
+            if (cause instanceof NoSuchFieldException)
+               throw (NoSuchMethodException)cause;
+            if (cause instanceof RuntimeException)
+               throw (RuntimeException)cause;
+            throw new RuntimeException(cause);
+         }
+      }
+   }
+   
+   static Constructor<?> getDeclaredConstructor(final Class<?> clazz, final Class<?>...parameters) throws NoSuchMethodException
+   {
+      if (System.getSecurityManager() == null)
+         return clazz.getDeclaredConstructor(parameters);
+      else
+      {
+         try
+         {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<Constructor<?>>()
+            {
+               public Constructor<?> run() throws Exception
+               {
+                  return clazz.getDeclaredConstructor( parameters);
+               }
+            });
+         }
+         catch (PrivilegedActionException e)
+         {
+            Throwable cause = e.getCause();
+            if (cause instanceof NoSuchFieldException)
+               throw (NoSuchMethodException)cause;
+            if (cause instanceof RuntimeException)
+               throw (RuntimeException)cause;
+            throw new RuntimeException(cause);
+         }
+      }
+   }
+   
    static Class<?> classForName(final String name) throws ClassNotFoundException
    {
       if (System.getSecurityManager() == null)

Added: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/ErrorCheckingMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/ErrorCheckingMemberFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/ErrorCheckingMemberFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,316 @@
+/*
+* 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.reflect.plugins.javassist.bytecode;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import javassist.CtClass;
+import javassist.CtConstructor;
+import javassist.CtField;
+import javassist.CtMember;
+import javassist.CtMethod;
+import javassist.Modifier;
+import javassist.NotFoundException;
+
+import org.jboss.reflect.plugins.javassist.JavassistConstructor;
+import org.jboss.reflect.plugins.javassist.JavassistField;
+import org.jboss.reflect.plugins.javassist.JavassistMethod;
+import org.jboss.reflect.plugins.javassist.JavassistUtil;
+import org.jboss.reflect.plugins.javassist.defaultmember.DefaultMemberFactory;
+import org.jboss.util.Strings;
+
+/**
+ * JavassistMembers created using {@link JavassistMemberFactory} don't check the parameters
+ * in the generated code. Do the same checks as ReflectionUtils here so we get the same behaviour
+ * as when using the Introspection implementation or when the Javassist implementation uses the 
+ * {@link DefaultMemberFactory}.
+ * 
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class ErrorCheckingMemberFactory 
+{
+   static JavassistMethod create(JavassistMethod m, CtMethod method)
+   {
+      if (m == null || method == null)
+         throw new IllegalArgumentException("Null method");
+      
+      int numParameters = 0;
+      try
+      {
+         numParameters = method.getParameterTypes().length;
+      }
+      catch(NotFoundException e)
+      {
+         throw new IllegalArgumentException("Could not load the parameters for " + method);
+      }
+      
+      return new ErrorCheckingJavassistMethod(m, method, numParameters);
+   }
+   
+   static JavassistConstructor create(JavassistConstructor c, CtConstructor constructor)
+   {
+      if (c == null || constructor == null)
+         throw new IllegalArgumentException("Null constructor");
+      
+      int numParameters = 0;
+      try
+      {
+         numParameters = constructor.getParameterTypes().length;
+      }
+      catch(NotFoundException e)
+      {
+         throw new IllegalArgumentException("Could not load the parameters for " + constructor);
+      }
+      
+      return new ErrorCheckingJavassistConstructor(c, constructor, numParameters);
+   }
+   
+   static JavassistField create(JavassistField f, CtField field)
+   {
+      if (f == null)
+         throw new IllegalArgumentException("Null field");
+      
+      return new ErrorCheckingJavassistField(f, field);
+   }
+   
+   private static boolean checkNumberOfParameters(Object[] args, int numParameters)
+   {
+      if (args == null && numParameters > 0)
+         return false;
+      if (args != null && args.length != numParameters)
+         return false;
+      return true;
+   }
+   
+   private static boolean isStatic(CtMember member)
+   {
+      return Modifier.isStatic(member.getModifiers());
+   }
+   
+   private static void handleWrongParameters(String context, String target, Class<?>[] expected, Object[] args)
+   {
+      List<String> actual = new ArrayList<String>();
+      if (args != null)
+      {
+         for (Object argument : args)
+         {
+            if (argument == null)
+               actual.add(null);
+            else
+               actual.add(argument.getClass().getName());
+         }
+      }
+      throw new IllegalArgumentException("Wrong arguments. " + context + " for target " + target + " expected=" + expected + " actual=" + actual);
+      
+   }
+
+   private static void handleWrongTarget(Object target, Class<?> expected, String name)
+   {
+      throw new IllegalArgumentException("Wrong target for " + name + " " + target.getClass().getName() + " is not a " + expected.getName());
+   }
+   
+   private static void handleNullTarget(AccessibleObject ao)
+   {
+      throw new IllegalArgumentException("Null target calling non-static " + ao);      
+   }
+   
+   private static class ErrorCheckingJavassistMethod implements JavassistMethod
+   {
+      private final JavassistMethod delegate;
+      private final CtMethod ctMethod;
+      private final int numParameters;
+      
+      private ErrorCheckingJavassistMethod(JavassistMethod delegate, CtMethod ctMethod, int numParameters)
+      {
+         this.delegate = delegate;
+         this.ctMethod = ctMethod;
+         this.numParameters = numParameters;
+      }
+
+      public Object invoke(Object target, Object[] args) throws Throwable
+      {
+         if (!checkNumberOfParameters(args, numParameters))
+            throw new IllegalArgumentException("Wrong number of parameters for " + ctMethod.getDeclaringClass() + "." + ctMethod.getName() + ctMethod.getSignature());
+         
+         try
+         {
+            return delegate.invoke(target, args);
+         }
+         catch(ClassCastException e)
+         {
+            Method method = JavassistUtil.ctMethodToMethod(ctMethod); 
+            if (!isStatic(ctMethod))
+            {
+               if (!method.getDeclaringClass().isAssignableFrom(target.getClass()))
+                  handleWrongTarget(target, method.getDeclaringClass(), method.getName());
+            }
+            
+            Class<?>[] params = method.getParameterTypes();
+            for (int i = 0 ; i < args.length ; i++)
+            {
+               if (!params[i].isAssignableFrom(args[i].getClass()))
+                  handleWrongParameters(method.getName(), Strings.defaultToString(target), method.getParameterTypes(), args);
+            }
+            
+            throw e;
+         }
+         catch(NullPointerException e)
+         {
+            Method method = JavassistUtil.ctMethodToMethod(ctMethod); 
+            if (!isStatic(ctMethod) && target == null)
+               handleNullTarget(method);
+            
+            CtClass[] parameters = ctMethod.getParameterTypes();
+            for (int i = 0 ; i < parameters.length ; i++)
+            {
+               if (parameters[i].isPrimitive() && args[i] == null)
+                  handleWrongParameters(method.getName(), Strings.defaultToString(target), method.getParameterTypes(), args);
+            }
+            
+            throw e;
+         }
+      }
+      
+   }
+
+   private static class ErrorCheckingJavassistConstructor implements JavassistConstructor
+   {
+      private final JavassistConstructor delegate;
+      private final CtConstructor ctConstructor;
+      private final int numParameters;
+      
+      private ErrorCheckingJavassistConstructor(JavassistConstructor delegate, CtConstructor ctConstructor, int numParameters)
+      {
+         this.delegate = delegate;
+         this.ctConstructor = ctConstructor;
+         this.numParameters = numParameters;
+      }
+
+      public Object newInstance(Object[] args) throws Throwable
+      {
+         if (!checkNumberOfParameters(args, numParameters))
+            throw new IllegalArgumentException("Wrong number of parameters for " + ctConstructor.getDeclaringClass() + "." + ctConstructor.getName() + ctConstructor.getSignature());
+         
+         try
+         {
+            return delegate.newInstance(args);
+         }
+         catch(ClassCastException e)
+         {
+            Constructor<?> constructor = JavassistUtil.ctConstructorToConstructor(ctConstructor);
+            Class<?>[] params = constructor.getParameterTypes();
+            for (int i = 0 ; i < args.length ; i++)
+            {
+               if (!params[i].isAssignableFrom(args[i].getClass()))
+                  handleWrongParameters("new", Strings.defaultToString(ctConstructor.getDeclaringClass().getName()), constructor.getParameterTypes(), args);
+            }
+               
+            throw e;
+         }
+         catch(NullPointerException e)
+         {
+            CtClass[] parameters = ctConstructor.getParameterTypes();
+            for (int i = 0 ; i < parameters.length ; i++)
+            {
+               if (parameters[i].isPrimitive() && args[i] == null)
+               {
+                  Constructor<?> constructor = JavassistUtil.ctConstructorToConstructor(ctConstructor);
+                  handleWrongParameters("new", Strings.defaultToString(ctConstructor.getDeclaringClass().getName()), constructor.getParameterTypes(), args);
+               }
+            }
+            
+            throw e;
+         }
+      }
+   }
+
+   private static class ErrorCheckingJavassistField implements JavassistField
+   {
+      private final JavassistField delegate;
+      private final CtField ctField;
+      
+      private ErrorCheckingJavassistField(JavassistField delegate, CtField ctField)
+      {
+         this.delegate = delegate;
+         this.ctField = ctField;
+      }
+
+      public Object get(Object target) throws Throwable
+      {
+         try
+         {
+            return delegate.get(target);
+         }
+         catch (ClassCastException e)
+         {
+            Field field = JavassistUtil.ctFieldToField(ctField);
+            
+            if (!isStatic(ctField) && !field.getDeclaringClass().isAssignableFrom(target.getClass()))
+               handleWrongTarget(target, field.getDeclaringClass(), field.getName());
+            
+            throw e;
+         }
+         catch(NullPointerException e)
+         {
+            Field field = JavassistUtil.ctFieldToField(ctField);
+            if (!isStatic(ctField) && target == null)
+               handleNullTarget(field);
+            throw e;
+         }
+      }
+
+      public void set(Object target, Object value) throws Throwable
+      {
+         try
+         {
+            delegate.set(target, value);
+         }
+         catch (ClassCastException e)
+         {
+            Field field = JavassistUtil.ctFieldToField(ctField);
+            Class<?> type = field.getType();
+
+            if (!isStatic(ctField) && !field.getDeclaringClass().isAssignableFrom(target.getClass()))
+               handleWrongTarget(target, field.getDeclaringClass(), field.getName());
+
+            if (!type.isAssignableFrom(value.getClass()))
+               throw new IllegalArgumentException("Wrong arguments. Setting " + field.getName() + " for target " + target + " expected=" + field.getType() + " actual=" + value.getClass());
+         }
+         catch(NullPointerException e)
+         {
+            Field field = JavassistUtil.ctFieldToField(ctField);
+            if (!isStatic(ctField) && target == null)
+               handleNullTarget(field);
+            if (ctField.getType().isPrimitive() && value == null)
+               throw new IllegalArgumentException("Null value setting non-static field. " + field);
+            throw e;
+         }
+      }
+   }
+}

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistBehaviorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistBehaviorFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistBehaviorFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -50,12 +50,11 @@
     * 
     * @param superClass the super class to use for the implementation
     * @param ctBehavior the method or constructor we are generating a {@link JavassistMethod} or {@link JavassistConstructor} for
-    * @param check whether the methods implemented from the interfaces should check the parameters
     * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   JavassistBehaviorFactory(Class<?> superClass, CtBehavior ctBehavior, boolean check, boolean debug)
+   JavassistBehaviorFactory(Class<?> superClass, CtBehavior ctBehavior, boolean debug)
    {
-      super(superClass, check, debug);
+      super(superClass, debug);
       this.ctBehavior = ctBehavior;
    }
    
@@ -102,108 +101,4 @@
          }
       }
    }
-   
-
-   /**
-    * Adds byte code instructions to the <code>code</code> parameter to validate the parameters in the
-    * method we are generating. 
-    * 
-    * @param The parameter index, with 1 being the first, 2 the second and so on
-    * @param code the byte code of the method we are generating
-    * @param isStatic true if the target member is static
-    */
-   void checkParameters(Bytecode code, int parameterIndex)
-   {
-      if (check)
-      {
-         CtClass[] parameterTypes = getParameterTypes();
-         if (parameterTypes.length > 0)
-         {
-            //if (args == null || args.length != 10) throw new IllegalArgumentException("Wrong number of parameters");
-            code.addAload(parameterIndex);
-            code.addOpcode(Opcode.IFNULL);
-            int pc1 = code.currentPc();
-            code.addIndex(0);
-            code.addAload(parameterIndex);
-            code.addOpcode(Opcode.ARRAYLENGTH);
-            code.addIconst(parameterTypes.length);
-            code.addOpcode(Opcode.IF_ICMPEQ);
-            int pc2 = code.currentPc();
-            code.addIndex(0);
-            code.write16bit(pc1, code.currentPc() - pc1 + 1);
-            code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-            code.addOpcode(Opcode.DUP);
-            code.addLdc("Expected " + parameterTypes.length + " parameter(s) for " + getAccessedMember());
-            code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-            code.addOpcode(Opcode.ATHROW);
-            code.write16bit(pc2, code.currentPc() - pc2 + 1);            
-         }
-         else
-         {
-            //if (args != null && args.length > 0) throw new IllegalArgumentException("No parameters expected");
-            code.addAload(parameterIndex);
-            code.addOpcode(Opcode.IFNULL);
-            int pc1 = code.currentPc();
-            code.addIndex(0);
-            code.addAload(parameterIndex);
-            code.addOpcode(Opcode.ARRAYLENGTH);
-            code.addOpcode(Opcode.IFLE);
-            int pc2 = code.currentPc();
-            code.addIndex(0);
-            code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-            code.addOpcode(Opcode.DUP);
-            code.addLdc("Expected no parameters for " + getAccessedMember());
-            code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-            code.addOpcode(Opcode.ATHROW);
-            code.write16bit(pc1, code.currentPc() - pc1 + 1);
-            code.write16bit(pc2, code.currentPc() - pc2 + 1);
-         }
-         
-         for (int i = 0 ; i < parameterTypes.length ; i++)
-         {
-            if (!parameterTypes[i].getName().equals(OBJECT_NAME))
-            {
-               String param = getBoxedType(parameterTypes[i]);
-               if (parameterTypes[i].isPrimitive())
-               {
-                  //if (args[1] == null) throw new IllegalArgumentException("Parameter 1 cannot be null for TestBean.test()");
-                  code.addAload(parameterIndex);
-                  code.addIconst(i);
-                  code.addOpcode(Opcode.AALOAD);
-                  code.addOpcode(Opcode.IFNONNULL);
-                  int pc1 = code.currentPc();
-                  code.addIndex(0);
-                  code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-                  code.addOpcode(Opcode.DUP);
-                  code.addLdc("Parameter[" + i + "] can not be null for " + getAccessedMember());
-                  code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-                  code.addOpcode(Opcode.ATHROW);
-                  code.write16bit(pc1, code.currentPc() - pc1 + 1);
-               }
-
-               //if (args[1] != null && args[1] instanceof String == false) throw new IllegalArgumentException("Parameter 1 is not an instance of String for TestBean.test()");
-               code.addAload(parameterIndex);
-               code.addIconst(i);
-               code.addOpcode(Opcode.AALOAD);
-               code.addOpcode(Opcode.IFNULL);
-               int pc1 = code.currentPc();
-               code.addIndex(0);
-               code.addAload(parameterIndex);
-               code.addIconst(i);
-               code.addOpcode(Opcode.AALOAD);
-               code.addInstanceof(param);
-               code.addOpcode(Opcode.IFNE);
-               int pc2 = code.currentPc();
-               code.addIndex(0);
-               code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-               code.addOpcode(Opcode.DUP);
-               code.addLdc("Parameter[" + i + "] is not an instance of " + param + " for " + getAccessedMember());
-               code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-               code.addOpcode(Opcode.ATHROW);
-               code.write16bit(pc1, code.currentPc() - pc1 + 1);
-               code.write16bit(pc2, code.currentPc() - pc2 + 1);
-            }
-         }
-      }
-   }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistConstructorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistConstructorFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistConstructorFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -77,12 +77,11 @@
     * 
     * @param superClass the super class to use for the implementation
     * @param ctConstructor the constructor we are generating a {@link JavassistConstructor} for
-    * @param check whether the methods implemented from the interfaces should check the parameters
     * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   JavassistConstructorFactory(Class<?> superClass, CtConstructor ctConstructor, boolean check, boolean debug)
+   JavassistConstructorFactory(Class<?> superClass, CtConstructor ctConstructor, boolean debug)
    {
-      super(superClass, ctConstructor, check, debug);
+      super(superClass, ctConstructor, debug);
       this.ctConstructor = ctConstructor;
    }
 
@@ -113,8 +112,6 @@
       
       int pc = code.currentPc();
       
-      checkParameters(code, 1);
-
       code.addNew(ctConstructor.getDeclaringClass().getName());
       code.addOpcode(Opcode.DUP);
 

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistFieldFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistFieldFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistFieldFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -81,12 +81,11 @@
     * 
     * @param superClass the super class to use for the implementation
     * @param ctField the field we are generating a {@link JavassistField} for
-    * @param check whether the methods implemented from the interfaces should check the parameters
     * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   JavassistFieldFactory(Class<?> superClass, CtField ctField, boolean check, boolean debug)
+   JavassistFieldFactory(Class<?> superClass, CtField ctField, boolean debug)
    {
-      super(superClass, check, debug);
+      super(superClass, debug);
       this.ctField = ctField;
    }
 
@@ -147,8 +146,6 @@
       int pc = code.currentPc();
       boolean isStatic = Modifier.isStatic(ctField.getModifiers());
 
-      checkTargetParameter(code, ctField.getDeclaringClass().getName(), isStatic);
-
       int maxLocals = 0;
       if (index == 0)
       {

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -74,8 +74,6 @@
 {
    protected static final String OBJECT_NAME = Object.class.getName();
 
-   private static final String STRINGBUILDER_NAME = StringBuilder.class.getName();
-
    protected static final String ILLEGAL_ARGUMENT_EXCEPTION_NAME = IllegalArgumentException.class.getName();
 
    private static final String SHORT_NAME = Short.class.getName();
@@ -160,9 +158,6 @@
    /** The super class to use for the implementation */
    private final Class<?> superClass;
    
-   /** Whether the methods implemented from the interfaces should check the parameters */
-   protected final boolean check;
-   
    /** If true the class bytes are output to the file system so they can be inspected with a decompiler/javap */
    private final boolean debug;
    
@@ -205,10 +200,9 @@
     * @param check whether the methods implemented from the interfaces should check the parameters
     * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   JavassistMemberFactory(Class<?> superClass, boolean check, boolean debug)
+   JavassistMemberFactory(Class<?> superClass, boolean debug)
    {
       this.superClass = superClass;
-      this.check = check;
       this.debug = debug;
    }
    
@@ -217,16 +211,17 @@
     * 
     * @param superClass the super class of the JavassistMethod implementation
     * @param ctMethod the CtMethod for which we want to create a JavassistMethod implementation
-    * @param check true if the JavassistMethod implementation should check the parameters when its invoke method is called
     * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static JavassistMethod createJavassistMethod(Class<?> superClass, CtMethod ctMethod, boolean check, boolean debug)
+   public static JavassistMethod createJavassistMethod(Class<?> superClass, CtMethod ctMethod, boolean debug)
    {
-      JavassistMemberFactory factory = new JavassistMethodFactory(superClass, ctMethod, check, debug);
+      JavassistMemberFactory factory = new JavassistMethodFactory(superClass, ctMethod, debug);
       Class<JavassistMethod> member = factory.makeClass(JavassistMethod.class, ctMethod.getDeclaringClass());
-      return factory.instantiate(member);
+      JavassistMethod method = factory.instantiate(member);
+      method = ErrorCheckingMemberFactory.create(method, ctMethod);
+      return method;
    }
 
    /**
@@ -234,16 +229,17 @@
     * 
     * @param superClass the super class of the JavassistConstructor implementation
     * @param ctConstructor the CtConstructor for which we want to create a JavassistConstructor implementation
-    * @param check true if the JavassistConstructor implementation should check the parameters when its invoke method is called
     * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static JavassistConstructor createJavassistConstructor(Class<?> superClass, CtConstructor ctConstructor, boolean check, boolean debug)
+   public static JavassistConstructor createJavassistConstructor(Class<?> superClass, CtConstructor ctConstructor, boolean debug)
    {
-      JavassistMemberFactory factory = new JavassistConstructorFactory(superClass, ctConstructor, check, debug);
+      JavassistMemberFactory factory = new JavassistConstructorFactory(superClass, ctConstructor, debug);
       Class<JavassistConstructor> member = factory.makeClass(JavassistConstructor.class, ctConstructor.getDeclaringClass());
-      return factory.instantiate(member);
+      JavassistConstructor constructor = factory.instantiate(member);
+      constructor = ErrorCheckingMemberFactory.create(constructor, ctConstructor);
+      return constructor;
    }
 
    /**
@@ -251,16 +247,17 @@
     * 
     * @param superClass the super class of the JavassistField implementation
     * @param ctField the CtField for which we want to create a JavassistField implementation
-    * @param check true if the JavassistField implementation should check the parameters when its get/set methods are called
     * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static JavassistField createJavassistField(Class<?> superClass, CtField ctField, boolean check, boolean debug)
+   public static JavassistField createJavassistField(Class<?> superClass, CtField ctField, boolean debug)
    {
-      JavassistMemberFactory factory = new JavassistFieldFactory(superClass, ctField, check, debug);
+      JavassistMemberFactory factory = new JavassistFieldFactory(superClass, ctField, debug);
       Class<JavassistField> member = factory.makeClass(JavassistField.class, ctField.getDeclaringClass());
-      return factory.instantiate(member);
+      JavassistField field = factory.instantiate(member);
+      field = ErrorCheckingMemberFactory.create(field, ctField);
+      return field;
    }
 
    /**
@@ -612,7 +609,6 @@
 
    String getArrayType(CtClass type)
    {
-      String s = Descriptor.of(type);
       StringBuilder buf = new StringBuilder();
 
       //int dims = 0;
@@ -749,57 +745,6 @@
       }
    }
 
-   /**
-    * Adds byte code instructions to the <code>code</code> parameter to check if
-    * the first parameter to the method/constructor being constructed is of a particular
-    * type
-    * 
-    * @param code the byte code of the method/constructor we are currently creating
-    * @param targetType the type we want to make sure we have
-    * @param isStatic true if the method being created is static?
-    */
-   void checkTargetParameter(Bytecode code, String targetType, boolean isStatic)
-   {
-      if (!isStatic)
-      {
-         //if ($1 == null) throw new IllegalArgumentException("Null target");
-         if (check)
-         {
-            code.addAload(1);
-            code.addOpcode(Opcode.IFNONNULL);
-            int pc1 = code.currentPc(); 
-            code.addIndex(0);
-            code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-            code.addOpcode(Opcode.DUP);
-            code.addLdc("Null target for " + getAccessedMember());
-            code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-            code.addOpcode(Opcode.ATHROW);
-            code.write16bit(pc1, code.currentPc() - pc1 + 1);
-
-            //if ($1 instanceof TargetType == false) throw new IllegalArgumentException("$1 is not an instance of TargetType");
-            code.addAload(1);
-            code.addInstanceof(targetType); //TODO take parameter
-            code.addOpcode(Opcode.IFNE);
-            pc1 = code.currentPc(); 
-            code.addIndex(0);
-            code.addNew(ILLEGAL_ARGUMENT_EXCEPTION_NAME);
-            code.addOpcode(Opcode.DUP);
-            code.addNew(STRINGBUILDER_NAME);
-            code.addOpcode(Opcode.DUP);
-            code.addLdc("Target: ");
-            code.addInvokespecial(STRINGBUILDER_NAME, "<init>", STRINGBUILDER_CONSTRUCTOR_DESCRIPTOR);
-            code.addAload(1);
-            code.addInvokevirtual(STRINGBUILDER_NAME, "append", STRINGBUILDER_APPEND_DESCRIPTOR);
-            code.addLdc(" is not an instance of " + targetType);
-            code.addInvokevirtual(STRINGBUILDER_NAME, "append", STRINGBUILDER_APPEND_DESCRIPTOR);
-            code.addInvokevirtual(STRINGBUILDER_NAME, "toString", STRINGBUILDER_TOSTRING_DESCRIPTOR);
-            code.addInvokespecial(ILLEGAL_ARGUMENT_EXCEPTION_NAME, "<init>", ILLEGAL_ARGUMENT_EXCEPTION_CONSTRUCTOR_DESCRIPTOR);
-            code.addOpcode(Opcode.ATHROW);
-            code.write16bit(pc1, code.currentPc() - pc1 + 1);
-         }        
-      }      
-   }
-   
    private static class ParentLoaderHandler
    {
       final ClassLoader reflectLoader;

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMethodFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMethodFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMethodFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -81,12 +81,11 @@
     * 
     * @param superClass the super class to use for the implementation
     * @param ctMethod the constructor we are generating a {@link JavassistMethod} for
-    * @param check whether the methods implemented from the interfaces should check the parameters
     * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   JavassistMethodFactory(Class<?> superClass, CtMethod ctMethod, boolean check, boolean debug)
+   JavassistMethodFactory(Class<?> superClass, CtMethod ctMethod, boolean debug)
    {
-      super(superClass, ctMethod, check, debug);
+      super(superClass, ctMethod, debug);
       this.ctMethod = ctMethod;
    }
 
@@ -136,8 +135,6 @@
       
 
       boolean isStatic = Modifier.isStatic(ctBehavior.getModifiers());
-      checkTargetParameter(code, ctBehavior.getDeclaringClass().getName(), isStatic);
-      checkParameters(code, 2);
 
       if (!isStatic)
       {

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistConstructor.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistConstructor.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistConstructor.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -22,7 +22,11 @@
 package org.jboss.reflect.plugins.javassist.defaultmember;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
+import org.jboss.reflect.plugins.introspection.ReflectionUtils;
 import org.jboss.reflect.plugins.javassist.JavassistConstructor;
 
 /**
@@ -37,10 +41,39 @@
    DefaultJavassistConstructor(Constructor<?> ctor)
    {
       this.ctor = ctor;
+      if (ctor != null && !Modifier.isPublic(ctor.getModifiers()) || !Modifier.isPublic(ctor.getDeclaringClass().getModifiers()))
+         setAccessible();
+
    }
 
    public Object newInstance(Object[] args) throws Throwable
    {
-      return ctor.newInstance(args);
+      return ReflectionUtils.newInstance(ctor, args);
    }
+   
+   /**
+    * Set method accessible to true
+    */
+   private void setAccessible()
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm == null)
+         ctor.setAccessible(true);
+      else
+         AccessController.doPrivileged(new SetAccessible());
+   }
+
+   /**
+    * Set accessible privileged block
+    */
+   private class SetAccessible implements PrivilegedAction<Object>
+   {
+      public Object run()
+      {
+         ctor.setAccessible(true);
+         return null;
+      }
+   }
+
+
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistField.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistField.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistField.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -22,7 +22,13 @@
 package org.jboss.reflect.plugins.javassist.defaultmember;
 
 import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ReflectPermission;
+import java.security.AccessController;
+import java.security.Permission;
+import java.security.PrivilegedAction;
 
+import org.jboss.reflect.plugins.introspection.ReflectionUtils;
 import org.jboss.reflect.plugins.javassist.JavassistField;
 
 /**
@@ -34,20 +40,76 @@
 {
    final Field field;
 
+   /** The permission */
+   private static Permission accessCheck = new ReflectPermission("suppressAccessChecks");
+
    DefaultJavassistField(Field field)
    {
       this.field = field;
+      if (!Modifier.isPublic(field.getModifiers()) && field != null)
+         setAccessible();
    }
 
+   //TODO this code is duplicated from ReflectFieldInfo and should be extracted somewhere
+   
    public Object get(Object target) throws Throwable
    {
-      return field.get(target);
+      return ReflectionUtils.getField(field, target);
    }
 
    public void set(Object target, Object value) throws Throwable
    {
-      field.set(target, value);
+      ReflectionUtils.setField(field, target, value);
    }
    
+   /**
+    * Check access permission.
+    */
+   protected final void accessCheck() // final because we don't want subclasses to disable it
+   {
+      accessCheck(Modifier.isPublic(field.getModifiers()));
+   }
+
+   /**
+    * Check access permission.
+    * 
+    * @param isPublic whether the field is public
+    */
+   protected final void accessCheck(final boolean isPublic) // final because we don't want subclasses to disable it
+   {
+      if (isPublic == false)
+      {
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null)
+            sm.checkPermission(accessCheck);
+      }
+   }
+
+
+   /**
+    * Set field accessible to true
+    */
+   private void setAccessible()
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm == null)
+         field.setAccessible(true);
+      else
+         AccessController.doPrivileged(new SetAccessible());
+   }
+
+   /**
+    * Set accessible privileged block
+    */
+   private class SetAccessible implements PrivilegedAction<Object>
+   {
+      public Object run()
+      {
+         field.setAccessible(true);
+         return null;
+      }
+   }
+
    
+   
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistMethod.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistMethod.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultJavassistMethod.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -22,7 +22,12 @@
 package org.jboss.reflect.plugins.javassist.defaultmember;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
+import org.jboss.reflect.plugins.introspection.ReflectClassInfoImpl;
+import org.jboss.reflect.plugins.introspection.ReflectionUtils;
 import org.jboss.reflect.plugins.javassist.JavassistMethod;
 
 /**
@@ -30,17 +35,55 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-class DefaultJavassistMethod implements JavassistMethod
+class DefaultJavassistMethod extends ReflectClassInfoImpl implements JavassistMethod
 {
+   private static final long serialVersionUID = 1L;
+   
    private final Method method;
    
    DefaultJavassistMethod(Method method)
    {
       this.method = method;
+      if (method != null && !Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers()))
+         setAccessible();
+      
    }
 
+   //TODO this code is duplicated from ReflectMethodImpl, it should be extracted
+   
    public Object invoke(Object target, Object[] args) throws Throwable
    {
-      return method.invoke(target, args);
+      return ReflectionUtils.invoke(method, target, args);
    }
+   
+   protected boolean isDeclaringClassPublic()
+   {
+      Class<?> owner = method.getDeclaringClass();
+      return Modifier.isPublic(owner.getModifiers());
+   }
+
+   /**
+    * Set method accessible to true
+    */
+   private void setAccessible()
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm == null)
+         method.setAccessible(true);
+      else
+         AccessController.doPrivileged(new SetAccessible());
+   }
+
+   /**
+    * Set accessible privileged block
+    */
+   private class SetAccessible implements PrivilegedAction<Object>
+   {
+      public Object run()
+      {
+         method.setAccessible(true);
+         return null;
+      }
+   }
+
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultMemberFactory.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/defaultmember/DefaultMemberFactory.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -58,7 +58,6 @@
       if (methodInfo == null)
          throw new IllegalArgumentException("Null method");
       
-      
       try
       {
          //Ok to load the class here since this is only called by MethodInfo.invoke() in which
@@ -66,6 +65,7 @@
          Class<?> clazz = methodInfo.getDeclaringClass().getType();
          Class<?>[] params = getParams(methodInfo.getParameterTypes());
          Method method = clazz.getDeclaredMethod(methodInfo.getName(), params); 
+         
          return new DefaultJavassistMethod(method);
       }
       catch(RuntimeException e)

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/support/ClassInfoBeanWithArrayMembers.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/support/ClassInfoBeanWithArrayMembers.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/support/ClassInfoBeanWithArrayMembers.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,54 @@
+/*
+* 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.classinfo.support;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoBeanWithArrayMembers
+{
+   Boolean[] boxed;
+   
+   short[][] primitive;
+   
+   public ClassInfoBeanWithArrayMembers(Boolean[] boxed)
+   {
+      
+   }
+   
+   public ClassInfoBeanWithArrayMembers(short[][] primitive)
+   {
+      
+   }
+
+   public void setBoxed(Boolean[] b)
+   {
+   }
+
+   public void setPrimitive(short[][] s)
+   {
+   }
+   
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoWithArrayMembersTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoWithArrayMembersTest.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoWithArrayMembersTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,102 @@
+/*
+* 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.classinfo.test;
+
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.ConstructorInfo;
+import org.jboss.reflect.spi.FieldInfo;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.test.classinfo.support.ClassInfoBeanWithArrayMembers;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoWithArrayMembersTest extends AbstractClassInfoTest
+{
+
+   public ClassInfoWithArrayMembersTest(String name)
+   {
+      // FIXME ClassInfoWithArrayMembersTest constructor
+      super(name);
+   }
+
+   public void testMethodLookup() throws Throwable
+   {
+      ClassInfo info = assertInstanceOf(getTypeInfoFactory().getTypeInfo(ClassInfoBeanWithArrayMembers.class), ClassInfo.class);
+      
+      TypeInfo booleanArray = getTypeInfoFactory().getTypeInfo(Boolean[].class);
+      assertNotNull(booleanArray);
+      
+      TypeInfo shortArray = getTypeInfoFactory().getTypeInfo(short[][].class);
+      assertNotNull(shortArray);
+      
+      assertEquals(2, info.getDeclaredMethods().length);
+      
+      MethodInfo method = info.getDeclaredMethod("setBoxed", new TypeInfo[] {booleanArray});
+      assertNotNull(method);
+      
+      method = info.getDeclaredMethod("setPrimitive", new TypeInfo[] {shortArray});
+      assertNotNull(method);
+      
+   }
+   
+   public void testConstructorLookup() throws Throwable
+   {
+      ClassInfo info = assertInstanceOf(getTypeInfoFactory().getTypeInfo(ClassInfoBeanWithArrayMembers.class), ClassInfo.class);
+      
+      TypeInfo booleanArray = getTypeInfoFactory().getTypeInfo(Boolean[].class);
+      assertNotNull(booleanArray);
+      
+      TypeInfo shortArray = getTypeInfoFactory().getTypeInfo(short[][].class);
+      assertNotNull(shortArray);
+      
+      assertEquals(2, info.getDeclaredConstructors().length);
+      
+      ConstructorInfo constructor = info.getDeclaredConstructor(new TypeInfo[] {booleanArray});
+      assertNotNull(constructor);
+      
+      constructor = info.getDeclaredConstructor(new TypeInfo[] {shortArray});
+      assertNotNull(constructor);
+   }
+   
+   public void testFieldLookup() throws Throwable
+   {
+      ClassInfo info = assertInstanceOf(getTypeInfoFactory().getTypeInfo(ClassInfoBeanWithArrayMembers.class), ClassInfo.class);
+      
+      TypeInfo booleanArray = getTypeInfoFactory().getTypeInfo(Boolean[].class);
+      assertNotNull(booleanArray);
+      
+      TypeInfo shortArray = getTypeInfoFactory().getTypeInfo(short[][].class);
+      assertNotNull(shortArray);
+      
+      assertEquals(2, info.getDeclaredFields().length);
+      
+      FieldInfo field = info.getDeclaredField("boxed");
+      assertNotNull(field);
+      
+      field = info.getDeclaredField("primitive");
+      assertNotNull(field);
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/IntrospectionClassInfoWithArrayMembersTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/IntrospectionClassInfoWithArrayMembersTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/IntrospectionClassInfoWithArrayMembersTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,53 @@
+/*
+* 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.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionClassInfoWithArrayMembersTestCase extends ClassInfoWithArrayMembersTest
+{
+
+   public IntrospectionClassInfoWithArrayMembersTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public static Test suite()
+   {
+      return suite(IntrospectionClassInfoWithArrayMembersTestCase.class);
+   }
+
+   @Override
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/JavassistClassInfoWithArrayMembersTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/JavassistClassInfoWithArrayMembersTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/JavassistClassInfoWithArrayMembersTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,53 @@
+/*
+* 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.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistClassInfoWithArrayMembersTestCase extends ClassInfoWithArrayMembersTest
+{
+
+   public JavassistClassInfoWithArrayMembersTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public static Test suite()
+   {
+      return suite(JavassistClassInfoWithArrayMembersTestCase.class);
+   }
+
+   @Override
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+
+}

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMemberFactoryTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMemberFactoryTest.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMemberFactoryTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -30,9 +30,17 @@
 import javassist.CtMethod;
 
 import org.jboss.reflect.plugins.javassist.JavassistConstructor;
+import org.jboss.reflect.plugins.javassist.JavassistConstructorInfo;
 import org.jboss.reflect.plugins.javassist.JavassistField;
+import org.jboss.reflect.plugins.javassist.JavassistFieldInfo;
 import org.jboss.reflect.plugins.javassist.JavassistMethod;
+import org.jboss.reflect.plugins.javassist.JavassistMethodInfo;
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
 import org.jboss.reflect.plugins.javassist.bytecode.JavassistMemberFactory;
+import org.jboss.reflect.plugins.javassist.defaultmember.DefaultMemberFactory;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
 import org.jboss.test.ContainerTest;
 
 /**
@@ -42,8 +50,10 @@
  */
 public abstract class AbstractJavassistMemberFactoryTest extends ContainerTest
 {
-   protected static final boolean CHECK = true;
+   protected final TestMemberFactory javassistMemberFactory = new JavassistTestMemberFactory();
    
+   protected final TestMemberFactory defaultMemberFactory = new DefaultTestMemberFactory();
+   
    protected static final boolean DEBUG = false;
    
    protected final boolean isPrimitive;
@@ -68,79 +78,157 @@
       this.isPrimitive = isPrimitive;
    }
 
-   protected CtClass getCtClass(Class<?> clazz) throws Exception
-   {
-      if (isPrimitive)
-      {
-         if (clazz == Boolean.class)
-            clazz = Boolean.TYPE;
-         else if (clazz == Byte.class)
-            clazz = Byte.TYPE;
-         else if (clazz == Character.class)
-            clazz = Character.TYPE;
-         else if (clazz == Double.class)
-            clazz = Double.TYPE;
-         else if (clazz == Float.class)
-            clazz = Float.TYPE;
-         else if (clazz == Integer.class)
-            clazz = Integer.TYPE;
-         else if (clazz == Long.class)
-            clazz = Long.TYPE;
-         else if (clazz == Short.class)
-            clazz = Short.TYPE;
-      }
-      return ClassPool.getDefault().getCtClass(clazz.getName());
-   }
    
-   protected CtClass[] getCtClasses(Class<?>...classes) throws Exception
+   protected JavassistConstructor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
    {
-      CtClass[] ctClasses = new CtClass[classes.length];
-
-      for (int i = 0 ; i < classes.length ; i++)
-      {
-         ctClasses[i] = getCtClass(classes[i]);
-      }
-      return ctClasses;
+      return getTestMemberFactory().createConstructor(clazz, params);
    }
    
-   protected CtConstructor getCtConstructor(Class<?> clazz, Class<?>...params) throws Exception
+   protected JavassistMethod createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
    {
-      CtClass ct = getCtClass(clazz);
-      CtClass[] ctParams = getCtClasses(params);
-      for (CtConstructor ctor : ct.getConstructors())
-      {
-         if (Arrays.equals(ctParams, ctor.getParameterTypes()))
-            return ctor;
-      }
-      fail("No constructor found");
-      return null;
+      return getTestMemberFactory().createMethod(clazz, name, params);
    }
    
-   protected CtMethod getCtMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+   protected JavassistField createField(Class<?> clazz, String name) throws Exception
    {
-      CtClass ct = getCtClass(clazz);
-      CtClass[] ctParams = getCtClasses(params);
-      return ct.getDeclaredMethod(name, ctParams);
+      return getTestMemberFactory().createField(clazz, name);
    }
    
-   protected CtField getCtField(Class<?> clazz, String name) throws Exception
-   {
-      CtClass ct = getCtClass(clazz);
-      return ct.getDeclaredField(name);
-   }
+   protected abstract boolean isStatic();
    
-   protected JavassistConstructor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
+   protected abstract TestMemberFactory getTestMemberFactory();
+   
+   protected abstract class TestMemberFactory 
    {
-      return JavassistMemberFactory.createJavassistConstructor(MAGIC_ACCESSOR_IMPL, getCtConstructor(clazz, params), CHECK, DEBUG);
+      abstract JavassistConstructor createConstructor(Class<?> clazz, Class<?>...params) throws Exception;
+      
+      abstract JavassistMethod createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception;
+      
+      abstract JavassistField createField(Class<?> clazz, String name) throws Exception;
+      
+      Class<?> checkPrimitive(Class<?> clazz)
+      {
+         if (isPrimitive)
+         {
+            if (clazz == Boolean.class)
+               return Boolean.TYPE;
+            else if (clazz == Byte.class)
+               return Byte.TYPE;
+            else if (clazz == Character.class)
+               return Character.TYPE;
+            else if (clazz == Double.class)
+               return Double.TYPE;
+            else if (clazz == Float.class)
+               return Float.TYPE;
+            else if (clazz == Integer.class)
+               return Integer.TYPE;
+            else if (clazz == Long.class)
+               return Long.TYPE;
+            else if (clazz == Short.class)
+               return Short.TYPE;
+         }
+         return clazz;
+      }
    }
    
-   protected JavassistMethod createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+   protected class JavassistTestMemberFactory extends TestMemberFactory
    {
-      return JavassistMemberFactory.createJavassistMethod(MAGIC_ACCESSOR_IMPL, getCtMethod(clazz, name, params), CHECK, DEBUG);
+      public JavassistConstructor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
+      {
+         return JavassistMemberFactory.createJavassistConstructor(MAGIC_ACCESSOR_IMPL, getCtConstructor(clazz, params), DEBUG);
+      }
+      
+      public JavassistMethod createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+      {
+         return JavassistMemberFactory.createJavassistMethod(MAGIC_ACCESSOR_IMPL, getCtMethod(clazz, name, params), DEBUG);
+      }
+      
+      public JavassistField createField(Class<?> clazz, String name) throws Exception
+      {
+         return JavassistMemberFactory.createJavassistField(MAGIC_ACCESSOR_IMPL, getCtField(clazz, name), DEBUG);
+      }
+      
+      private CtClass getCtClass(Class<?> clazz) throws Exception
+      {
+         clazz = checkPrimitive(clazz);
+         return ClassPool.getDefault().getCtClass(clazz.getName());
+      }
+      
+      private CtClass[] getCtClasses(Class<?>...classes) throws Exception
+      {
+         CtClass[] ctClasses = new CtClass[classes.length];
+
+         for (int i = 0 ; i < classes.length ; i++)
+         {
+            ctClasses[i] = getCtClass(classes[i]);
+         }
+         return ctClasses;
+      }
+      
+      private CtConstructor getCtConstructor(Class<?> clazz, Class<?>...params) throws Exception
+      {
+         CtClass ct = getCtClass(clazz);
+         CtClass[] ctParams = getCtClasses(params);
+         for (CtConstructor ctor : ct.getConstructors())
+         {
+            if (Arrays.equals(ctParams, ctor.getParameterTypes()))
+               return ctor;
+         }
+         fail("No constructor found");
+         return null;
+      }
+      
+      private CtMethod getCtMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+      {
+         CtClass ct = getCtClass(clazz);
+         CtClass[] ctParams = getCtClasses(params);
+         return ct.getDeclaredMethod(name, ctParams);
+      }
+      
+      private CtField getCtField(Class<?> clazz, String name) throws Exception
+      {
+         CtClass ct = getCtClass(clazz);
+         return ct.getDeclaredField(name);
+      }
+
    }
-   
-   protected JavassistField createField(Class<?> clazz, String name) throws Exception
+
+   protected class DefaultTestMemberFactory extends TestMemberFactory
    {
-      return JavassistMemberFactory.createJavassistField(MAGIC_ACCESSOR_IMPL, getCtField(clazz, name), CHECK, DEBUG);
+      TypeInfoFactory factory = new JavassistTypeInfoFactory();
+      
+      public JavassistConstructor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
+      {
+         ClassInfo info = getClassInfo(clazz);
+         JavassistConstructorInfo constructorInfo = assertInstanceOf(info.getDeclaredConstructor(getParams(params)), JavassistConstructorInfo.class);
+         return DefaultMemberFactory.createJavassistConstructor(constructorInfo);
+      }
+      
+      public JavassistMethod createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+      {
+         ClassInfo info = getClassInfo(clazz);
+         JavassistMethodInfo methodInfo = assertInstanceOf(info.getDeclaredMethod(name, getParams(params)), JavassistMethodInfo.class);
+         return DefaultMemberFactory.createJavassistMethod(methodInfo);
+      }
+      
+      public JavassistField createField(Class<?> clazz, String name) throws Exception
+      {
+         ClassInfo info = getClassInfo(clazz);
+         JavassistFieldInfo fieldInfo = assertInstanceOf(info.getDeclaredField(name), JavassistFieldInfo.class);
+         return DefaultMemberFactory.createJavassistField(fieldInfo);
+      }
+      
+      private ClassInfo getClassInfo(Class<?> clazz)
+      {
+         return assertInstanceOf(factory.getTypeInfo(clazz), ClassInfo.class);
+      }
+      
+      private TypeInfo[] getParams(Class<?>...params)
+      {
+         TypeInfo[] infos = new TypeInfo[params.length];
+         for (int i = 0 ; i < infos.length ; i++)
+            infos[i] = factory.getTypeInfo(checkPrimitive(params[i]));
+         return infos;
+      }
    }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodAndFieldFactoryTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodAndFieldFactoryTest.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodAndFieldFactoryTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -104,10 +104,15 @@
       checkWrongParameter(field, target, "Not a primitive");
 
       field.set(target, goodParam);
-      if (goodParam instanceof Double || goodParam instanceof Float)
+//      if (goodParam instanceof Double || goodParam instanceof Float)
          assertEquals(goodParam, field.get(target));
-      else
-         assertSame(goodParam, field.get(target));
+//      else
+//         assertSame(goodParam, field.get(target));
+      
+      checkWrongTargetSet(field, "Wrong target", goodParam);
+      checkNullTargetSet(field, goodParam);
+      checkWrongTargetGet(field, "Wrong target");
+      checkNullTargetGet(field);
    }
    
    public void checkWrongParameter(JavassistField f, Object bean, Object param) throws Throwable
@@ -115,12 +120,68 @@
       try
       {
          f.set(bean, param);
-         fail("Should have picked up too many parameters");
+         fail("Should have picked up wrong parameters");
       }
-      catch (Exception expected)
+      catch (IllegalArgumentException expected)
       {
       }  
    }
    
+   public void checkWrongTargetSet(JavassistField f, Object bean, Object param) throws Throwable
+   {
+      try
+      {
+         f.set(bean, param);
+         if (!isStatic())
+            fail("Should have picked up wrong target");
+      }
+      catch(IllegalArgumentException expected)
+      {
+      }
+   }
+   
+   public void checkNullTargetSet(JavassistField f, Object param) throws Throwable
+   {
+      try
+      {
+         f.set(null, param);
+         if (!isStatic())
+            fail("Should have picked up null target for non static field");
+      }
+      catch (IllegalArgumentException e)
+      {
+         if (isStatic())
+            fail("Should not have picked up null target for static field");
+      }
+   }
+   
+   public void checkWrongTargetGet(JavassistField f, Object bean) throws Throwable
+   {
+      try
+      {
+         f.get(bean);
+         if (!isStatic())
+            fail("Should have picked up wrong target");
+      }
+      catch(IllegalArgumentException expected)
+      {
+      }
+   }
+   
+   public void checkNullTargetGet(JavassistField f) throws Throwable
+   {
+      try
+      {
+         f.get(null);
+         if (!isStatic())
+            fail("Should have picked up null target for non static field");
+      }
+      catch (IllegalArgumentException e)
+      {
+         if (isStatic())
+            fail("Should not have picked up null target for static field");
+      }
+   }
+   
 
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFactoryTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFactoryTest.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFactoryTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -65,13 +65,13 @@
    public void testObjectMethodWithNullParameters() throws Throwable
    {
       JavassistMethod m = createMethod(getClazz(), "noReturnNoParams");
-      checkWrongParameters(m, createInstance(), null);
+      m.invoke(createInstance(), null);
    }
 
    public void testObjectMethodWithEmptyParameters() throws Throwable
    {
       JavassistMethod m = createMethod(getClazz(), "noReturnNoParams");
-      checkWrongParameters(m, createInstance(), new Object[0]);
+      m.invoke(createInstance(), new Object[0]);
    }
 
    public void testObjectMethodWithTooManyParameters() throws Throwable
@@ -124,7 +124,12 @@
    {
       Object target = createInstance();
       checkWrongParameters(method, target, new Object[] {"Not a primitive"});
-      checkWrongParameters(method, target, new Object[] {null});
+      
+      if (isPrimitive)
+         checkWrongParameters(method, target, new Object[] {null});
+      else
+         method.invoke(target, new Object[] {null});
+      
       checkWrongParameters(method, target, new Object[0]);
       checkWrongParameters(method, target, new Object[] {goodParam, goodParam});
       if (isPrimitive)
@@ -133,6 +138,9 @@
          assertNull(method.invoke(target, new Object[] {null}));
 
       assertEquals(goodParam, method.invoke(target, new Object[] {goodParam}));
+      
+      checkWrongTarget(method, new Object[] {goodParam});
+      checkNullTarget(method, new Object[] {goodParam});
    }
 
    public void testBigMethod() throws Throwable
@@ -146,20 +154,54 @@
       checkWrongParameters(method, target, new Object[] {"Test", Boolean.TRUE, Byte.valueOf((byte)1), Integer.valueOf(5)});
       assertEquals("Test", method.invoke(target, new Object[] {"Test", Boolean.TRUE, Byte.valueOf((byte)1), Character.valueOf('a')}));
       checkWrongParameters(method, target, new Object[] {"Test", Boolean.TRUE, Byte.valueOf((byte)1), Character.valueOf('a'), null});
+      
+      if (isPrimitive)
+         checkWrongParameters(method, target, new Object[] {"Test", Boolean.TRUE, null, Character.valueOf('a')});
+      else
+         method.invoke(target, new Object[] {"Test", Boolean.TRUE, null, Character.valueOf('a')});
    }
    
    protected void checkWrongParameters(JavassistMethod m, Object bean, Object[] params) throws Throwable
    {
       try
       {
-         m.invoke(bean, new Object[] {new Object()});
-         fail("Should have picked up too many parameters");
+         m.invoke(bean, params);
+         fail("Should have picked up wrong parameters");
       }
-      catch (Exception expected)
+      catch (IllegalArgumentException expected)
       {
       }  
    }
 
+   public void checkWrongTarget(JavassistMethod m, Object[] params) throws Throwable
+   {
+      try
+      {
+         m.invoke("WrongTarget", params);
+         if (!isStatic())
+            fail("Should have picked up wrong target");
+      }
+      catch(IllegalArgumentException expected)
+      {
+      }
+   }
+   
+   public void checkNullTarget(JavassistMethod m, Object[] params) throws Throwable
+   {
+      try
+      {
+         m.invoke(null, params);
+         if (!isStatic())
+            fail("Should have picked up null target for non static method");
+      }
+      catch (IllegalArgumentException e)
+      {
+         if (isStatic())
+            fail("Should not have picked up null target for static method");
+      }
+   }
+
+   
    protected abstract Class<?> getClazz();
    
    protected abstract Object createInstance();

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFieldAndConstructorFactoryTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFieldAndConstructorFactoryTest.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractJavassistMethodFieldAndConstructorFactoryTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -193,7 +193,7 @@
          ctor.newInstance(params);
          fail("Should have picked up wrong parameters");
       }
-      catch (Exception expected)
+      catch (IllegalArgumentException expected)
       {
       }
    }

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractMemberFactoryArrayUnitTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractMemberFactoryArrayUnitTest.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/AbstractMemberFactoryArrayUnitTest.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,227 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistConstructor;
+import org.jboss.reflect.plugins.javassist.JavassistField;
+import org.jboss.reflect.plugins.javassist.JavassistMethod;
+import org.jboss.test.plugins.javassist.bytecode.support.BoxedArrayBean;
+import org.jboss.test.plugins.javassist.bytecode.support.PrimitiveArrayBean;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AbstractMemberFactoryArrayUnitTest extends AbstractJavassistMemberFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(AbstractMemberFactoryArrayUnitTest.class);
+   }
+
+   public AbstractMemberFactoryArrayUnitTest(String name)
+   {
+      super(name, false);
+   }
+
+   public void testObjectArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Object[].class, "useObjectArray", "objectArray", new Object[] {"x"}, new Object[] {"y"});
+   }
+   
+   public void testObject2Array() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Object[][].class, "useObject2Array", "object2Array", new Object[][] {new Object[] {"x"}}, new Object[][] {new Object[] {"y"}});
+   }
+   
+   public void testBoxedBooleanArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Boolean[].class, "useBooleanArray", "booleanArray", new Boolean[] {Boolean.TRUE}, new Boolean[] {Boolean.FALSE});
+   }
+   
+   public void testPrimitiveBooleanArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, boolean[].class, "useBooleanArray", "booleanArray", new boolean[] {true}, new boolean[] {false});
+   }
+   
+   public void testBoxedByteArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Byte[].class, "useByteArray", "byteArray", new Byte[] {Byte.valueOf((byte)1)}, new Byte[] {Byte.valueOf((byte)2)});
+   }
+   
+   public void testPrimitiveByteArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, byte[].class, "useByteArray", "byteArray", new byte[] {(byte)1}, new byte[] {(byte)2});
+   }
+   
+   public void testBoxedCharArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Character[].class, "useCharArray", "charArray", new Character[] {Character.valueOf('a')}, new Character[] {Character.valueOf('b')});
+   }
+   
+   public void testPrimitiveCharArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, char[].class, "useCharArray", "charArray", new char[] {'a'}, new char[] {'b'});
+   }
+   
+   public void testBoxedDoubleArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Double[].class, "useDoubleArray", "doubleArray", new Double[] {Double.valueOf(1)}, new Double[] {Double.valueOf(2)});
+   }
+   
+   public void testPrimitiveDoubleArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, double[].class, "useDoubleArray", "doubleArray", new double[] {1}, new double[] {2});
+   }
+   
+   public void testBoxedFloatArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Float[].class, "useFloatArray", "floatArray", new Float[] {Float.valueOf(1)}, new Float[] {Float.valueOf(2)});
+   }
+   
+   public void testPrimitveFloatArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, float[].class, "useFloatArray", "floatArray", new float[] {1}, new float[] {2});
+   }
+   
+   public void testBoxedIntArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Integer[].class, "useIntArray", "intArray", new Integer[] {Integer.valueOf(1)}, new Integer[] {Integer.valueOf(2)});
+   }
+   
+   public void testPrimitiveIntArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, int[].class, "useIntArray", "intArray", new int[] {1}, new int[] {2});
+   }
+   
+   public void testBoxedLongArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Long[].class, "useLongArray", "longArray", new Long[] {Long.valueOf(1)}, new Long[] {Long.valueOf(2)});
+   }
+   
+   public void testPrimitiveLongArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, long[].class, "useLongArray", "longArray", new long[] {1}, new long[] {2});
+   }
+   
+   public void testBoxedShortArray() throws Throwable
+   {
+      testArray(BoxedArrayBean.class, Short[].class, "useShortArray", "shortArray", new Short[] {Short.valueOf((short)1)}, new Short[] {Short.valueOf((short)2)});
+   }
+   
+   public void testPrimitveShortArray() throws Throwable
+   {
+      testArray(PrimitiveArrayBean.class, short[].class, "useShortArray", "shortArray", new short[] {(short)1}, new short[] {(short)2});
+   }
+   
+   private <T> void testArray(Class<?> beanClass, Class<T> type, String methodName, String fieldName, T arg, T arg2) throws Throwable
+   {
+      JavassistConstructor ctor = createConstructor(beanClass, type);
+      Object tgt = ctor.newInstance(new Object[] {arg});
+      assertInstanceOf(tgt, beanClass);
+      
+      JavassistMethod method = createMethod(beanClass, methodName, type);
+      assertSame(arg, method.invoke(tgt, new Object[] {arg}));
+      
+      JavassistField field = createField(beanClass, fieldName);
+      field.set(tgt, arg2);
+      assertSame(arg2, field.get(tgt));
+      
+      testWrongTarget(null, method, field, type, arg);
+      testWrongTarget("String", method, field, type, arg);
+   }
+
+   private <T> void testWrongTarget(Object tgt, JavassistMethod method, JavassistField field, Class<T> type, T arg) throws Throwable
+   {
+      try
+      {
+         field.set(tgt, arg);
+         fail("Should have picked up bad target");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+
+      try
+      {
+         field.get(tgt);
+         fail("Should have picked up bad target");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+
+      try
+      {
+         method.invoke(tgt, new Object[] {arg});
+         fail("Should have picked up bad target");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+   }
+   
+   private void testWrongParameter(Object tgt, JavassistConstructor ctor, JavassistMethod method, JavassistField field) throws Throwable
+   {
+      try
+      {
+         ctor.newInstance(new Object[] {"Not an array"});
+         fail("Should have picked up bad parameter");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+
+      try
+      {
+         field.set(tgt, "Not an array");
+         fail("Should have picked up bad parameter");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+
+      try
+      {
+         method.invoke(tgt, new Object[] {"Not an array"});
+         fail("Should have picked up bad parameter");
+      }
+      catch (IllegalArgumentException expected)
+      {
+      }
+   }
+   
+   @Override
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryArrayUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryArrayUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryArrayUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,54 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryArrayUnitTestCase extends AbstractMemberFactoryArrayUnitTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryArrayUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryArrayUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryBoxedInterfaceUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryBoxedInterfaceUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryBoxedInterfaceUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,68 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.BoxedInterface;
+import org.jboss.test.plugins.javassist.bytecode.support.PublicBoxedBean;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryBoxedInterfaceUnitTestCase extends AbstractJavassistMethodFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryBoxedInterfaceUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryBoxedInterfaceUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return new PublicBoxedBean();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return BoxedInterface.class;
+   }
+   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPackageProtectedBoxedUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPackageProtectedBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return ProtectedBoxedBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedBoxedBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PackageProtectedPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return PackageProtectedPrimitiveBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PackageProtectedPrimitiveBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PackageProtectedStaticBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PackageProtectedStaticBoxedBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PackageProtectedStaticPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PackageProtectedStaticPrimitiveBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+   
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,68 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PrimitiveInterface;
+import org.jboss.test.plugins.javassist.bytecode.support.PublicPrimitiveBean;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPrimitiveInterfaceUnitTestCase extends AbstractJavassistMethodFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPrimitiveInterfaceUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return new PublicPrimitiveBean();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PrimitiveInterface.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPrivateBoxedUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPrivateBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPrivateBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return ProtectedBoxedBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedBoxedBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivatePrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivatePrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivatePrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPrivatePrimitiveUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPrivatePrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPrivatePrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return ProtectedPrimitiveBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedPrimitiveBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedStaticBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPrivateStaticBoxedUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPrivateStaticBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedStaticBoxedBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedStaticPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedStaticPrimitiveBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryProtectedBoxedUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryProtectedBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryProtectedBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return ProtectedBoxedBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedBoxedBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryProtectedPrimitiveUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryProtectedPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryProtectedPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return ProtectedPrimitiveBean.getInstance();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedPrimitiveBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedStaticBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryProtectedStaticBoxedUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryProtectedStaticBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedStaticBoxedBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.ProtectedStaticPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return ProtectedStaticPrimitiveBean.class;
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PublicBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPublicBoxedUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPublicBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPublicBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return new PublicBoxedBean();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PublicBoxedBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PublicPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPublicPrimitiveUnitTestCase extends AbstractJavassistMethodFieldAndConstructorFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPublicPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPublicPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return new PublicPrimitiveBean();
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PublicPrimitiveBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticBoxedUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PublicStaticBoxedBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPublicStaticBoxedUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPublicStaticBoxedUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPublicStaticBoxedUnitTestCase(String name)
+   {
+      super(name, false);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PublicStaticBoxedBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,69 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+
+import org.jboss.test.plugins.javassist.bytecode.support.PublicStaticPrimitiveBean;
+
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase extends AbstractJavassistMethodAndFieldFactoryTest
+{
+   public static Test suite()
+   {
+      return suite(DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.class);
+   }
+
+   public DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase(String name)
+   {
+      super(name, true);
+   }
+
+   @Override
+   protected Object createInstance()
+   {
+      return null;
+   }
+
+   @Override
+   protected Class<?> getClazz()
+   {
+      return PublicStaticPrimitiveBean.class;
+   }
+
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return defaultMemberFactory;
+   }
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryTestSuite.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryTestSuite.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/DefaultMemberFactoryTestSuite.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,72 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultMemberFactoryTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("Javassist Default Member Factory Tests");
+
+      suite.addTest(DefaultMemberFactoryPublicBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPublicPrimitiveUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPublicStaticBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPublicStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(DefaultMemberFactoryProtectedBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryProtectedPrimitiveUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryProtectedStaticBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryProtectedStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(DefaultMemberFactoryPackageProtectedBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPackageProtectedPrimitiveUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPackageProtectedStaticBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(DefaultMemberFactoryPrivateBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPrivatePrimitiveUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPrivateStaticBoxedUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryPrivateStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(DefaultMemberFactoryPrimitiveInterfaceUnitTestCase.suite());
+      suite.addTest(DefaultMemberFactoryBoxedInterfaceUnitTestCase.suite());
+      
+      suite.addTest(DefaultMemberFactoryArrayUnitTestCase.suite());
+      
+      return suite;
+   }
+
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/GeneratedMemberFactoryTestSuite.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/GeneratedMemberFactoryTestSuite.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/GeneratedMemberFactoryTestSuite.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -0,0 +1,72 @@
+/*
+* 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.plugins.javassist.bytecode.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class GeneratedMemberFactoryTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("Javassist Member Factory Tests");
+
+      suite.addTest(JavassistMemberFactoryPublicBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPublicPrimitiveUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPublicStaticBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(JavassistMemberFactoryProtectedBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryProtectedPrimitiveUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(JavassistMemberFactoryPrivateBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPrivatePrimitiveUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.suite());
+      
+      suite.addTest(JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.suite());
+      suite.addTest(JavassistMemberFactoryBoxedInterfaceUnitTestCase.suite());
+      
+      suite.addTest(JavassistMemberFactoryArrayUnitTestCase.suite());
+      
+      return suite;
+   }
+
+}

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryArrayUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryArrayUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryArrayUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -23,18 +23,12 @@
 
 import junit.framework.Test;
 
-import org.jboss.reflect.plugins.javassist.JavassistConstructor;
-import org.jboss.reflect.plugins.javassist.JavassistField;
-import org.jboss.reflect.plugins.javassist.JavassistMethod;
-import org.jboss.test.plugins.javassist.bytecode.support.BoxedArrayBean;
-import org.jboss.test.plugins.javassist.bytecode.support.PrimitiveArrayBean;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class JavassistMemberFactoryArrayUnitTestCase extends AbstractJavassistMemberFactoryTest
+public class JavassistMemberFactoryArrayUnitTestCase extends AbstractMemberFactoryArrayUnitTest
 {
    public static Test suite()
    {
@@ -43,110 +37,18 @@
 
    public JavassistMemberFactoryArrayUnitTestCase(String name)
    {
-      super(name, false);
+      super(name);
    }
 
-   public void testObjectArray() throws Throwable
+   @Override
+   protected boolean isStatic()
    {
-      testArray(BoxedArrayBean.class, Object[].class, "useObjectArray", "objectArray", new Object[] {"x"}, new Object[] {"y"});
+      return false;
    }
-   
-   public void testObject2Array() throws Throwable
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
    {
-      testArray(BoxedArrayBean.class, Object[][].class, "useObject2Array", "object2Array", new Object[][] {new Object[] {"x"}}, new Object[][] {new Object[] {"y"}});
+      return javassistMemberFactory;
    }
-   
-   public void testBoxedBooleanArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Boolean[].class, "useBooleanArray", "booleanArray", new Boolean[] {Boolean.TRUE}, new Boolean[] {Boolean.FALSE});
-   }
-   
-   public void testPrimitiveBooleanArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, boolean[].class, "useBooleanArray", "booleanArray", new boolean[] {true}, new boolean[] {false});
-   }
-   
-   public void testBoxedByteArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Byte[].class, "useByteArray", "byteArray", new Byte[] {Byte.valueOf((byte)1)}, new Byte[] {Byte.valueOf((byte)2)});
-   }
-   
-   public void testPrimitiveByteArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, byte[].class, "useByteArray", "byteArray", new byte[] {(byte)1}, new byte[] {(byte)2});
-   }
-   
-   public void testBoxedCharArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Character[].class, "useCharArray", "charArray", new Character[] {Character.valueOf('a')}, new Character[] {Character.valueOf('b')});
-   }
-   
-   public void testPrimitiveCharArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, char[].class, "useCharArray", "charArray", new char[] {'a'}, new char[] {'b'});
-   }
-   
-   public void testBoxedDoubleArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Double[].class, "useDoubleArray", "doubleArray", new Double[] {Double.valueOf(1)}, new Double[] {Double.valueOf(2)});
-   }
-   
-   public void testPrimitiveDoubleArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, double[].class, "useDoubleArray", "doubleArray", new double[] {1}, new double[] {2});
-   }
-   
-   public void testBoxedFloatArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Float[].class, "useFloatArray", "floatArray", new Float[] {Float.valueOf(1)}, new Float[] {Float.valueOf(2)});
-   }
-   
-   public void testPrimitveFloatArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, float[].class, "useFloatArray", "floatArray", new float[] {1}, new float[] {2});
-   }
-   
-   public void testBoxedIntArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Integer[].class, "useIntArray", "intArray", new Integer[] {Integer.valueOf(1)}, new Integer[] {Integer.valueOf(2)});
-   }
-   
-   public void testPrimitiveIntArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, int[].class, "useIntArray", "intArray", new int[] {1}, new int[] {2});
-   }
-   
-   public void testBoxedLongArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Long[].class, "useLongArray", "longArray", new Long[] {Long.valueOf(1)}, new Long[] {Long.valueOf(2)});
-   }
-   
-   public void testPrimitiveLongArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, long[].class, "useLongArray", "longArray", new long[] {1}, new long[] {2});
-   }
-   
-   public void testBoxedShortArray() throws Throwable
-   {
-      testArray(BoxedArrayBean.class, Short[].class, "useShortArray", "shortArray", new Short[] {Short.valueOf((short)1)}, new Short[] {Short.valueOf((short)2)});
-   }
-   
-   public void testPrimitveShortArray() throws Throwable
-   {
-      testArray(PrimitiveArrayBean.class, short[].class, "useShortArray", "shortArray", new short[] {(short)1}, new short[] {(short)2});
-   }
-   
-   private <T> void testArray(Class<?> beanClass, Class<T> type, String methodName, String fieldName, T arg, T arg2) throws Throwable
-   {
-      JavassistConstructor ctor = createConstructor(beanClass, type);
-      Object tgt = ctor.newInstance(new Object[] {arg});
-      assertInstanceOf(tgt, beanClass);
-      
-      JavassistMethod method = createMethod(beanClass, methodName, type);
-      assertSame(arg, method.invoke(tgt, new Object[] {arg}));
-      
-      JavassistField field = createField(beanClass, fieldName);
-      field.set(tgt, arg2);
-      assertSame(arg2, field.get(tgt));
-   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryBoxedInterfaceUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryBoxedInterfaceUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryBoxedInterfaceUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -54,4 +54,15 @@
    {
       return BoxedInterface.class;
    }
+   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return ProtectedBoxedBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return PackageProtectedPrimitiveBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new PackageProtectedStaticBoxedBean();
+      return null;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new PackageProtectedStaticPrimitiveBean();
+      return null;
    }
 
+   protected boolean isStatic()
+   {
+      return true;
+   }
    
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -54,4 +54,15 @@
    {
       return PrimitiveInterface.class;
    }
+
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return ProtectedBoxedBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivatePrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivatePrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivatePrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return ProtectedPrimitiveBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new ProtectedStaticBoxedBean();
+      return null;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new ProtectedStaticPrimitiveBean();
+      return null;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return ProtectedBoxedBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return ProtectedPrimitiveBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new ProtectedStaticBoxedBean();
+      return null;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -53,8 +53,17 @@
    @Override
    protected Object createInstance()
    {
-      return new ProtectedStaticPrimitiveBean();
+      return null;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return PublicBoxedBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -56,5 +56,14 @@
       return PublicPrimitiveBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return false;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticBoxedUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticBoxedUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticBoxedUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -47,7 +47,7 @@
    @Override
    protected Object createInstance()
    {
-      return new PublicStaticBoxedBean();
+      return null;
    }
 
    @Override
@@ -56,5 +56,14 @@
       return PublicStaticBoxedBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -47,7 +47,7 @@
    @Override
    protected Object createInstance()
    {
-      return new PublicStaticPrimitiveBean();
+      return null;
    }
 
    @Override
@@ -56,5 +56,14 @@
       return PublicStaticPrimitiveBean.class;
    }
 
-   
+   protected boolean isStatic()
+   {
+      return true;
+   }
+
+   @Override
+   protected TestMemberFactory getTestMemberFactory()
+   {
+      return javassistMemberFactory;
+   }
 }

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryTestSuite.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryTestSuite.java	2010-04-29 14:37:55 UTC (rev 104316)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/bytecode/test/JavassistMemberFactoryTestSuite.java	2010-04-29 14:54:09 UTC (rev 104317)
@@ -41,31 +41,9 @@
    {
       TestSuite suite = new TestSuite("Javassist Member Factory Tests");
 
-      suite.addTest(JavassistMemberFactoryPublicBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPublicPrimitiveUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPublicStaticBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPublicStaticPrimitiveUnitTestCase.suite());
-      
-      suite.addTest(JavassistMemberFactoryProtectedBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryProtectedPrimitiveUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryProtectedStaticBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryProtectedStaticPrimitiveUnitTestCase.suite());
-      
-      suite.addTest(JavassistMemberFactoryPackageProtectedBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPackageProtectedPrimitiveUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPackageProtectedStaticBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPackageProtectedStaticPrimitiveUnitTestCase.suite());
-      
-      suite.addTest(JavassistMemberFactoryPrivateBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPrivatePrimitiveUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPrivateStaticBoxedUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryPrivateStaticPrimitiveUnitTestCase.suite());
-      
-      suite.addTest(JavassistMemberFactoryPrimitiveInterfaceUnitTestCase.suite());
-      suite.addTest(JavassistMemberFactoryBoxedInterfaceUnitTestCase.suite());
-      
-      suite.addTest(JavassistMemberFactoryArrayUnitTestCase.suite());
-      
+      suite.addTest(GeneratedMemberFactoryTestSuite.suite());
+      suite.addTest(DefaultMemberFactoryTestSuite.suite());
+
       return suite;
    }
 




More information about the jboss-cvs-commits mailing list