public JExpression doRebind(String clsName, ReflectionGeneratorContext params) throws UnableToCompleteException {
params.getLogger().log(Type.INFO, "Binding magic class for " + clsName);
JDeclaredType type = params.getAst().searchForTypeBySource(params.getClazz().getRefType().getName());
StandardGeneratorContext ctx = params.getGeneratorContext();
Class<? extends Generator> generator = MagicClassGenerator.class;
String result = ctx.runGenerator(params.getLogger(), generator,
SourceUtil.toSourceName(type.getName()));
ctx.finish(params.getLogger());
params.getLogger().log(Type.INFO, "Generated Class Enhancer: " + result);
JDeclaredType success = params.getAst().searchForTypeBySource(result);
for (JMethod method : success.getMethods()) {
if (method.isStatic() && method.getName().equals("enhanceClass")) {
JMethodCall call = new JMethodCall(method.getSourceInfo(), null, method);
call.addArg(params.getClazz().makeStatement().getExpr());
return call;
}
}
params.getLogger().log(Type.ERROR, "Unable to load "+result+".enhanceClass()");
throw new UnableToCompleteException();
}