[jboss-cvs] JBossAS SVN: r106525 - in projects/jboss-reflect/trunk/src: main/java/org/jboss/reflect/plugins/accessor/generated and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 9 07:40:42 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-07-09 07:40:40 -0400 (Fri, 09 Jul 2010)
New Revision: 106525

Added:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMemberAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/GeneratedAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectSignatureKey.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractIntrospectionTestMemberFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/IntrospectionGeneratedMemberAccessorTestMemberFactory.java
Removed:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/SecurityActions.java
Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedBehaviorAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedConstructorAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedFieldAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMemberAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMethodAccessorFactory.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/SecurityActions.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeConstructorInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeFieldInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMethodInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractMemberFactoryTest.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractTestMemberFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/BytecodeGeneratedMemberAccessorTestMemberFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/JavassistGeneratedMemberAccessorTestMemberFactory.java
Log:
[JBREFLECT-134] Centralize the desicion of whether to generate or use reflection

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -25,34 +25,32 @@
 import java.io.File;
 import java.io.FileReader;
 import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
 
 import org.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory;
-import org.jboss.reflect.plugins.accessor.metrics.MetricsAccessorFactory;
 import org.jboss.reflect.plugins.accessor.reflect.ReflectAccessorFactory;
-import org.jboss.reflect.plugins.bytecode.BytecodeConstructorInfo;
-import org.jboss.reflect.plugins.bytecode.BytecodeFieldInfo;
-import org.jboss.reflect.plugins.bytecode.BytecodeMethodInfo;
+import org.jboss.reflect.spi.ConstructorInfo;
+import org.jboss.reflect.spi.FieldInfo;
+import org.jboss.reflect.spi.MethodInfo;
 
 /**
- * <p>BytecodeReflectionFactory.
+ * <p>MemberAccessorFactory.
  * </p><p>
  * Creates instances of {@link MethodAccessor}, {@link ConstructorAccessor} and
  * {@link FieldAccessor} that invoke methods, constructors, and accesses fields without
  * the use of reflection. Although a lot faster, there is an overhead associated with generating
  * these classes, so they should only be used for frequently used members </p>
- * <p>
- * To output the generated classes to disk, so the bytecode can be inspected, specify
- * <code>-Dorg.jboss.reflect.plugins.bytecode.BytecodeReflectionFactory.debug=true</code>.
+ * 
+ * <p>By default this class will generate the accessor classes, but you can specify a file
+ * containing the member names and signatures of classes that should be generated
+ * <code>-Dorg.jboss.reflect.plugins.accessor.MemberAccessorFactory.file=/path/to/file</code>.
+ * If this file is specified all members that match signatures in the file are generated,
+ * members that don't match default to reflection.
  * </p>
- * <p>
- * To enable metrics, which can be useful in determining which members accessors should be generated, specify
- * <code>-Dorg.jboss.reflect.plugins.javassist.BytecodeReflectionFactory.enableMetrics=true</code>.
- * </p>
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
@@ -61,55 +59,25 @@
  */
 public class MemberAccessorFactory
 {
-   public static final MemberAccessorFactory INSTANCE;
+   public static final MemberAccessorFactory INSTANCE = new MemberAccessorFactory();
    
-   /** Whether to output generated classes to disk */
-   private static final boolean debug;
-   
-   /** Whether to enable metrics for the classes or not */
-   private static final boolean enableMetrics;
-   
    /** A file containing the names of the members that should be generated */
-   private static final Set<String> forceGenerate;
+   private static final Set<String> FORCE_GENERATE;
    
-   protected static final Class<?> MAGIC_ACCESSOR_IMPL;
    static
    {
-      debug = initBooleanProperty(MemberAccessorFactory.class.getName() + ".debug");
-      enableMetrics = initBooleanProperty(MemberAccessorFactory.class.getName() + ".enableMetrics");
-      forceGenerate = initForceGenerate(MemberAccessorFactory.class.getName() + ".file");
-      INSTANCE = new MemberAccessorFactory();
-      
-      try
-      {
-         MAGIC_ACCESSOR_IMPL = SecurityActions.classForName("sun.reflect.MagicAccessorImpl");
-      }
-      catch (ClassNotFoundException e)
-      {
-         throw new RuntimeException(e);
-      }
+      FORCE_GENERATE = new CopyOnWriteArraySet<String>(initForceGenerate(MemberAccessorFactory.class.getName() + ".file")); 
    }
    
-   private static boolean initBooleanProperty(final String name)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<Boolean>()
-      {
-         public Boolean run()
-         {
-            return Boolean.getBoolean(name);
-         }
-      });
-      
-   }
 
    public void addForceGenerate(String s)
    {
-      forceGenerate.add(s);
+      FORCE_GENERATE.add(s);
    }
    
    public void removeForceGenerate(String s)
    {
-      forceGenerate.remove(s);
+      FORCE_GENERATE.remove(s);
    }
    
    private static Set<String> initForceGenerate(final String name)
