private void maybeImplementFactoryInit(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final List<Statement> factoryInitStatements) { if (!factoryInitStatements.isEmpty()) { bodyBlockBuilder.publicMethod(void.class, "init", finalOf(Context.class, "context")).appendAll(factoryInitStatements).finish(); } }
private void maybeImplementInvokePostConstructs(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final List<Statement> invokePostConstructStatements) { if (!invokePostConstructStatements.isEmpty()) { bodyBlockBuilder .publicMethod(MetaClassFactory.get(void.class), "invokePostConstructs", finalOf(injectable.getInjectedType(), "instance")) .appendAll(invokePostConstructStatements).finish(); } }
protected void implementCreateInstance(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final List<Statement> createInstanceStatements) { String createInstanceMethodName; Parameter[] params; if (injectable.isContextual()) { createInstanceMethodName = "createContextualInstance"; params = new Parameter[] { finalOf(ContextManager.class, "contextManager"), finalOf(Class[].class, "typeArgs"), finalOf(Annotation[].class, "qualifiers") }; } else { createInstanceMethodName = "createInstance"; params = new Parameter[] { finalOf(ContextManager.class, "contextManager") }; } bodyBlockBuilder.publicMethod(injectable.getInjectedType(), createInstanceMethodName, params) .appendAll(createInstanceStatements) .finish(); }
private void maybeImplementDestroyInstance(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final List<Statement> destroyInstanceStatements) { if (!destroyInstanceStatements.isEmpty()) { bodyBlockBuilder .publicMethod(void.class, "generatedDestroyInstance", finalOf(Object.class, "instance"), finalOf(ContextManager.class, "contextManager")) .append(loadVariable("this").invoke("destroyInstanceHelper", Stmt.castTo(injectable.getInjectedType(), loadVariable("instance")), loadVariable("contextManager"))) .finish(); bodyBlockBuilder.publicMethod(void.class, "destroyInstanceHelper", finalOf(injectable.getInjectedType(), "instance"), finalOf(ContextManager.class, "contextManager")) .appendAll(destroyInstanceStatements).finish(); } }