/** * Returns true if the reference is not keyed, true if the reference is keyed and the target specifies a key, false if the reference is keyed and * the target does not specify a key. * * @param logicalReference the logical reference * @param target the target * @return true if the reference is not keyed, true if the reference is keyed and the target specifies a key, false if the reference is keyed and * the target does not specify a key */ private boolean validKey(LogicalReference logicalReference, LogicalComponent<?> target) { return !logicalReference.getDefinition().isKeyed() || target.getDefinition().getKey() != null || target.getDefinition().getComponentType().getKey() != null; } }
public PhysicalSourceDefinition generateSource(LogicalReference reference, EffectivePolicy policy) throws GenerationException { URI uri = reference.getUri(); ServiceContract serviceContract = reference.getDefinition().getServiceContract(); String interfaceName = getInterfaceName(serviceContract); JavaSourceDefinition wireDefinition = new JavaSourceDefinition(); wireDefinition.setUri(uri); wireDefinition.setInjectable(new Injectable(InjectableType.REFERENCE, uri.getFragment())); wireDefinition.setInterfaceName(interfaceName); // assume for now that any wire from a JUnit component can be optimized wireDefinition.setOptimizable(true); if (reference.getDefinition().isKeyed()) { wireDefinition.setKeyed(true); DataType<?> type = reference.getDefinition().getKeyDataType(); String className = type.getPhysical().getName(); wireDefinition.setKeyClassName(className); } return wireDefinition; }
/** * Validates a target key is present for keyed references. * * @param reference the reference * @param service the service * @param context the logical context */ private void validateKeyedReference(LogicalReference reference, LogicalService service, InstantiationContext context) { if (!reference.getDefinition().isKeyed()) { return; } LogicalComponent<?> parent = service.getParent(); if (parent.getDefinition().getKey() == null && parent.getDefinition().getComponentType().getKey() == null) { KeyNotFound error = new KeyNotFound(reference); context.addError(error); } }