src/share/classes/sun/misc/ClassFileTransformer.java
Print this page
*** 23,84 ****
* questions.
*/
package sun.misc;
import java.util.ArrayList;
/**
! * This is an abstract base class which is called by java.lang.ClassLoader
! * when ClassFormatError is thrown inside defineClass().
! *
! * The purpose of this class is to allow applications (e.g. Java Plug-in)
! * to have a chance to transform the byte code from one form to another
! * if necessary.
! *
! * One application of this class is used by Java Plug-in to transform
! * malformed JDK 1.1 class file into a well-formed Java 2 class file
! * on-the-fly, so JDK 1.1 applets with malformed class file in the
! * Internet may run in Java 2 after transformation.
*
* @author Stanley Man-Kit Ho
*/
! public abstract class ClassFileTransformer
! {
! // Singleton of ClassFileTransformer
! //
! private static ArrayList<ClassFileTransformer> transformerList
= new ArrayList<ClassFileTransformer>();
- private static ClassFileTransformer[] transformers
- = new ClassFileTransformer[0];
/**
* Add the class file transformer object.
*
* @param t Class file transformer instance
*/
! public static void add(ClassFileTransformer t)
! {
! synchronized(transformerList)
! {
! transformerList.add(t);
! transformers = transformerList.toArray(new ClassFileTransformer[0]);
}
}
/**
* Get the array of ClassFileTransformer object.
*
* @return ClassFileTransformer object array
*/
! public static ClassFileTransformer[] getTransformers()
! {
! // transformers is not intended to be changed frequently,
! // so it is okay to not put synchronized block here
! // to speed up performance.
! //
! return transformers;
}
/**
* Transform a byte array from one to the other.
--- 23,70 ----
* questions.
*/
package sun.misc;
import java.util.ArrayList;
+ import java.util.List;
/**
! * This is an abstract base class originally intended to be called by
! * {@code java.lang.ClassLoader} when {@code ClassFormatError} is
! * thrown inside {@code defineClass()}. It is no longer hooked into
! * {@code ClassLoader} and will be removed in a future release.
*
* @author Stanley Man-Kit Ho
*/
! @Deprecated
! public abstract class ClassFileTransformer {
!
! private static final List<ClassFileTransformer> transformers
= new ArrayList<ClassFileTransformer>();
/**
* Add the class file transformer object.
*
* @param t Class file transformer instance
*/
! public static void add(ClassFileTransformer t) {
! synchronized (transformers) {
! transformers.add(t);
}
}
/**
* Get the array of ClassFileTransformer object.
*
* @return ClassFileTransformer object array
*/
! public static ClassFileTransformer[] getTransformers() {
! synchronized (transformers) {
! ClassFileTransformer[] result = new ClassFileTransformer[transformers.size()];
! return transformers.toArray(result);
! }
}
/**
* Transform a byte array from one to the other.