/** * */ package org.hivedb.util.classgen; import net.sf.cglib.core.DefaultNamingPolicy; import net.sf.cglib.core.Predicate; import org.hivedb.annotations.GeneratedClass; class ImplNamer extends DefaultNamingPolicy { private Class representedInterface; public ImplNamer(Class representedInterface) { this.representedInterface = representedInterface; } public String getClassName(String prefix, String source, Object key, Predicate names) { return representedInterface.getAnnotation(GeneratedClass.class) != null ? removeClass(representedInterface.getCanonicalName()) + ((GeneratedClass) representedInterface.getAnnotation(GeneratedClass.class)).value() : super.getClassName(prefix, source, key, names); } private String removeClass(String prefix) { return prefix.substring(0,prefix.lastIndexOf(".")+1); // maintains the final dot } }