public static ContextualStatementBuilder getPublicOrPrivateFieldValue(final FactoryController controller, final MetaField field) { if (field.isPublic()) { return loadVariable("instance").loadField(field); } else { return controller.exposedFieldStmt(field); } }
private List<Statement> fieldCreateInstanceStatements(final MetaField producingMember, final Injectable producerInjectable, final Injectable producedInjectable, final ClassStructureBuilder<?> bodyBlockBuilder) { final List<Statement> stmts = new ArrayList<>(); controller.ensureMemberExposed(producingMember); if (!producingMember.isStatic()) { final Statement producerInstanceValue = loadVariable("contextManager").invoke("getInstance", producerInjectable.getFactoryName()); stmts.add(declareVariable(PRODUCER_INSTANCE, producerInjectable.getInjectedType(), producerInstanceValue)); stmts.add(loadVariable(PRODUCER_INSTANCE).assignValue(Stmt.castTo(producerInjectable.getInjectedType(), invokeStatic(Factory.class, "maybeUnwrapProxy", loadVariable(PRODUCER_INSTANCE))))); } final Statement invocation = controller.exposedFieldStmt(loadVariable(PRODUCER_INSTANCE), producingMember); stmts.add(declareFinalVariable("instance", producedInjectable.getInjectedType(), invocation)); if (!producingMember.isStatic()) { stmts.add(setProducerInstanceReference()); if (producerInjectable.getWiringElementTypes().contains(WiringElementType.DependentBean)) { stmts.add(loadVariable("this").invoke("registerDependentScopedReference", loadVariable("instance"), loadVariable(PRODUCER_INSTANCE))); } } stmts.add(loadVariable("instance").returnValue()); return stmts; }
controller.exposedFieldStmt(field);
controller.exposedFieldStmt(field);
if (fieldDep.getField().isAnnotationPresent(AutoBound.class)) { if (!fieldDep.getField().isPublic()) { controller.exposedFieldStmt(fieldDep.getField());
if (fieldDep.getField().isAnnotationPresent(AutoBound.class)) { if (!fieldDep.getField().isPublic()) { controller.exposedFieldStmt(fieldDep.getField());
PrivateAccessUtil.getPrivateFieldAccessorName(field), Variable.get("instance")); controller.exposedFieldStmt(field); break;
PrivateAccessUtil.getPrivateFieldAccessorName(field), Variable.get("instance")); controller.exposedFieldStmt(field); break;