private void addTargets(AccessibleObject accessibleObject, Member member, IntrospectionContext context, Reference definition) { Targets targetsAnnotation = accessibleObject.getAnnotation(Targets.class); if (targetsAnnotation != null) { Multiplicity multiplicity = definition.getMultiplicity(); if (multiplicity != Multiplicity.ONE_N && multiplicity != Multiplicity.ZERO_N) { Class<?> clazz = member.getDeclaringClass(); String name = member.getName(); InvalidAnnotation error = new InvalidAnnotation("Reference is not a multiplicity: " + name, accessibleObject, targetsAnnotation, clazz); context.addError(error); return; } for (String value : targetsAnnotation.value()) { org.fabric3.api.model.type.component.Target target = parseTarget(value, targetsAnnotation, accessibleObject, member, context); if (target != null) { definition.addTarget(target); } } } else { Target targetAnnotation = accessibleObject.getAnnotation(Target.class); if (targetAnnotation != null) { org.fabric3.api.model.type.component.Target target = parseTarget(targetAnnotation.value(), targetAnnotation, accessibleObject, member, context); if (target != null) { definition.addTarget(target); } } } }
/** * Adds a reference with the given name and target. * * @param name the reference name * @param target the target */ public T reference(String name, String target, boolean required) { checkState(); Component<?> definition = getComponent(); Multiplicity multiplicity = required ? Multiplicity.ONE_ONE : Multiplicity.ZERO_ONE; Reference<Component> reference = new Reference<>(name, multiplicity); reference.addTarget(new Target(target)); definition.add(reference); return builder(); }
/** * Adds a reference with the given name and target. * * @param name the reference name * @param target the target */ public T reference(String name, String target) { checkState(); Component<?> definition = getComponent(); Reference<Component> reference = new Reference<>(name, Multiplicity.ONE_ONE); reference.addTarget(new Target(target)); definition.add(reference); return builder(); }
/** * Adds a reference with the given name and target. * * @param name the reference name * @param target the target * @param multiplicity the multiplicity */ public T reference(String name, String target, Multiplicity multiplicity) { checkState(); Component<?> definition = getComponent(); Reference<Component> reference = new Reference<>(name, multiplicity); reference.addTarget(new Target(target)); definition.add(reference); return builder(); }