import java.lang.instrument.UnmodifiableClassException;
import java.util.Map;
public class InstrumentationRedefiner implements Redefiner {
public void redefineClasses(Map<Class<?>, byte[]> classes) throws ClassNotFoundException, UnmodifiableClassException {
Instrumentation instrumentation = InstrumentationAgent.INSTRUMENTATION;
if (instrumentation == null) {
throw new IllegalStateException("Instrumentation agent is not properly installed!");
}
ClassDefinition[] definitions = new ClassDefinition[classes.size()];
int i = 0;
for (Map.Entry<Class<?>, byte[]> entry : classes.entrySet()) {
definitions[i++] = new ClassDefinition(entry.getKey(), entry.getValue());
}
instrumentation.redefineClasses(definitions);
}