@@ -164,6 +132,8 @@
       }
    }
 
+   
+   
    /**
     * Create a new JavassistReflectionFactory.
     * 
@@ -179,19 +149,17 @@
     * the generated class and instantiates it.
     * 
     * @param info the method info
+    * @param sig the signature
+    * @param key the signature key
     * @return the method accessor implementation
     * @throws Throwable for any error
     */
-   public MethodAccessor createMethod(BytecodeMethodInfo info) throws Throwable
+   public MethodAccessor createMethod(MethodInfo info, String sig, SignatureKey key) throws Throwable
    {
-      String sig = info.getDescriptor();
       MethodAccessor method = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateMethodAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), debug) :
+            GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, sig, key) :
                ReflectAccessorFactory.createMethodAccessor(info);
       
-      if (enableMetrics)
-         method = MetricsAccessorFactory.createMethodAccessor(method, sig);
-      
       return method;
    }
    
@@ -199,19 +167,17 @@
     * Create a javassist constructor
     * 
     * @param info the constructor info
+    * @param sig the signature
+    * @param key the signature key
     * @return the constructor accessor implementation
     * @throws Throwable for any error
     */
-   public ConstructorAccessor createConstructor(BytecodeConstructorInfo info) throws Throwable
+   public ConstructorAccessor createConstructor(ConstructorInfo info, String sig, SignatureKey key) throws Throwable
    {
-      String sig = info.getDescriptor();
       ConstructorAccessor ctor = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateConstructorAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), debug) :
+            GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, sig, key) :
                ReflectAccessorFactory.createConstructorAccessor(info);
             
-      if (enableMetrics)
-         ctor = MetricsAccessorFactory.createConstructorAccessor(ctor, sig);
-      
       return ctor;
    }
    
@@ -219,26 +185,23 @@
     * Create a javassist field
     * 
     * @param info the field info
+    * @param sig the signature
     * @return the field accessor implementation
     * @throws Throwable for any error
     */
-   public FieldAccessor createField(BytecodeFieldInfo info) throws Throwable
+   public FieldAccessor createField(FieldInfo info, String sig) throws Throwable
    {
-      String sig = info.getDescriptor();
       FieldAccessor field = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateFieldAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), debug) :
+            GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, sig) :
                ReflectAccessorFactory.createFieldAccessor(info);
             
-      if (enableMetrics)
-         field = MetricsAccessorFactory.createFieldAccessor(field, sig);
-      
       return field;
    }
    
    private boolean generateAccessor(String signature)
    {
-      if (forceGenerate.isEmpty())
+      if (FORCE_GENERATE.isEmpty())
          return true;
-      return forceGenerate.contains(signature);
+      return FORCE_GENERATE.contains(signature);
    }
 }

