/**
* Copyright (C) 2001-2005 France Telecom R&D
*/
package org.objectweb.speedo.generation.enhancer.pc.jdo;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
import org.objectweb.speedo.generation.enhancer.pc.PersistentClassEnhancer;
import org.objectweb.speedo.lib.Personality;
import org.objectweb.speedo.metadata.SpeedoClass;
import org.objectweb.util.monolog.api.Logger;
import java.util.Map;
public class JDOPersistentClassEnhancer extends PersistentClassEnhancer {
public JDOPersistentClassEnhancer() {
super(Personality.JDO);
}
protected ClassVisitor getFirstVisitors(ClassWriter cw,
Logger log,
String classToWrite,
Map ctx) {
ClassVisitor current = super.getFirstVisitors(cw, log, classToWrite, ctx);
final JDOImplRegistrationAdder regAdder = new JDOImplRegistrationAdder(current, classToWrite, log);
regAdder.setGenerationAllowed(false);
current = regAdder;
ctx.put("regAdder", regAdder);
return current;
}
protected ClassVisitor getParentVisitors(ClassVisitor current,
Logger log,
String classToWrite,
SpeedoClass sc,
Map ctx) {
return super.getParentVisitors(
new JDOPersistenceCapableAdder(current, log, sc, scp, Personality.JDO),
log, classToWrite, sc, ctx);
}
protected ClassVisitor getVisitors(ClassVisitor current,
Logger log,
String classToWrite,
SpeedoClass sc,
Map ctx) {
current = super.getVisitors(current, log, classToWrite, sc, ctx);
((JDOImplRegistrationAdder) ctx.get("regAdder")).setGenerationAllowed(true);
return current;
}
}