[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