public void detach(PhysicalSourceDefinition source, ZeroMQTargetDefinition target) throws WiringException { String id = source.getUri().toString(); URI uri = target.getUri(); try { broker.releaseSender(id, uri); } catch (BrokerException e) { throw new WiringException(e); } }
/** * Handles adding required parameter data transformers to a wire. * * @param wire the wire * @param definition the physical wire definition * @throws WiringException if there is an error creating a transformer */ private void processTransform(Wire wire, PhysicalWireDefinition definition) throws WiringException { if (!transform) { // short-circuit during bootstrap return; } PhysicalSourceDefinition sourceDefinition = definition.getSource(); PhysicalTargetDefinition targetDefinition = definition.getTarget(); for (DataType<?> sourceType : sourceDefinition.getPhysicalDataTypes()) { if (targetDefinition.getPhysicalDataTypes().contains(sourceType)) { // transform for pass-by-value and not for different datatypes. addTransformer(wire, definition, true); return; } } addTransformer(wire, definition, false); }
sourceDefinition.setClassLoaderId(source.getDefinition().getContributionUri()); sourceDefinition.setKey(key); sourceDefinition.setOrder(order); new PhysicalWireDefinition(sourceDefinition, sourceDeployable, targetDefinition, targetDeployable, operations); boolean optimizable = sourceDefinition.isOptimizable() && targetDefinition.isOptimizable() && checkOptimization(referenceContract, operations); pwd.setOptimizable(optimizable); return pwd;
PhysicalSourceDefinition sourceDefinition = definition.getSource(); PhysicalTargetDefinition targetDefinition = definition.getTarget(); URI sourceId = sourceDefinition.getClassLoaderId(); URI targetId = targetDefinition.getClassLoaderId(); ClassLoader sourceLoader = null; List<DataType<?>> sourceTypes = sourceDefinition.getPhysicalDataTypes(); List<DataType<?>> targetTypes = targetDefinition.getPhysicalDataTypes(); try {
sourceDefinition.setClassLoaderId(source.getDefinition().getContributionUri()); sourceDefinition.setKey(key); sourceDefinition.setOrder(order);
ServiceInvoker invoker = reflectionFactory.createServiceInvoker(method); InvokerInterceptor interceptor; if (sourceDefinition instanceof PojoSourceDefinition && targetDefinition.getClassLoaderId().equals(sourceDefinition.getClassLoaderId())) {
sourceDefinition.setClassLoaderId(service.getParent().getDefinition().getContributionUri()); boolean optimizable = sourceDefinition.isOptimizable() && targetDefinition.isOptimizable() && checkOptimization(contract, physicalOperations); pwd.setOptimizable(optimizable); return pwd;
sourceDefinition.setKey(key); sourceDefinition.setClassLoaderId(component.getDefinition().getContributionUri());
@SuppressWarnings({"unchecked"}) private PhysicalWireDefinition generateRemoteWireCallback(LogicalWire wire) throws GenerationException { LogicalReference reference = wire.getSource(); LogicalComponent target = reference.getParent(); ServiceContract referenceContract = reference.getServiceContract(); ServiceContract referenceCallbackContract = referenceContract.getCallbackContract(); if (reference.getCallbackBindings().isEmpty()) { throw new GenerationException("Callback binding not set"); } LogicalBinding<?> referenceBinding = reference.getCallbackBindings().get(0); LogicalService callbackService = target.getService(referenceCallbackContract.getInterfaceName()); List<LogicalOperation> operations = reference.getCallbackOperations(); // resolve policies PolicyResult policyResult = policyResolver.resolveRemoteCallbackPolicies(wire); EffectivePolicy targetPolicy = policyResult.getTargetPolicy(); // generate metadata to attach the physical callback wire to the source transport BindingGenerator bindingGenerator = getGenerator(referenceBinding); PhysicalSourceDefinition sourceDefinition = bindingGenerator.generateSource(referenceBinding, referenceCallbackContract, operations, targetPolicy); URI contributionUri = target.getDefinition().getContributionUri(); sourceDefinition.setClassLoaderId(contributionUri); // generate the metadata used to attach the physical callback wire to the target component (the component containing the forward reference) ComponentGenerator componentGenerator = getGenerator(target); PhysicalTargetDefinition targetDefinition = componentGenerator.generateTarget(callbackService, targetPolicy); targetDefinition.setClassLoaderId(target.getDefinition().getContributionUri()); // generate the metadata for interceptors that are attached to wire invocation chains, e.g. policy implemented by an interceptor Set<PhysicalOperationDefinition> physicalOperations = operationGenerator.generateOperations(operations, true, policyResult); return new PhysicalWireDefinition(sourceDefinition, targetDefinition, physicalOperations); }
sourceDefinition.setClassLoaderId(sourceComponent.getDefinition().getContributionUri());
public void attach(PhysicalSourceDefinition source, ZeroMQTargetDefinition target, Wire wire) throws WiringException { final URI sourceUri = source.getUri(); String id = sourceUri.getPath().substring(1) + "/" + sourceUri.getFragment(); // strip leading '/' URI targetUri = target.getUri(); ClassLoader loader = registry.getClassLoader(target.getClassLoaderId()); List<InvocationChain> chains = ZeroMQAttacherHelper.sortChains(wire); try { broker.connectToSender(id, targetUri, chains, target.getMetadata(), loader); } catch (BrokerException e) { throw new WiringException(e); } }
public <T extends ResourceReferenceDefinition> PhysicalWireDefinition generateResource(LogicalResourceReference<T> resourceReference) throws GenerationException { T resourceDefinition = resourceReference.getDefinition(); LogicalComponent<?> component = resourceReference.getParent(); // Generates the wire source metadata ComponentGenerator sourceGenerator = getGenerator(component); PhysicalSourceDefinition sourceDefinition = sourceGenerator.generateResourceSource(resourceReference); sourceDefinition.setClassLoaderId(component.getDefinition().getContributionUri()); // Generates the wire target metadata ResourceReferenceGenerator<T> targetGenerator = getGenerator(resourceDefinition); PhysicalTargetDefinition targetDefinition = targetGenerator.generateWireTarget(resourceReference); targetDefinition.setClassLoaderId(resourceReference.getParent().getDefinition().getContributionUri()); boolean optimizable = targetDefinition.isOptimizable(); // Create the wire from the component to the resource List<LogicalOperation> sourceOperations = resourceReference.getOperations(); Set<PhysicalOperationDefinition> operations = operationGenerator.generateOperations(sourceOperations, false, null); PhysicalWireDefinition pwd = new PhysicalWireDefinition(sourceDefinition, targetDefinition, operations); pwd.setOptimizable(optimizable); return pwd; }
paramTypes[i] = classLoaderRegistry.loadClass(loader, param); } catch (ClassNotFoundException e) { URI sourceUri = sourceDefinition.getUri(); URI targetUri = targetDefinition.getUri(); throw new WireAttachException("Implementation class not found when wiring " + sourceUri + " to " + targetUri, e); URI sourceUri = sourceDefinition.getUri(); URI targetUri = targetDefinition.getUri(); throw new WireAttachException("No matching method found when wiring " + sourceUri + " to " + targetUri); method = implementationClass.getMethod(operation.getName(), paramTypes); } catch (NoSuchMethodException e) { URI sourceUri = sourceDefinition.getUri(); URI targetUri = targetDefinition.getUri(); throw new WireAttachException("No matching method found when wiring " + sourceUri + " to " + targetUri, e);
public <T extends BindingDefinition> PhysicalWireDefinition generateBoundServiceCallback(LogicalBinding<T> binding) throws GenerationException { checkService(binding); LogicalService service = (LogicalService) binding.getParent(); LogicalComponent<?> component = service.getLeafComponent(); ServiceContract contract = service.getLeafService().getServiceContract(); ServiceContract callbackContract = contract.getCallbackContract(); List<LogicalOperation> operations = service.getCallbackOperations(); // resolve callback policies PolicyResult policyResult = policyResolver.resolveCallbackPolicies(binding); EffectivePolicy sourcePolicy = policyResult.getSourcePolicy(); EffectivePolicy targetPolicy = policyResult.getTargetPolicy(); // generate the metadata used to attach the physical callback wire to the source component ComponentGenerator sourceGenerator = getGenerator(component); PhysicalSourceDefinition sourceDefinition = sourceGenerator.generateCallbackSource(service, sourcePolicy); sourceDefinition.setClassLoaderId(component.getDefinition().getContributionUri()); // generate the metadata used to attach the physical callback wire to the target transport BindingGenerator<T> bindingGenerator = getGenerator(binding); PhysicalTargetDefinition targetDefinition = bindingGenerator.generateTarget(binding, callbackContract, operations, targetPolicy); targetDefinition.setCallback(true); targetDefinition.setClassLoaderId(binding.getParent().getParent().getDefinition().getContributionUri()); // generate the metadata for interceptors that are attached to wire invocation chains, e.g. policy implemented by an interceptor Set<PhysicalOperationDefinition> physicalOperations = operationGenerator.generateOperations(operations, true, policyResult); return new PhysicalWireDefinition(sourceDefinition, targetDefinition, physicalOperations); }
public <T extends BindingDefinition> PhysicalWireDefinition generateBoundReferenceCallback(LogicalBinding<T> binding) throws GenerationException { checkReference(binding); LogicalReference reference = (LogicalReference) binding.getParent(); LogicalComponent<?> component = reference.getParent(); ServiceContract contract = reference.getServiceContract(); ServiceContract callbackContract = contract.getCallbackContract(); LogicalService callbackService = component.getService(callbackContract.getInterfaceName()); List<LogicalOperation> operations = reference.getCallbackOperations(); // resolve policies PolicyResult policyResult = policyResolver.resolveCallbackPolicies(binding); EffectivePolicy sourcePolicy = policyResult.getSourcePolicy(); EffectivePolicy targetPolicy = policyResult.getTargetPolicy(); // generate the metadata used to attach the physical callback wire to the source transport BindingGenerator<T> sourceGenerator = getGenerator(binding); PhysicalSourceDefinition sourceDefinition = sourceGenerator.generateSource(binding, callbackContract, operations, targetPolicy); sourceDefinition.setClassLoaderId(binding.getParent().getParent().getDefinition().getContributionUri()); // generate the metadata used to attach the physical callback wire to the target component ComponentGenerator targetGenerator = getGenerator(component); PhysicalTargetDefinition targetDefinition = targetGenerator.generateTarget(callbackService, sourcePolicy); targetDefinition.setClassLoaderId(callbackService.getParent().getDefinition().getContributionUri()); targetDefinition.setCallback(true); Set<PhysicalOperationDefinition> operation = operationGenerator.generateOperations(operations, true, policyResult); return new PhysicalWireDefinition(sourceDefinition, targetDefinition, operation); }