Save This Page
Home » openjdk-7 » sun » misc » [javadoc | source]
    1   /*
    2    * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   package sun.misc;
   26   
   27   import java.util.ArrayList;
   28   
   29   /**
   30    * This is an abstract base class which is called by java.lang.ClassLoader
   31    * when ClassFormatError is thrown inside defineClass().
   32    *
   33    * The purpose of this class is to allow applications (e.g. Java Plug-in)
   34    * to have a chance to transform the byte code from one form to another
   35    * if necessary.
   36    *
   37    * One application of this class is used by Java Plug-in to transform
   38    * malformed JDK 1.1 class file into a well-formed Java 2 class file
   39    * on-the-fly, so JDK 1.1 applets with malformed class file in the
   40    * Internet may run in Java 2 after transformation.
   41    *
   42    * @author      Stanley Man-Kit Ho
   43    */
   44   
   45   public abstract class ClassFileTransformer
   46   {
   47       // Singleton of ClassFileTransformer
   48       //
   49       private static ArrayList<ClassFileTransformer> transformerList
   50           = new ArrayList<ClassFileTransformer>();
   51       private static ClassFileTransformer[] transformers
   52           = new ClassFileTransformer[0];
   53   
   54       /**
   55        * Add the class file transformer object.
   56        *
   57        * @param t Class file transformer instance
   58        */
   59       public static void add(ClassFileTransformer t)
   60       {
   61           synchronized(transformerList)
   62           {
   63               transformerList.add(t);
   64               transformers = transformerList.toArray(new ClassFileTransformer[0]);
   65           }
   66       }
   67   
   68       /**
   69        * Get the array of ClassFileTransformer object.
   70        *
   71        * @return ClassFileTransformer object array
   72        */
   73       public static ClassFileTransformer[] getTransformers()
   74       {
   75           // transformers is not intended to be changed frequently,
   76           // so it is okay to not put synchronized block here
   77           // to speed up performance.
   78           //
   79           return transformers;
   80       }
   81   
   82   
   83       /**
   84        * Transform a byte array from one to the other.
   85        *
   86        * @param b Byte array
   87        * @param off Offset
   88        * @param len Length of byte array
   89        * @return Transformed byte array
   90        */
   91       public abstract byte[] transform(byte[] b, int off, int len)
   92                              throws ClassFormatError;
   93   }

Save This Page
Home » openjdk-7 » sun » misc » [javadoc | source]