protected boolean isProxiable(MetaClassMember member) { if(member != null) { if (!member.isFinal() && member.isPublic()) { return true; } else { logger.log(DEBUG, "Member " + member.getName() + " in " + bindable.getName() + " is " + (member.isFinal() ? "final" : "not public") + ", cannot be proxied."); } } return false; } }
@Override public MetaClass getEnclosingType(final HasAnnotations annotated) { return ((MetaParameter) annotated).getDeclaringMember().getDeclaringClass(); }
private String annotatedName() { if (annotated instanceof MetaClassMember) { return ((MetaClassMember) annotated).getDeclaringClassName() + "_" + ((MetaClassMember) annotated).getName(); } else if (annotated instanceof MetaParameter) { final MetaClassMember declaringMember = ((MetaParameter) annotated).getDeclaringMember(); return declaringMember.getDeclaringClassName() + "_" + declaringMember.getName() + "_" + ((MetaParameter) annotated).getName(); } else { throw new RuntimeException("Not yet implemented!"); } }
public static Scope scopeOf(final MetaClassMember member) { if (member.isPublic()) { return Scope.Public; } else if (member.isPrivate()) { return Scope.Private; } else if (member.isProtected()) { return Scope.Protected; } else { return Scope.Package; } }
public static DefModifiers modifiersOf(final MetaClassMember member) { final DefModifiers defModifiers = new DefModifiers(); if (member.isAbstract()) { defModifiers.addModifiers(Modifier.Abstract); } else if (member.isFinal()) { defModifiers.addModifiers(Modifier.Final); } else if (member.isStatic()) { defModifiers.addModifiers(Modifier.Static); } else if (member.isSynchronized()) { defModifiers.addModifiers(Modifier.Synchronized); } else if (member.isVolatile()) { defModifiers.addModifiers(Modifier.Volatile); } else if (member.isTransient()) { defModifiers.addModifiers(Modifier.Transient); } return defModifiers; }
private void resolveProducerSpecialization(final InjectableImpl specialization, final Set<InjectableImpl> toBeRemoved) { final ProducerInstanceDependencyImpl producerMemberDep = GraphUtil.findProducerInstanceDep(specialization); if (producerMemberDep.producingMember instanceof MetaMethod) { final MetaMethod specializedMethod = GraphUtil.getOverridenMethod((MetaMethod) producerMemberDep.producingMember); final MetaClass specializingType = producerMemberDep.producingMember.getDeclaringClass(); if (specializedMethod != null && specializedMethod.isAnnotationPresent(Produces.class)) { updateLinksToSpecialized(specialization, toBeRemoved, specializedMethod, specializingType); } } else { throw new RuntimeException("Specialized producers can only be methods. Found " + producerMemberDep.producingMember + " in " + producerMemberDep.producingMember.getDeclaringClassName()); } }
public String getName(HasAnnotations annotated) { return ((MetaClassMember) annotated).getName(); }
private boolean isParamOfNonPublicMethod(final HasAnnotations annotated) { if (!(annotated instanceof MetaParameter)) { return false; } final MetaClassMember member = ((MetaParameter) annotated).getDeclaringMember(); return member instanceof MetaMethod && !member.isPublic(); }
public static DefModifiers modifiersOf(final MetaClassMember member) { final DefModifiers defModifiers = new DefModifiers(); if (member.isAbstract()) { defModifiers.addModifiers(Modifier.Abstract); } else if (member.isFinal()) { defModifiers.addModifiers(Modifier.Final); } else if (member.isStatic()) { defModifiers.addModifiers(Modifier.Static); } else if (member.isSynchronized()) { defModifiers.addModifiers(Modifier.Synchronized); } else if (member.isVolatile()) { defModifiers.addModifiers(Modifier.Volatile); } else if (member.isTransient()) { defModifiers.addModifiers(Modifier.Transient); } return defModifiers; }
public static Scope scopeOf(final MetaClassMember member) { if (member.isPublic()) { return Scope.Public; } else if (member.isPrivate()) { return Scope.Private; } else if (member.isProtected()) { return Scope.Protected; } else { return Scope.Package; } }
private AnnotationWrapper createNamed(final HasAnnotations annotated) { final String rawName; if (annotated instanceof MetaClassMember) { rawName = ((MetaClassMember) annotated).getName(); } else if (annotated instanceof MetaClass) { rawName = ((MetaClass) annotated).getName(); } else if (annotated instanceof MetaParameter) { rawName = ((MetaParameter) annotated).getName(); } else { throw new RuntimeException("Unrecognized annotated type " + annotated.getClass().getName()); } return createNamed(CDIAnnotationUtils.formatDefaultElName(rawName)); }
/** * For public methods, fields, constructors, and parameters of public methods, * this method does nothing. Otherwise this method generates private * accessors/mutators. In the case of a parameter this method acts as if * called for the declaring method. * * This method is idempotent. * * @param annotated * A method, field, or parameter that may or may not be public. */ public void ensureMemberExposed(final HasAnnotations annotated) { final MetaClassMember member; if (annotated instanceof MetaParameter) { member = ((MetaParameter) annotated).getDeclaringMember(); } else { member = (MetaClassMember) annotated; } if (!member.isPublic()) { if (member instanceof MetaField) { addExposedField((MetaField) member); } else if (member instanceof MetaMethod) { addExposedMethod((MetaMethod) member); } else if (member instanceof MetaConstructor) { addExposedConstructor((MetaConstructor) member); } } }
protected boolean isProxiable(MetaClassMember member) { if(member != null) { if (!member.isFinal() && member.isPublic()) { return true; } else { logger.log(DEBUG, "Member " + member.getName() + " in " + bindable.getName() + " is " + (member.isFinal() ? "final" : "not public") + ", cannot be proxied."); } } return false; } }
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
public static String getLocalVariableName(final MetaParameter param) { final MetaClassMember member = param.getDeclaringMember(); return member.getName() + "_" + param.getName() + "_" + param.getIndex(); }
private static void filterResultsParameter(final Collection<MetaParameter> result, final Set<String> packages, final String excludeRegEx) { final Pattern excludePattern; if (excludeRegEx != null) { excludePattern = Pattern.compile(excludeRegEx); } else { excludePattern = null; } final Iterator<MetaParameter> filterIterator = result.iterator(); while (filterIterator.hasNext()) { _removeIfNotMatches(filterIterator, filterIterator.next().getDeclaringMember().getDeclaringClass(), packages, excludePattern); } }
public Integer getIndex() { if (index == null) { final MetaClassMember member = getDeclaringMember(); final MetaParameter[] params; if (member instanceof MetaMethod) { params = ((MetaMethod) member).getParameters(); } else if (member instanceof MetaConstructor) { params = ((MetaConstructor) member).getParameters(); } else { throw new RuntimeException("Not yet implemented!"); } for (int i = 0; i < params.length; i++) { if (params[i] == this || params[i].getName().equals(getName())) { index = i; return index; } } throw new RuntimeException("Could not find index of parameter " + getName() + " in " + getDeclaringMember().getName() + " in " + getDeclaringMember().getDeclaringClassName()); } return index; } }
private static void filterResultsParameter(final Collection<MetaParameter> result, final Set<String> packages, final String excludeRegEx) { final Pattern excludePattern; if (excludeRegEx != null) { excludePattern = Pattern.compile(excludeRegEx); } else { excludePattern = null; } final Iterator<MetaParameter> filterIterator = result.iterator(); while (filterIterator.hasNext()) { _removeIfNotMatches(filterIterator, filterIterator.next().getDeclaringMember().getDeclaringClass(), packages, excludePattern); } }
private int getScore(final InjectableImpl c) { if (c.injectableType.equals(InjectableType.Producer)) { return getDistanceFromObject(findProducerInstanceDep(c).producingMember.getDeclaringClass()); } else { return getDistanceFromObject(c.type); } }
private void removeLinksToProducedTypes(final InjectableImpl specialized, final Set<InjectableImpl> toBeRemoved) { final Collection<InjectableReference> producedReferences = new ArrayList<>(); for (final MetaMethod method : specialized.type.getDeclaredMethodsAnnotatedWith(Produces.class)) { producedReferences.add(lookupInjectableReference(method.getReturnType(), qualFactory.forSource(method))); } for (final MetaField field : specialized.type.getDeclaredFields()) { if (field.isAnnotationPresent(Produces.class)) { producedReferences.add(lookupInjectableReference(field.getType(), qualFactory.forSource(field))); } } for (final InjectableReference reference : producedReferences) { final Iterator<InjectableBase> linkIter = reference.linked.iterator(); while (linkIter.hasNext()) { final InjectableBase link = linkIter.next(); if (link instanceof InjectableImpl && ((InjectableImpl) link).injectableType.equals(InjectableType.Producer)) { final InjectableImpl concreteLink = (InjectableImpl) link; final ProducerInstanceDependencyImpl producerMemberDep = GraphUtil.findProducerInstanceDep(concreteLink); if (producerMemberDep.producingMember.getDeclaringClass().equals(specialized.type)) { linkIter.remove(); toBeRemoved.add(concreteLink); } } } } }