private void handleReference(Reference<?> reference, InjectionSite site, Class<?> implClass, Map<AccessibleObject, Supplier<Object>> injectors) { if (reference.getBindings().isEmpty()) { return; } Class<?> interfaze = reference.getServiceContract().getInterfaceClass(); Binding binding = reference.getBindings().get(0); AccessibleObject accessibleObject; if (site instanceof FieldInjectionSite) { accessibleObject = ((FieldInjectionSite) site).getField(); } else if (site instanceof MethodInjectionSite) { accessibleObject = ((MethodInjectionSite) site).getMethod(); } else { // ignore return; } // create supplier to resolve the proxy injectors.put(accessibleObject, () -> serviceResolver.resolve(interfaze, binding, implClass)); } }
private void handleReference(Reference<?> reference, InjectionSite site, Class<?> implClass, Map<AccessibleObject, Supplier<Object>> injectors) { if (reference.getBindings().isEmpty()) { return; } Class<?> interfaze = reference.getServiceContract().getInterfaceClass(); Binding binding = reference.getBindings().get(0); AccessibleObject accessibleObject; if (site instanceof FieldInjectionSite) { accessibleObject = ((FieldInjectionSite) site).getField(); } else if (site instanceof MethodInjectionSite) { accessibleObject = ((MethodInjectionSite) site).getMethod(); } else { // ignore return; } // create supplier to resolve the proxy injectors.put(accessibleObject, () -> serviceResolver.resolve(interfaze, binding, implClass)); } }
private void createReferences(Component<?> component, LogicalComponent<?> logicalComponent, ComponentType componentType) { for (Reference<ComponentType> reference : componentType.getReferences().values()) { String name = reference.getName(); URI referenceUri = logicalComponent.getUri().resolve('#' + name); LogicalReference logicalReference = new LogicalReference(referenceUri, reference, logicalComponent); Reference<Component> componentReference = component.getReferences().get(name); if (componentReference != null) { // reference is configured in the component definition for (Binding binding : componentReference.getBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addBinding(logicalBinding); } for (Binding binding : componentReference.getCallbackBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addCallbackBinding(logicalBinding); } } else { // check if reference is configured with bindings in the component type for (Binding binding : reference.getBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addBinding(logicalBinding); } for (Binding binding : reference.getCallbackBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addCallbackBinding(logicalBinding); } } logicalComponent.addReference(logicalReference); } }
private void createReferences(Component<?> component, LogicalComponent<?> logicalComponent, ComponentType componentType) { for (Reference<ComponentType> reference : componentType.getReferences().values()) { String name = reference.getName(); URI referenceUri = logicalComponent.getUri().resolve('#' + name); LogicalReference logicalReference = new LogicalReference(referenceUri, reference, logicalComponent); Reference<Component> componentReference = component.getReferences().get(name); if (componentReference != null) { // reference is configured in the component definition for (Binding binding : componentReference.getBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addBinding(logicalBinding); } for (Binding binding : componentReference.getCallbackBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addCallbackBinding(logicalBinding); } } else { // check if reference is configured with bindings in the component type for (Binding binding : reference.getBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addBinding(logicalBinding); } for (Binding binding : reference.getCallbackBindings()) { LogicalBinding<Binding> logicalBinding = new LogicalBinding<>(binding, logicalReference); logicalReference.addCallbackBinding(logicalBinding); } } logicalComponent.addReference(logicalReference); } }