Deleted: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/SecurityActions.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/SecurityActions.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/SecurityActions.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -1,59 +0,0 @@
-/*
-* 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.accessor;
-
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class SecurityActions
-{
-   static Class<?> classForName(final String name) throws ClassNotFoundException
-   {
-      if (System.getSecurityManager() == null)
-         return Class.forName(name);
-      else
-      {
-         try
-         {
-            return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
-            {
-               public Class<?> run() throws Exception
-               {
-                  return Class.forName(name);
-               }
-            });
-         }
-         catch (PrivilegedActionException e)
-         {
-            if (e.getException() instanceof ClassNotFoundException)
-               throw (ClassNotFoundException)e.getException();
-            throw new RuntimeException(e.getException());
-         }
-      }
-   }
-}

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedBehaviorAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedBehaviorAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedBehaviorAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -54,11 +54,10 @@
     * @param behavior the method or constructor we are generating a {@link MethodAccessor} or {@link JavassistConstructor} for
     * @param descriptor the descriptor of the method or constructor
     * @param key the signature key of the method or constructor 
-    * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   GeneratedBehaviorAccessorFactory(Class<?> superClass, MemberInfo behavior, String descriptor, SignatureKey key, boolean debug)
+   GeneratedBehaviorAccessorFactory(Class<?> superClass, MemberInfo behavior, String descriptor, SignatureKey key)
    {
-      super(superClass, debug);
+      super(superClass);
       this.behavior = behavior;
       this.key = key;
       this.descriptor = descriptor;

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedConstructorAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedConstructorAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedConstructorAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -75,11 +75,10 @@
     * @param constructor the constructor we are generating a {@link ConstructorAccessor} for
     * @param descriptor the descriptor of the method or constructor
     * @param key the signature key of the method or constructor 
-    * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   GeneratedConstructorAccessorFactory(Class<?> superClass, ConstructorInfo constructor, String descriptor, SignatureKey key, boolean debug)
+   GeneratedConstructorAccessorFactory(Class<?> superClass, ConstructorInfo constructor, String descriptor, SignatureKey key)
    {
-      super(superClass, constructor, descriptor, key, debug);
+      super(superClass, constructor, descriptor, key);
    }
 
    @Override

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedFieldAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedFieldAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedFieldAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -83,11 +83,10 @@
     * @param superClass the super class to use for the implementation
     * @param field the field we are generating a {@link FieldAccessor} for
     * @param descriptor the descriptor of the field
-    * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   GeneratedFieldAccessorFactory(Class<?> superClass, FieldInfo field, String descriptor, boolean debug)
+   GeneratedFieldAccessorFactory(Class<?> superClass, FieldInfo field, String descriptor)
    {
-      super(superClass, debug);
+      super(superClass);
       this.field = field;
       this.descriptor = descriptor;
    }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMemberAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMemberAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMemberAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -43,6 +43,7 @@
 import org.jboss.reflect.plugins.accessor.FieldAccessor;
 import org.jboss.reflect.plugins.accessor.MethodAccessor;
 import org.jboss.reflect.plugins.accessor.SignatureKey;
+import org.jboss.reflect.plugins.accessor.metrics.MetricsAccessorFactory;
 import org.jboss.reflect.plugins.bytecode.bytes.BytecodePrimitive;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.FieldInfo;
@@ -56,6 +57,13 @@
  * <code>sun.reflect.MagicAccessorImpl</code> is used as the <code>superClass</code> field the implementation
  * classes can access private and protected members of the target class.</p>
  * 
+ * To output the generated classes to disk, so the bytecode can be inspected, specify
+ * <code>-Dorg.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory.debug=true</code>.
+ * </p>
+ * <p>
+ * To enable metrics, which can be useful in determining which members accessors should be generated, specify
+ * <code>-Dorg.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory.enableMetrics=true</code>.
+ * </p>
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
@@ -74,9 +82,6 @@
    /** The super class to use for the implementation */
    private final Class<?> superClass;
    
-   /** If true the class bytes are output to the file system so they can be inspected with a decompiler/javap */
-   private final boolean debug;
-   
    /**
     * In AS the GeneratedMethod, -Constructor and -Field classloaders are not deployed in 
     * the system classpath. When generating an accessor for something from the system classpath
@@ -105,6 +110,38 @@
          }
       });
    }
+   
+   /** Whether to output generated classes to disk */
+   private static final boolean debug;
+   
+   /** Whether to enable metrics for the classes or not */
+   private static final boolean enableMetrics;
+   
+   public static final Class<?> MAGIC_ACCESSOR_IMPL;
+   static
+   {
+      debug = initBooleanProperty(GeneratedMemberAccessorFactory.class.getName() + ".debug");
+      enableMetrics = initBooleanProperty(GeneratedMemberAccessorFactory.class.getName() + ".enableMetrics");
+      try
+      {
+         MAGIC_ACCESSOR_IMPL = SecurityActions.classForName("sun.reflect.MagicAccessorImpl");
+      }
+      catch (ClassNotFoundException e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+   
+   private static boolean initBooleanProperty(final String name)
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<Boolean>()
+      {
+         public Boolean run()
+         {
+            return Boolean.getBoolean(name);
+         }
+      });
+   }
 
    /**
     * Constructor
@@ -113,10 +150,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
     */      
