return new ConstructionStrategy() {
public String generateConstructor() {
String[] vars = resolveInjectionDependencies(constructor.getParameters(), ctx, constructor);
StringAppender appender = new StringAppender("final ").append(type.getQualifiedSourceName())
.append(' ').append(injector.getVarName()).append(" = new ")
.append(type.getQualifiedSourceName())
.append('(').append(commaDelimitedList(vars)).append(");\n");
handleInjectionTasks(appender, ctx, injectionTasks);
doPostConstruct(appender, injector, postConstructTasks);
return appender.toString();
}
};
} else {
// field injection
if (!hasDefaultConstructor(type))
throw new InjectionFailure("there is no default constructor for type: " + type.getQualifiedSourceName());
return new ConstructionStrategy() {
public String generateConstructor() {
StringAppender appender = new StringAppender("final ").append(type.getQualifiedSourceName())
.append(' ').append(injector.getVarName()).append(" = new ")
.append(type.getQualifiedSourceName()).append("();\n");
handleInjectionTasks(appender, ctx, injectionTasks);
doPostConstruct(appender, injector, postConstructTasks);
return appender.toString();
}
};
}
}