Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 which accompanies this distribution. The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License is available at http://www.eclipse.org/org/documents/edl-v10.php. Contributors: Linda DeMichiel - Java Persistence 2.1 Linda DeMichiel - Java Persistence 2.0
/******************************************************************************* * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Linda DeMichiel - Java Persistence 2.1 * Linda DeMichiel - Java Persistence 2.0 * ******************************************************************************/
package javax.persistence.spi; import java.security.ProtectionDomain; import java.lang.instrument.IllegalClassFormatException;
A persistence provider supplies an instance of this interface to the PersistenceUnitInfo.addTransformer method. The supplied transformer instance will get called to transform entity class files when they are loaded or redefined. The transformation occurs before the class is defined by the JVM.
Since:Java Persistence 1.0
/** * A persistence provider supplies an instance of this * interface to the {@link PersistenceUnitInfo#addTransformer * PersistenceUnitInfo.addTransformer} * method. The supplied transformer instance will get * called to transform entity class files when they are * loaded or redefined. The transformation occurs before * the class is defined by the JVM. * * @since Java Persistence 1.0 */
public interface ClassTransformer {
Invoked when a class is being loaded or redefined. The implementation of this method may transform the supplied class file and return a new replacement class file.
Params:
  • loader – the defining loader of the class to be transformed, may be null if the bootstrap loader
  • className – the name of the class in the internal form of fully qualified class and interface names
  • classBeingRedefined – if this is a redefine, the class being redefined, otherwise null
  • protectionDomain – the protection domain of the class being defined or redefined
  • classfileBuffer – the input byte buffer in class file format - must not be modified
Throws:
Returns:a well-formed class file buffer (the result of the transform), or null if no transform is performed
/** * Invoked when a class is being loaded or redefined. * The implementation of this method may transform the * supplied class file and return a new replacement class * file. * * @param loader the defining loader of the class to be * transformed, may be null if the bootstrap loader * @param className the name of the class in the internal form * of fully qualified class and interface names * @param classBeingRedefined if this is a redefine, the * class being redefined, otherwise null * @param protectionDomain the protection domain of the * class being defined or redefined * @param classfileBuffer the input byte buffer in class * file format - must not be modified * @return a well-formed class file buffer (the result of * the transform), or null if no transform is performed * @throws IllegalClassFormatException if the input does * not represent a well-formed class file */
byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException; }