1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20 //
21 // This source code implements specifications defined by the Java
22 // Community Process. In order to remain compliant with the specification
23 // DO NOT add/change/or delete method signatures!
24 //
25
26 package javax.persistence.spi;
27
28 import java.security.ProtectionDomain;
29 import java.lang.instrument.IllegalClassFormatException;
30
31 /**
32 * @version $Rev: 467742 $ $Date: 2006-10-25 12:30:38 -0700 (Wed, 25 Oct 2006) $
33 */
34 public interface ClassTransformer {
35 /**
36 * Invoked when a class is being loaded or redefined. The implementation of this
37 * method may transform the supplied class file and return a new replacement class
38 * file.
39 *
40 * @param loader The defining loader of the class to be transformed, may be null if
41 * the bootstrap loader
42 * @param className The name of the class in the internal form of fully qualified
43 * class and interface names
44 * @param classBeingRedefined If this is a redefine, the class being redefined,
45 * otherwise null
46 * @param protectionDomain The protection domain of the class being defined or
47 * redefined
48 * @param classfileBuffer The input byte buffer in class file format - must not be
49 * modified
50 * @return A well-formed class file buffer (the result of the transform), or null if
51 * no transform is performed
52 * @throws java.lang.instrument.IllegalClassFormatException
53 * If the input does not represent a well-formed
54 * class file
55 */
56 byte[] transform(
57 ClassLoader loader,
58 String className,
59 Class<?> classBeingRedefined,
60 ProtectionDomain protectionDomain,
61 byte[] classfileBuffer) throws IllegalClassFormatException;
62
63 }