-   GeneratedMemberAccessorFactory(Class<?> superClass, boolean debug)
+   GeneratedMemberAccessorFactory(Class<?> superClass)
    {
       this.superClass = superClass;
-      this.debug = debug;
    }
    
    /**
@@ -127,15 +163,18 @@
     * @param method the MethodInfo for which we want to create a GeneratedMethod implementation
     * @param descriptor the descriptor of the method or constructor
     * @param key the signature key of the method or constructor 
-    * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static MethodAccessor generateMethodAccessor(Class<?> superClass, ClassLoader loader, MethodInfo method, String descriptor, SignatureKey key, boolean debug)
+   public static MethodAccessor generateMethodAccessor(Class<?> superClass, ClassLoader loader, MethodInfo method, String descriptor, SignatureKey key)
    {
-      GeneratedMemberAccessorFactory factory = new GeneratedMethodAccessorFactory(superClass, method, descriptor, key, debug);
+      GeneratedMemberAccessorFactory factory = new GeneratedMethodAccessorFactory(superClass, method, descriptor, key);
       Class<MethodAccessor> member = factory.makeClass(MethodAccessor.class, method.getDeclaringClass(), loader);
-      return ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), method, descriptor, key);
+      MethodAccessor accessor = ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), method, descriptor, key);
+      
+      if (enableMetrics)
+         accessor = MetricsAccessorFactory.createMethodAccessor(accessor, descriptor);
+      return accessor;
    }
 
    /**
@@ -146,15 +185,18 @@
     * @param constructor the ConstructorInfo for which we want to create a GeneratedConstructor implementation
     * @param descriptor the descriptor of the method or constructor
     * @param key the signature key of the method or constructor 
-    * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static ConstructorAccessor generateConstructorAccessor(Class<?> superClass, ClassLoader loader, ConstructorInfo constructor, String descriptor, SignatureKey key, boolean debug)
+   public static ConstructorAccessor generateConstructorAccessor(Class<?> superClass, ClassLoader loader, ConstructorInfo constructor, String descriptor, SignatureKey key)
    {
-      GeneratedMemberAccessorFactory factory = new GeneratedConstructorAccessorFactory(superClass, constructor, descriptor, key, debug);
+      GeneratedMemberAccessorFactory factory = new GeneratedConstructorAccessorFactory(superClass, constructor, descriptor, key);
       Class<ConstructorAccessor> member = factory.makeClass(ConstructorAccessor.class, constructor.getDeclaringClass(), loader);
-      return ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), constructor, descriptor, key);
+      ConstructorAccessor accessor = ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), constructor, descriptor, key);
+
+      if (enableMetrics)
+         accessor = MetricsAccessorFactory.createConstructorAccessor(accessor, descriptor);
+      return accessor;
    }
 
    /**
@@ -164,16 +206,22 @@
     * @param loader the class loader to use when generating the class (should be the same loader as the member's declaring class)
     * @param field the FieldInfo for which we want to create a GeneratedField implementation
     * @param descriptor the descriptor of the field
-    * @param debug true if the bytecode should be output to file
     * @return the generated class
     * @throws RuntimeException if an error ocurred
     */
-   public static FieldAccessor generateFieldAccessor(Class<?> superClass, ClassLoader loader, FieldInfo field, String descriptor, boolean debug)
+   public static FieldAccessor generateFieldAccessor(Class<?> superClass, ClassLoader loader, FieldInfo field, String descriptor)
    {
-      GeneratedMemberAccessorFactory factory = new GeneratedFieldAccessorFactory(superClass, field, descriptor, debug);
+      GeneratedMemberAccessorFactory factory = new GeneratedFieldAccessorFactory(superClass, field, descriptor);
       Class<FieldAccessor> member = factory.makeClass(FieldAccessor.class, field.getDeclaringClass(), loader);
-      return ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), field);
+      FieldAccessor accessor = ErrorCheckingMemberFactory.wrapInErrorChecker(factory.instantiate(member), field);
+      
+      if (enableMetrics)
+         accessor = MetricsAccessorFactory.createFieldAccessor(accessor, descriptor);
+      return accessor;
+      
    }
+   
+   
 
    /**
     * Instantiates the class

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMethodAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMethodAccessorFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/GeneratedMethodAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -77,11 +77,10 @@
     * @param method the method we are generating a {@link MethodAccessor} for
     * @param descriptor the descriptor of the method or constructor
     * @param key the signature key of the method or constructor 
-    * @param debug true to cause the class bytes to be output to the file system so they can be inspected with a decompiler/javap
     */      
-   GeneratedMethodAccessorFactory(Class<?> superClass, MethodInfo method, String descriptor, SignatureKey key, boolean debug)
+   GeneratedMethodAccessorFactory(Class<?> superClass, MethodInfo method, String descriptor, SignatureKey key)
    {
-      super(superClass, method, descriptor, key, debug);
+      super(superClass, method, descriptor, key);
    }
 
    String getGeneratedClassName()

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/SecurityActions.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/SecurityActions.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/generated/SecurityActions.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -216,5 +216,29 @@
       }
    }
    
