KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > classloading > spi > Translator


1 /*
2  * JBoss, Home of Professional Open Source
3  * Copyright 2005, JBoss Inc., and individual contributors as indicated
4  * by the @authors tag. See the copyright.txt in the distribution for a
5  * full listing of individual contributors.
6  *
7  * This is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License as
9  * published by the Free Software Foundation; either version 2.1 of
10  * the License, or (at your option) any later version.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this software; if not, write to the Free
19  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21  */

22 package org.jboss.classloading.spi;
23
24 import java.lang.instrument.IllegalClassFormatException JavaDoc;
25 import java.lang.instrument.Instrumentation JavaDoc;
26 import java.security.ProtectionDomain JavaDoc;
27
28 /**
29  * An implementation of this interface in order to transform class files.
30  * The transformation occurs before the class is defined by the JVM.
31  * @see java.lang.instrument.ClassFileTransformer
32  *
33  * @author Scott.Stark@jboss.org
34  * @version $Revision:$
35  */

36 public interface Translator
37 {
38    /**
39     * The implementation of this method may transform the supplied class file and
40     * return a new replacement class file.
41     *
42     * @param loader - the DomainClassLoader owning the defining loader of the
43     * class to be transformed, may be <code>null</code> if the bootstrap loader
44     * @param className - the name of the class in the internal form of fully
45     * qualified class and interface names.
46     * @param classBeingRedefined - if this is a redefine, the class being redefined,
47     * otherwise <code>null</code>
48     * @param protectionDomain - the protection domain of the class being defined or redefined
49     * @param classfileBuffer - the input byte buffer in class file format - must not be modified
50     *
51     * @throws IllegalClassFormatException if the input does not represent a well-formed class file
52     * @return a well-formed class file buffer (the result of the transform),
53                or <code>null</code> if no transform is performed.
54     * @see Instrumentation#redefineClasses
55     */

56    public byte[] transform(DomainClassLoader loader,
57          String JavaDoc className,
58          Class JavaDoc<?> classBeingRedefined,
59          ProtectionDomain JavaDoc protectionDomain,
60          byte[] classfileBuffer)
61          throws IllegalClassFormatException JavaDoc;
62
63    /** Called to indicate that the ClassLoader is being discarded by the server.
64    *
65    * @param loader - a class loader that has possibly been used previously
66    * as an argument to transform.
67    */

68    public void unregisterClassLoader(DomainClassLoader loader);
69 }
70
Popular Tags