@Override public String getKey() { return field.getName(); }
@Override public String getKey() { return field.getName(); }
@Override public String toString() { return toMap.getFullyQualifiedName() + "#" + field.getName(); } });
@Override public String toString() { return toMap.getFullyQualifiedName() + "#" + field.getName(); } });
@Override public VariableReferenceContextualStatementBuilder loadField(MetaField field) { appendCallElement(new LoadField(field.getName())); return this; }
public static String fieldAccess(final MetaField field) { if (field.isStatic()) { return "@" + field.getDeclaringClass().getFullyQualifiedName().replace('$', '.') + "::" + field.getName(); } else { return "instance.@" + field.getDeclaringClass().getFullyQualifiedName().replace('$', '.') + "::" + field.getName(); } }
public static String fieldAccess(final MetaField field) { if (field.isStatic()) { return "@" + field.getDeclaringClass().getFullyQualifiedName().replace('$', '.') + "::" + field.getName(); } else { return "instance.@" + field.getDeclaringClass().getFullyQualifiedName().replace('$', '.') + "::" + field.getName(); } }
@Override public VariableReferenceContextualStatementBuilder loadField(MetaField field) { appendCallElement(new LoadField(field.getName())); return this; }
ObjectBuilder(final MetaClass type, final Context context, final CallElementBuilder callElementBuilder) { super(context, callElementBuilder); if (context != null) { context.attachClass(type); Arrays.stream(type.getDeclaredFields()). forEach(f -> context.addVariable(Variable.create(f.getName(), f.getType()))); } this.type = type; }
ObjectBuilder(final MetaClass type, final Context context, final CallElementBuilder callElementBuilder) { super(context, callElementBuilder); if (context != null) { context.attachClass(type); Arrays.stream(type.getDeclaredFields()). forEach(f -> context.addVariable(Variable.create(f.getName(), f.getType()))); } this.type = type; }
/** * Returns a string that uniquely identifies this field for purposes of * comparison with other implementations of {@link MetaField}. The returned * string includes the declaring class name, the field name, and the field's * type. * * @return */ public String hashString() { if (_hashString != null) return _hashString; return _hashString = MetaField.class.getName() + ":" + getDeclaringClass().getFullyQualifiedName() + "." + getName() + "::" + getType().getFullyQualifiedName(); }
/** * Returns a string that uniquely identifies this field for purposes of * comparison with other implementations of {@link MetaField}. The returned * string includes the declaring class name, the field name, and the field's * type. * * @return */ public String hashString() { if (_hashString != null) return _hashString; return _hashString = MetaField.class.getName() + ":" + getDeclaringClass().getFullyQualifiedName() + "." + getName() + "::" + getType().getFullyQualifiedName(); }
public static String getPrivateFieldAccessorName(final MetaField field) { return field.getDeclaringClass().getName() + "_" + getTypeName(field.getType()) + "_" + field.getName(); }
public static String getPrivateFieldAccessorName(final MetaField field) { return field.getDeclaringClass().getName() + "_" + getTypeName(field.getType()) + "_" + field.getName(); }
@Test public void testGetFields() { final List<String> expectedFields = Lists.newLinkedList(); expectedFields.add(Child.class.getCanonicalName() + "." + "childPublic"); expectedFields.add(Parent.class.getCanonicalName() + "." + "parentPublic"); final ArrayList<String> actualFields = new ArrayList<>(); for (final MetaField field : getMetaClass(Child.class).getFields()) { actualFields.add(field.getDeclaringClass().getCanonicalName() + "." + field.getName()); } Collections.sort(expectedFields); Collections.sort(actualFields); assertEquals(expectedFields.toString(), actualFields.toString()); }
private void addFieldInjectionPoints(final Injectable typeInjectable, final DependencyGraphBuilder builder, final List<String> problems) { final boolean noPublicFieldsAllowed = typeInjectable.getWiringElementTypes().contains(WiringElementType.NormalScopedBean); final MetaClass type = typeInjectable.getInjectedType(); final Collection<Class<? extends Annotation>> injectAnnotations = injectionContext.getAnnotationsForElementType(WiringElementType.InjectionPoint); for (final Class<? extends Annotation> inject : injectAnnotations) { for (final MetaField field : type.getFieldsAnnotatedWith(inject)) { if (noPublicFieldsAllowed && field.isPublic()) { problems.add("The normal scoped bean " + type.getFullyQualifiedName() + " has a public field " + field.getName()); } builder.addFieldDependency(typeInjectable, field.getType(), qualFactory.forSink(field), field); } } }
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; }
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; }