/** * Adds a configured binding. * * @param binding the binding to be added */ public void addBinding(Binding binding) { binding.setParent(this); this.bindings.add(binding); }
private boolean isDirect(LogicalInvocable invocable, Map<LogicalChannel, DeliveryType> channels) { boolean direct = false; if (!channels.isEmpty()) { LogicalChannel logicalChannel = channels.keySet().iterator().next(); ServiceContract contract = invocable.getServiceContract(); if (contract == null) { return false; } Class<?> interfaceClass = contract.getInterfaceClass(); if (logicalChannel.isBound()) { Binding binding = logicalChannel.getBinding().getDefinition(); if (!binding.getConnectionTypes().isEmpty()) { direct = binding.getConnectionTypes().stream().anyMatch(t -> t.isAssignableFrom(interfaceClass)); } } else { Channel channel = logicalChannel.getDefinition(); if (!channel.getConnectionTypes().isEmpty()) { direct = channel.getConnectionTypes().stream().anyMatch(t -> t.isAssignableFrom(interfaceClass)); } } } return direct; }
/** * Returns a binding matching the name * * @param name the binding name * @param bindable the bindable containing the binding * @return the matching binding or null if no matching one was found */ private LogicalBinding<?> getBinding(String name, LogicalBindable bindable) { LogicalBinding<?> selectedBinding = null; for (LogicalBinding<?> binding : bindable.getBindings()) { if (name.equals(binding.getDefinition().getName())) { selectedBinding = binding; break; } } return selectedBinding; }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalService service) { for (LogicalBinding<?> logicalBinding : service.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateServiceCallback(logicalBinding); definition.setParent(service.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, service); service.addCallbackBinding(logicalCallback); } }
/** * Selects a binding from the given bindable by matching it against another binding * * @param bindable the bindable to select the binding from * @param binding the binding to match against * @return the selected binding or null if no matching ones were found */ private LogicalBinding<?> selectBinding(LogicalBindable bindable, LogicalBinding binding) { for (LogicalBinding<?> candidate : bindable.getBindings()) { if (candidate.getDefinition().getType().equals(binding.getDefinition().getType())) { return candidate; } } return null; }
callbackUri = callbackBinding.getDefinition().getTargetUri();
public void introspect(Channel channel) { channel.getBindings().forEach(b -> { if (b instanceof NATSBinding) { b.setConnectionTypes(Nats.class, Subscription.class); } }); } }
private void parseHandlerUri(String value, AnnotatedElement element, Binding binding, Class<?> implClass, IntrospectionContext context, org.fabric3.api.annotation.model.BindingHandler annotation) { try { BindingHandler definition = new BindingHandler(new URI(value)); binding.addHandler(definition); } catch (URISyntaxException e) { InvalidAnnotation error = new InvalidAnnotation("Invalid binding handler URI", element, annotation, implClass, e); context.addError(error); } }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalReference reference) { for (LogicalBinding<?> logicalBinding : reference.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateReferenceCallback(logicalBinding); definition.setParent(reference.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, reference); reference.addCallbackBinding(logicalCallback); } }
/** * Selects a binding from the given bindable by matching it against another binding * * @param bindable the bindable to select the binding from * @param binding the binding to match against * @return the selected binding or null if no matching ones were found */ private LogicalBinding<?> selectBinding(LogicalBindable bindable, LogicalBinding binding) { for (LogicalBinding<?> candidate : bindable.getBindings()) { if (candidate.getDefinition().getType().equals(binding.getDefinition().getType())) { return candidate; } } return null; }
callbackUri = callbackBinding.getDefinition().getTargetUri();
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalReference reference) { for (LogicalBinding<?> logicalBinding : reference.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateReferenceCallback(logicalBinding); definition.setParent(reference.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, reference); reference.addCallbackBinding(logicalCallback); } }
/** * Returns a binding matching the name * * @param name the binding name * @param bindable the bindable containing the binding * @return the matching binding or null if no matching one was found */ private LogicalBinding<?> getBinding(String name, LogicalBindable bindable) { LogicalBinding<?> selectedBinding = null; for (LogicalBinding<?> binding : bindable.getBindings()) { if (name.equals(binding.getDefinition().getName())) { selectedBinding = binding; break; } } return selectedBinding; }
private boolean isDirect(LogicalInvocable invocable, Map<LogicalChannel, DeliveryType> channels) { boolean direct = false; if (!channels.isEmpty()) { LogicalChannel logicalChannel = channels.keySet().iterator().next(); ServiceContract contract = invocable.getServiceContract(); if (contract == null) { return false; } Class<?> interfaceClass = contract.getInterfaceClass(); if (logicalChannel.isBound()) { Binding binding = logicalChannel.getBinding().getDefinition(); if (!binding.getConnectionTypes().isEmpty()) { direct = binding.getConnectionTypes().stream().anyMatch(t -> t.isAssignableFrom(interfaceClass)); } } else { Channel channel = logicalChannel.getDefinition(); if (!channel.getConnectionTypes().isEmpty()) { direct = channel.getConnectionTypes().stream().anyMatch(t -> t.isAssignableFrom(interfaceClass)); } } } return direct; }
@SuppressWarnings("unchecked") private void generateCallbackBindings(LogicalService service) { for (LogicalBinding<?> logicalBinding : service.getBindings()) { CallbackBindingGenerator generator = generators.get(logicalBinding.getDefinition().getClass()); if (generator == null) { throw new Fabric3Exception("Callback generator not found for:" + logicalBinding.getDefinition().getType()); } Binding definition = generator.generateServiceCallback(logicalBinding); definition.setParent(service.getDefinition()); LogicalBinding<?> logicalCallback = new LogicalBinding(definition, service); service.addCallbackBinding(logicalCallback); } }
String key = binding.getDefinition().getName(); source.setKey(key);
String key = binding.getDefinition().getName(); source.setKey(key);