+   static Class<?> classForName(final String name) throws ClassNotFoundException
+   {
+      if (System.getSecurityManager() == null)
+         return Class.forName(name);
+      else
+      {
+         try
+         {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
+            {
+               public Class<?> run() throws Exception
+               {
+                  return Class.forName(name);
+               }
+            });
+         }
+         catch (PrivilegedActionException e)
+         {
+            if (e.getException() instanceof ClassNotFoundException)
+               throw (ClassNotFoundException)e.getException();
+            throw new RuntimeException(e.getException());
+         }
+      }
+   }
    
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeConstructorInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeConstructorInfo.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeConstructorInfo.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -27,7 +27,6 @@
 
 import org.jboss.reflect.plugins.AnnotationHelper;
 import org.jboss.reflect.plugins.accessor.ConstructorAccessor;
-import org.jboss.reflect.plugins.accessor.MemberAccessorFactory;
 import org.jboss.reflect.plugins.bytecode.bytes.ConstructorBytes;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.MutableConstructorInfo;
@@ -70,7 +69,7 @@
    {
       if (constructor == null)
       {
-         ConstructorAccessor ctor = MemberAccessorFactory.INSTANCE.createConstructor(this);
+         ConstructorAccessor ctor = BytecodeMemberAccessorFactory.INSTANCE.createConstructor(this);
          if (constructor == null)
             constructor = ctor; 
       }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeFieldInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeFieldInfo.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeFieldInfo.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -30,7 +30,6 @@
 
 import org.jboss.reflect.plugins.AnnotationHelper;
 import org.jboss.reflect.plugins.accessor.FieldAccessor;
-import org.jboss.reflect.plugins.accessor.MemberAccessorFactory;
 import org.jboss.reflect.plugins.bytecode.bytes.FieldBytes;
 import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.FieldInfo;
@@ -177,7 +176,7 @@
    {
       if (field == null)
       {
-         FieldAccessor f = MemberAccessorFactory.INSTANCE.createField(this);
+         FieldAccessor f = BytecodeMemberAccessorFactory.INSTANCE.createField(this);
          if (field == null)
             field = f;
       }

Added: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMemberAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMemberAccessorFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMemberAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -0,0 +1,81 @@
+/*
+* 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.bytecode;
+
+import org.jboss.reflect.plugins.accessor.ConstructorAccessor;
+import org.jboss.reflect.plugins.accessor.FieldAccessor;
+import org.jboss.reflect.plugins.accessor.MemberAccessorFactory;
+import org.jboss.reflect.plugins.accessor.MethodAccessor;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ * @see MemberAccessorFactory
+ */
+public class BytecodeMemberAccessorFactory
+{
+   public static final BytecodeMemberAccessorFactory INSTANCE = new BytecodeMemberAccessorFactory();
+   
+   private BytecodeMemberAccessorFactory()
+   {
+      
+   }
+   /**
+    * Creates a method accessor
+    * <p>
+    * This method generates an implementation of {@code JavassistMethod}, loads
+    * the generated class and instantiates it.
+    * 
+    * @param info the method info
+    * @return the method accessor implementation
+    * @throws Throwable for any error
+    */
+   public MethodAccessor createMethod(BytecodeMethodInfo info) throws Throwable
+   {
+      return MemberAccessorFactory.INSTANCE.createMethod(info, info.getDescriptor(), info.getSignatureKey());
+   }
+   
+   /**
+    * Create a javassist constructor
+    * 
+    * @param info the constructor info
+    * @return the constructor accessor implementation
+    * @throws Throwable for any error
+    */
+   public ConstructorAccessor createConstructor(BytecodeConstructorInfo info) throws Throwable
+   {
+      return MemberAccessorFactory.INSTANCE.createConstructor(info, info.getDescriptor(), info.getSignatureKey());
+   }
+   
+   /**
+    * Create a javassist field
+    * 
+    * @param info the field info
+    * @return the field accessor implementation
+    * @throws Throwable for any error
+    */
+   public FieldAccessor createField(BytecodeFieldInfo info) throws Throwable
+   {
+      return MemberAccessorFactory.INSTANCE.createField(info, info.getDescriptor());
+   }
+}

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMethodInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMethodInfo.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/bytecode/BytecodeMethodInfo.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -28,7 +28,6 @@
 
 import org.jboss.reflect.plugins.AnnotationHelper;
 import org.jboss.reflect.plugins.MethodInfoInternal;
-import org.jboss.reflect.plugins.accessor.MemberAccessorFactory;
 import org.jboss.reflect.plugins.accessor.MethodAccessor;
 import org.jboss.reflect.plugins.bytecode.bytes.MethodBytes;
 import org.jboss.reflect.spi.MethodInfo;
@@ -117,7 +116,7 @@
    {
       if (method == null)
       {
-         MethodAccessor m = MemberAccessorFactory.INSTANCE.createMethod(this);
+         MethodAccessor m = BytecodeMemberAccessorFactory.INSTANCE.createMethod(this);
          if (method == null)
             method = m;
       }

Added: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/GeneratedAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/GeneratedAccessorFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/GeneratedAccessorFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -0,0 +1,39 @@
+/*
+* 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.introspection;
+
+import org.jboss.reflect.plugins.accessor.MethodAccessor;
+import org.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory;
+import org.jboss.reflect.spi.MethodInfo;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class GeneratedAccessorFactory
+{
+   public static MethodAccessor createMethodAccessor(MethodInfo info)
+   {
+      return null;
+   }
+}

Added: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectSignatureKey.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectSignatureKey.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/introspection/ReflectSignatureKey.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -0,0 +1,39 @@
+/*
+* 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.introspection;
+
+import org.jboss.reflect.plugins.accessor.SignatureKey;
+import org.jboss.reflect.spi.TypeInfo;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ReflectSignatureKey extends SignatureKey
+{
+   protected ReflectSignatureKey(String name, TypeInfo[] typeInfos)
+   {
+      super(name, typeInfos);
+   }
+
+}

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-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistReflectionFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -21,22 +21,10 @@
 */
 package org.jboss.reflect.plugins.javassist;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.jboss.reflect.plugins.accessor.ConstructorAccessor;
 import org.jboss.reflect.plugins.accessor.FieldAccessor;
+import org.jboss.reflect.plugins.accessor.MemberAccessorFactory;
 import org.jboss.reflect.plugins.accessor.MethodAccessor;
-import org.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory;
-import org.jboss.reflect.plugins.accessor.metrics.MetricsAccessorFactory;
-import org.jboss.reflect.plugins.accessor.reflect.ReflectAccessorFactory;
 
 //import org.jboss.reflect.plugins.javassist.bytecode.JavassistMemberFactory;
 //import org.jboss.reflect.plugins.javassist.defaultmember.DefaultMemberFactory;
@@ -67,109 +55,8 @@
  */
 public class JavassistReflectionFactory
 {
-   public static final JavassistReflectionFactory INSTANCE;
+   public static final JavassistReflectionFactory INSTANCE = new JavassistReflectionFactory();
    
-   /** Whether to output generated classes to disk */
-   private static final boolean debug;
-   
-   /** Whether to enable metrics for the classes or not */
-   private static final boolean enableMetrics;
-   
-   /** A file containing the names of the members that should be generated */
-   private static final Set<String> forceGenerate;
-   
-   protected static final Class<?> MAGIC_ACCESSOR_IMPL;
-   static
-   {
-      debug = initBooleanProperty(JavassistReflectionFactory.class.getName() + ".debug");
-      enableMetrics = initBooleanProperty(JavassistReflectionFactory.class.getName() + ".enableMetrics");
-      forceGenerate = initForceGenerate(JavassistReflectionFactory.class.getName() + ".file");
-      INSTANCE = new JavassistReflectionFactory();
-      
-      try
-      {
-         MAGIC_ACCESSOR_IMPL = SecurityActions.classForName("sun.reflect.MagicAccessorImpl");
-      }
-      catch (ClassNotFoundException e)
-      {
-         throw new RuntimeException(e);
-      }
-   }
-   
-   private static boolean initBooleanProperty(final String name)
-   {
-      return AccessController.doPrivileged(new PrivilegedAction<Boolean>()
-      {
-         public Boolean run()
-         {
-            return Boolean.getBoolean(name);
-         }
-      });
-      
-   }
-
-   public void addForceGenerate(String s)
-   {
-      forceGenerate.add(s);
-   }
-   
-   public void removeForceGenerate(String s)
-   {
-      forceGenerate.remove(s);
-   }
-   
-   private static Set<String> initForceGenerate(final String name)
-   {
-      try
-      {
-         return AccessController.doPrivileged(new PrivilegedExceptionAction<Set<String>>()
-         {
-            public Set<String> run() throws Exception
-            {
-               String generateFile = System.getProperty(JavassistReflectionFactory.class.getName() + ".file", null);
-               Set<String> forceGenerate = new HashSet<String>();
-               if (generateFile != null)
-               {
-                  File file = new File(generateFile);
-                  if (!file.exists())
-                     throw new IllegalArgumentException("No file called '" + generateFile + "' specified via -D" + JavassistReflectionFactory.class.getName() + ".file");
-                  
-                  BufferedReader in = null;
-                  try
-                  {
-                     in = new BufferedReader(new FileReader(file));
-                     String s = in.readLine();
-                     while (s != null)
-                     {
-                        s = s.trim();
-                        if (s.length() > 0)
-                           forceGenerate.add(s);
-                        s = in.readLine();
-                     }
-                  }
-                  finally
-                  {
-                     try
-                     {
-                        in.close();
-                     }
-                     catch(Exception ignore)
-                     {
-                     }
-                  }
-               }
-               return forceGenerate;
-            }
-         });
-      }
-      catch(PrivilegedActionException e)
-      {
-         if (e.getCause() instanceof RuntimeException)
-            throw (RuntimeException)e.getCause();
-         throw new RuntimeException(e.getCause());
-      }
-   }
-
    /**
     * Create a new JavassistReflectionFactory.
     * 
@@ -190,15 +77,7 @@
     */
    public MethodAccessor createMethod(JavassistMethodInfo info) throws Throwable
    {
-      String sig = JavassistUtil.getSignature(info.getCtMethod());
-      MethodAccessor method = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateMethodAccessor(MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoaderInternal(), info, info.getDescriptor(), info.getSignatureKey(), debug) :
-               ReflectAccessorFactory.createMethodAccessor(info);
-      
-      if (enableMetrics)
-         method = MetricsAccessorFactory.createMethodAccessor(method, sig);
-      
-      return method;
+      return MemberAccessorFactory.INSTANCE.createMethod(info, info.getDescriptor(), info.getSignatureKey());
    }
    
    /**
@@ -210,15 +89,7 @@
     */
    public ConstructorAccessor createConstructor(JavassistConstructorInfo info) throws Throwable
    {
-      String sig = info.getDescriptor();//JavassistUtil.getSignature(info.getCtConstructor());
-      ConstructorAccessor ctor = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateConstructorAccessor(MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoaderInternal(), info, info.getDescriptor(), info.getSignatureKey(), debug) :
-               ReflectAccessorFactory.createConstructorAccessor(info);
-            
-            if (enableMetrics)
-               ctor = MetricsAccessorFactory.createConstructorAccessor(ctor, sig);
-      
-      return ctor;
+      return MemberAccessorFactory.INSTANCE.createConstructor(info, info.getDescriptor(), info.getSignatureKey());
    }
    
    /**
@@ -230,22 +101,7 @@
     */
    public FieldAccessor createField(JavassistFieldInfo info) throws Throwable
    {
-      String sig = info.getDescriptor();
-      
-      FieldAccessor field = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateFieldAccessor(MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoaderInternal(), info, info.getDescriptor(), debug) :
-               ReflectAccessorFactory.createFieldAccessor(info);
-            
-      if (enableMetrics)
-         field = MetricsAccessorFactory.createFieldAccessor(field, sig);
-      
-      return field;
+      return MemberAccessorFactory.INSTANCE.createField(info, info.getDescriptor());
    }
    
-   private boolean generateAccessor(String signature)
-   {
-      if (forceGenerate.isEmpty())
-         return true;
-      return forceGenerate.contains(signature);
-   }
 }

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractIntrospectionTestMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractIntrospectionTestMemberFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractIntrospectionTestMemberFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -0,0 +1,43 @@
+/*
+* 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.accessor;
+
+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 $
+ */
+abstract class AbstractIntrospectionTestMemberFactory extends AbstractTestMemberFactory
+{
+   AbstractIntrospectionTestMemberFactory(boolean primitive)
+   {
+      super(primitive);
+   }
+
+   TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractMemberFactoryTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractMemberFactoryTest.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractMemberFactoryTest.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -34,22 +34,6 @@
 {
    protected final boolean isPrimitive;
 
-   protected static final boolean DEBUG = false;
-
-   protected static final Class<?> MAGIC_ACCESSOR_IMPL;
-   static
-   {
-      try
-      {
-         MAGIC_ACCESSOR_IMPL = Class.forName("sun.reflect.MagicAccessorImpl");
-      }
-      catch (ClassNotFoundException e)
-      {
-         throw new RuntimeException(e);
-      }
-   }
- 
-
    public AbstractMemberFactoryTest(String name, boolean isPrimitive)
    {
       super(name);

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractTestMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractTestMemberFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/AbstractTestMemberFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -40,10 +40,6 @@
  */
 abstract class AbstractTestMemberFactory 
 {
-   protected static final boolean DEBUG = AbstractMemberFactoryTest.DEBUG;
-
-   protected static final Class<?> MAGIC_ACCESSOR_IMPL = AbstractMemberFactoryTest.MAGIC_ACCESSOR_IMPL;
- 
    boolean primitive; 
 
    abstract ConstructorAccessor createConstructor(Class<?> clazz, Class<?>...params) throws Exception;

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/BytecodeGeneratedMemberAccessorTestMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/BytecodeGeneratedMemberAccessorTestMemberFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/BytecodeGeneratedMemberAccessorTestMemberFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -44,18 +44,18 @@
    public ConstructorAccessor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
    {
       BytecodeConstructorInfo info = assertInstanceOf(getConstructor(clazz, params), BytecodeConstructorInfo.class);
-      return GeneratedMemberAccessorFactory.generateConstructorAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
    }
    
    public MethodAccessor createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
    {
       BytecodeMethodInfo info = assertInstanceOf(getMethod(clazz, name, params), BytecodeMethodInfo.class);
-      return GeneratedMemberAccessorFactory.generateMethodAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
    }
    
    public FieldAccessor createField(Class<?> clazz, String name) throws Exception
    {
       BytecodeFieldInfo info = assertInstanceOf(getField(clazz, name), BytecodeFieldInfo.class);
-      return GeneratedMemberAccessorFactory.generateFieldAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor());
    }
 }

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/IntrospectionGeneratedMemberAccessorTestMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/IntrospectionGeneratedMemberAccessorTestMemberFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/IntrospectionGeneratedMemberAccessorTestMemberFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -0,0 +1,61 @@
+/*
+* 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.accessor;
+
+import org.jboss.reflect.plugins.accessor.ConstructorAccessor;
+import org.jboss.reflect.plugins.accessor.FieldAccessor;
+import org.jboss.reflect.plugins.accessor.MethodAccessor;
+import org.jboss.reflect.plugins.accessor.generated.GeneratedMemberAccessorFactory;
+import org.jboss.reflect.plugins.bytecode.BytecodeConstructorInfo;
+import org.jboss.reflect.plugins.bytecode.BytecodeFieldInfo;
+import org.jboss.reflect.plugins.bytecode.BytecodeMethodInfo;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+class IntrospectionGeneratedMemberAccessorTestMemberFactory extends AbstractIntrospectionTestMemberFactory
+{
+   IntrospectionGeneratedMemberAccessorTestMemberFactory(boolean primitive)
+   {
+      super(primitive);
+   }
+
+   public ConstructorAccessor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
+   {
+      BytecodeConstructorInfo info = assertInstanceOf(getConstructor(clazz, params), BytecodeConstructorInfo.class);
+      return GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
+   }
+   
+   public MethodAccessor createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
+   {
+      BytecodeMethodInfo info = assertInstanceOf(getMethod(clazz, name, params), BytecodeMethodInfo.class);
+      return GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
+   }
+   
+   public FieldAccessor createField(Class<?> clazz, String name) throws Exception
+   {
+      BytecodeFieldInfo info = assertInstanceOf(getField(clazz, name), BytecodeFieldInfo.class);
+      return GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor());
+   }
+}

Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/JavassistGeneratedMemberAccessorTestMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/JavassistGeneratedMemberAccessorTestMemberFactory.java	2010-07-09 09:55:04 UTC (rev 106524)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/accessor/JavassistGeneratedMemberAccessorTestMemberFactory.java	2010-07-09 11:40:40 UTC (rev 106525)
@@ -44,18 +44,18 @@
    public ConstructorAccessor createConstructor(Class<?> clazz, Class<?>...params) throws Exception
    {
       JavassistConstructorInfo info = assertInstanceOf(getConstructor(clazz, params), JavassistConstructorInfo.class);
-      return GeneratedMemberAccessorFactory.generateConstructorAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
    }
    
    public MethodAccessor createMethod(Class<?> clazz, String name, Class<?>...params) throws Exception
    {
       JavassistMethodInfo info = assertInstanceOf(getMethod(clazz, name, params), JavassistMethodInfo.class);
-      return GeneratedMemberAccessorFactory.generateMethodAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), info.getSignatureKey());
    }
    
    public FieldAccessor createField(Class<?> clazz, String name) throws Exception
    {
       JavassistFieldInfo info = assertInstanceOf(getField(clazz, name), JavassistFieldInfo.class);
-      return GeneratedMemberAccessorFactory.generateFieldAccessor(MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor(), DEBUG);
+      return GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, null, info, info.getDescriptor());
    }
 }



More information about the jboss-cvs-commits mailing list