private void generateBindings(LogicalReference reference, LogicalComponent<?> component, ConnectionCommand command) { boolean reinjection = isBoundReinjection(reference); for (LogicalBinding<?> logicalBinding : reference.getBindings()) { generateBinding(component, logicalBinding, command, reinjection, false); } if (reference.getServiceContract().getCallbackContract() != null) { boolean bindings = reference.isBound(); if (bindings) { List<LogicalBinding<?>> callbackBindings = reference.getCallbackBindings(); if (callbackBindings.isEmpty()) { // generate callback bindings as some transports do not require an explicit callback binding configuration on the reference generateCallbackBindings(reference); } if (callbackBindings.size() != 1) { // if the reference is explicitly bound, it must have one callback binding String uri = reference.getUri().toString(); throw new UnsupportedOperationException("The runtime requires exactly one callback binding to be specified on reference: " + uri); } LogicalBinding<?> callbackBinding = callbackBindings.get(0); generateBinding(component, callbackBinding, command, reinjection, true); } } }
private void generateBindings(LogicalReference reference, LogicalComponent<?> component, ConnectionCommand command) { boolean reinjection = isBoundReinjection(reference); for (LogicalBinding<?> logicalBinding : reference.getBindings()) { generateBinding(component, logicalBinding, command, reinjection, false); } if (reference.getServiceContract().getCallbackContract() != null) { boolean bindings = reference.isBound(); if (bindings) { List<LogicalBinding<?>> callbackBindings = reference.getCallbackBindings(); if (callbackBindings.isEmpty()) { // generate callback bindings as some transports do not require an explicit callback binding configuration on the reference generateCallbackBindings(reference); } if (callbackBindings.size() != 1) { // if the reference is explicitly bound, it must have one callback binding String uri = reference.getUri().toString(); throw new UnsupportedOperationException("The runtime requires exactly one callback binding to be specified on reference: " + uri); } LogicalBinding<?> callbackBinding = callbackBindings.get(0); generateBinding(component, callbackBinding, command, reinjection, true); } } }
if (!targeted && reference.isRequired() && !logicalReference.isBound()) { String referenceUri = logicalReference.getUri().toString(); ReferenceNotFound error = new ReferenceNotFound("Unable to resolve reference " + referenceUri, logicalReference);
if (!targeted && reference.isRequired() && !logicalReference.isBound()) { String referenceUri = logicalReference.getUri().toString(); ReferenceNotFound error = new ReferenceNotFound("Unable to resolve reference " + referenceUri, logicalReference);
private void resolveReferences(LogicalComponent<?> component, InstantiationContext context) { LogicalCompositeComponent parent = component.getParent(); for (LogicalReference reference : component.getReferences()) { if (reference.isBound()) { // reference is targeted using binding.sca or is explicitly bound so it should not be autowired continue; } Multiplicity multiplicityValue = reference.getDefinition().getMultiplicity(); boolean refMultiplicity = multiplicityValue.equals(Multiplicity.ZERO_N) || multiplicityValue.equals(Multiplicity.ONE_N); if (refMultiplicity || !reference.isResolved()) { // Only resolve references that have not been resolved or ones that are multiplicities since the latter may be reinjected. // Explicitly set the reference to unresolved, since if it was a multiplicity it may have been previously resolved. reference.setResolved(false); resolveReference(reference, parent, context); } } }
private void resolveReferences(LogicalComponent<?> component, InstantiationContext context) { LogicalCompositeComponent parent = component.getParent(); for (LogicalReference reference : component.getReferences()) { if (reference.isBound()) { // reference is targeted using binding.sca or is explicitly bound so it should not be autowired continue; } Multiplicity multiplicityValue = reference.getDefinition().getMultiplicity(); boolean refMultiplicity = multiplicityValue.equals(Multiplicity.ZERO_N) || multiplicityValue.equals(Multiplicity.ONE_N); if (refMultiplicity || !reference.isResolved()) { // Only resolve references that have not been resolved or ones that are multiplicities since the latter may be reinjected. // Explicitly set the reference to unresolved, since if it was a multiplicity it may have been previously resolved. reference.setResolved(false); resolveReference(reference, parent, context); } } }