package org.hotswap.agent.plugin.proxy;
import org.hotswap.agent.javassist.ClassPool;
import org.hotswap.agent.logging.AgentLogger;
/**
* Proxy transformations that can be done in one step
*
* @author Erki Ehtla
*
*/
public abstract class SinglestepProxyTransformer extends AbstractProxyTransformer {
private static final AgentLogger LOGGER = AgentLogger.getLogger(SinglestepProxyTransformer.class);
protected byte[] classfileBuffer;
public SinglestepProxyTransformer(Class<?> classBeingRedefined, ClassPool classPool, byte[] classfileBuffer) {
super(classBeingRedefined, classPool);
this.classfileBuffer = classfileBuffer;
}
/**
* Handles the current transformation state
*
* @return
* @throws Exception
*/
public byte[] transformRedefine() throws Exception {
if (!isTransformingNeeded()) {
return classfileBuffer;
}
classfileBuffer = getTransformer().transform(getGenerator().generate());
LOGGER.reload("Class '{}' has been reloaded.", classBeingRedefined.getName());
return classfileBuffer;
}
}