private static String getPrivateMemberName(final MetaClassMember member) { if (member instanceof MetaField) { return PrivateAccessUtil.getPrivateFieldAccessorName((MetaField) member); } else { return PrivateAccessUtil.getPrivateMethodName((MetaMethod) member); } }
public static void addPrivateAccessStubs(final String type, final ClassStructureBuilder<?> classBuilder, final MetaField f) { addPrivateAccessStubs(PrivateAccessType.Both, type, classBuilder, f); }
public static BuildMetaClass makeProxy(final MetaClass toProxy, final String privateAccessorType, final Map<String, ProxyProperty> proxyProperties, final Map<MetaMethod, Map<WeaveType, Collection<Statement>>> weavingStatements) { return makeProxy( PrivateAccessUtil.condensify(toProxy.getPackageName()) + "_" + toProxy.getName() + "_proxy", toProxy, privateAccessorType, proxyProperties, weavingStatements); }
PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, field); context.markExposed(field, classStructureBuilder.getClassDefinition().getName()); .getPrivateFieldAccessorName(field), loadVariable("a0")); if (!method.isPublic()) { if (!context.isExposed(method, classStructureBuilder.getClassDefinition().getName())) { PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, method); context.markExposed(method, classStructureBuilder.getClassDefinition().getName()); PrivateAccessUtil.getPrivateMethodName(method), loadVariable("a0"));
@Override public ContextualStatementBuilder call(final Statement instance, final HasAnnotations annotated, final BuildMetaClass factory, final Statement... params) { final MetaField field = (MetaField) annotated; if (field.isPublic()) { if (field.isStatic()) { return loadStatic(field.getDeclaringClass(), field.getName()); } else { return nestedCall(instance).loadField(field); } } else { final Object[] accessorParams = (field.isStatic() ? new Object[0] : new Object[] { instance }); return invokeStatic(notNull(factory), getPrivateFieldAccessorName(field), accessorParams); } } },
/** * This should only be called for non-public constructors. This method forces a * private accessor to be generated for the constructor. * * @param constructor * A non-public constructor. * @return A statement for invoking the given constructor. */ public ContextualStatementBuilder exposedConstructorStmt(final MetaConstructor constructor, final Statement... params) { addExposedConstructor(constructor); return invokeStatic(factory, getPrivateMethodName(constructor), (Object[]) params); }
PrivateAccessUtil.addPrivateAccessStubs("jsni", pageImplBuilder, metaMethod, new Modifier[] {}); methodToAppendTo.append(Stmt.loadVariable("this").invoke(PrivateAccessUtil.getPrivateMethodName(metaMethod), paramValues));
PrivateAccessUtil.addPrivateAccessStubs(PrivateAccessType.Both, "jsni", containingClassBuilder, field, new Modifier[]{}); .invoke(PrivateAccessUtil.getPrivateFieldAccessorName(field), Stmt.castTo(et.getJavaType(), Stmt.loadVariable(entityInstanceParam))) .returnValue());
public static String getPrivateFieldAccessorName(final MetaField field) { return field.getDeclaringClass().getName() + "_" + getTypeName(field.getType()) + "_" + field.getName(); }
PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, field); context.markExposed(field, classStructureBuilder.getClassDefinition().getName()); .getPrivateFieldAccessorName(field), loadVariable("a0")); if (!method.isPublic()) { if (!context.isExposed(method, classStructureBuilder.getClassDefinition().getName())) { PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, method); context.markExposed(method, classStructureBuilder.getClassDefinition().getName()); PrivateAccessUtil.getPrivateMethodName(method), loadVariable("a0"));
public static String initCachedField(final ClassStructureBuilder<?> classBuilder, final MetaField f) { createJavaReflectionFieldInitializerUtilMethod(classBuilder); final String fieldName = PrivateAccessUtil.getPrivateFieldAccessorName(f) + "_fld"; if (classBuilder.getClassDefinition().getField(fieldName) != null) { return fieldName; } classBuilder.privateField(fieldName, Field.class).modifiers(Modifier.Static) .initializesWith(Stmt.invokeStatic(classBuilder.getClassDefinition(), JAVA_REFL_FLD_UTIL_METH, f.getDeclaringClass(), f.getName())).finish(); return fieldName; }
@Override protected List<Statement> generateInvokePostConstructsStatements(final ClassStructureBuilder<?> bodyBlockBuilder, final Injectable injectable, final DependencyGraph graph, final InjectionContext injectionContext) { final List<Statement> stmts = new ArrayList<>(); final Queue<MetaMethod> postConstructMethods = gatherPostConstructs(injectable); for (final MetaMethod postConstruct : postConstructMethods) { if (postConstruct.isPublic()) { stmts.add(loadVariable("instance").invoke(postConstruct)); } else { controller.ensureMemberExposed(postConstruct); final String accessorName = getPrivateMethodName(postConstruct); stmts.add(invokePrivateAccessorWithNoParams(accessorName)); } } return stmts; }
PrivateAccessUtil.addPrivateAccessStubs("jsni", pageImplBuilder, metaMethod, new Modifier[] {}); methodToAppendTo.append(Stmt.loadVariable("this").invoke(PrivateAccessUtil.getPrivateMethodName(metaMethod), paramValues));
PrivateAccessUtil.addPrivateAccessStubs(PrivateAccessType.Write, "jsni", pageImplBuilder, field, new Modifier[] {}); String injectorName = PrivateAccessUtil.getPrivateFieldAccessorName(field);
public static String getPrivateFieldAccessorName(final MetaField field) { return field.getDeclaringClass().getName() + "_" + getTypeName(field.getType()) + "_" + field.getName(); }
PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, constructor); builder.append(Stmt.declareVariable(toMap).named("entity") Stmt.invokeStatic( classStructureBuilder.getClassDefinition(), PrivateAccessUtil.getPrivateMethodName(constructor), (Object[]) constructorParameters))); PrivateAccessUtil.addPrivateAccessStubs(gwtTarget ? "jsni" : "reflection", classStructureBuilder, field); context.markExposed(field, classStructureBuilder.getClassDefinition().getName()); PrivateAccessUtil.getPrivateFieldAccessorName(field), loadVariable("entity"), val);
public static String initCachedField(final ClassStructureBuilder<?> classBuilder, final MetaField f) { createJavaReflectionFieldInitializerUtilMethod(classBuilder); final String fieldName = PrivateAccessUtil.getPrivateFieldAccessorName(f) + "_fld"; if (classBuilder.getClassDefinition().getField(fieldName) != null) { return fieldName; } classBuilder.privateField(fieldName, Field.class).modifiers(Modifier.Static) .initializesWith(Stmt.invokeStatic(classBuilder.getClassDefinition(), JAVA_REFL_FLD_UTIL_METH, f.getDeclaringClass(), f.getName())).finish(); return fieldName; }
private void maybeInvokePreDestroys(final Injectable injectable, final List<Statement> destructionStmts, final ClassStructureBuilder<?> bodyBlockBuilder) { final Queue<MetaMethod> preDestroyMethods = gatherPreDestroys(injectable); for (final MetaMethod preDestroy : preDestroyMethods) { if (preDestroy.isPublic()) { destructionStmts.add(loadVariable("instance").invoke(preDestroy)); } else { controller.ensureMemberExposed(preDestroy); final String accessorName = getPrivateMethodName(preDestroy); destructionStmts.add(invokePrivateAccessorWithNoParams(accessorName)); } } }
PrivateAccessUtil.addPrivateAccessStubs("jsni", classBuilder, callback, new Modifier[]{}); methodBuilder.append( Stmt.loadVariable("this") .invoke(PrivateAccessUtil.getPrivateMethodName(callback), Stmt.newObject(listenerMetaClass), Stmt.loadVariable("targetEntity"))); PrivateAccessUtil.addPrivateAccessStubs("jsni", classBuilder, callback, new Modifier[]{}); methodBuilder.append( Stmt.loadVariable("this") .invoke(PrivateAccessUtil.getPrivateMethodName(callback), Stmt.loadVariable("targetEntity")));
private static String getPrivateMemberName(final MetaClassMember member) { if (member instanceof MetaField) { return PrivateAccessUtil.getPrivateFieldAccessorName((MetaField) member); } else { return PrivateAccessUtil.getPrivateMethodName((MetaMethod) member); } }