public void deploy(ComponentDefinition<?> definition) throws DeploymentException { URI uri = ContributionResolver.getContribution(); DefaultIntrospectionContext context = new DefaultIntrospectionContext(uri, getClass().getClassLoader()); definition.setContributionUri(uri); componentProcessor.process(definition, context); checkErrors(context); try { Composite wrapper = createWrapperComposite(definition.getName()); wrapper.add(definition); domain.include(wrapper, false); } catch (org.fabric3.api.host.domain.DeploymentException e) { throw new DeploymentException(e); } }
private LogicalReference createReference(JavaServiceContract contract) { LogicalCompositeComponent domainComponent = lcm.getRootComponent(); int id = idCounter.getAndIncrement(); String name = "Synthetic" + id; URI componentUri = URI.create(domainComponent.getUri().toString() + "/" + name); URI referenceUri = URI.create(componentUri.toString() + "#reference"); QName qName = new QName(HostNamespaces.SYNTHESIZED, "SyntheticComposite" + id); Composite composite = new Composite(qName); ComponentDefinition<NonManagedImplementation> componentDefinition = new ComponentDefinition<>(name); componentDefinition.setParent(composite); NonManagedImplementation implementation = new NonManagedImplementation(); componentDefinition.setImplementation(implementation); ComponentReference reference = new ComponentReference("reference", Multiplicity.ONE_ONE); componentDefinition.add(reference); LogicalComponent<NonManagedImplementation> logicalComponent = new LogicalComponent<>(componentUri, componentDefinition, domainComponent); logicalComponent.setZone(info.getZoneName()); reference.setServiceContract(contract); LogicalReference logicalReference = new LogicalReference(referenceUri, reference, logicalComponent); logicalReference.setServiceContract(contract); logicalComponent.addReference(logicalReference); return logicalReference; }
private void setContributionUris(Composite composite) { URI uri = ContributionResolver.getContribution(); composite.setContributionUri(uri); for (ComponentDefinition<? extends Implementation<?>> definition : composite.getComponents().values()) { definition.setContributionUri(uri); if (definition.getComponentType() instanceof Composite) { setContributionUris((Composite) definition.getComponentType()); } } for (ChannelDefinition definition : composite.getChannels().values()) { definition.setContributionUri(uri); } }
private <T> LogicalProducer createProducer(Class<T> interfaze, URI channelUri) throws InterfaceException { JavaServiceContract contract = introspector.introspect(interfaze); LogicalCompositeComponent domainComponent = lcm.getRootComponent(); String domainRoot = domainComponent.getUri().toString(); URI componentUri = URI.create(domainRoot + "/F3Synthetic"); InjectingComponentType componentType = new InjectingComponentType(); NonManagedImplementation implementation = new NonManagedImplementation(); implementation.setComponentType(componentType); ComponentDefinition<NonManagedImplementation> componentDefinition = new ComponentDefinition<>("F3Synthetic"); componentDefinition.setContributionUri(ContributionResolver.getContribution(interfaze)); componentDefinition.setImplementation(implementation); LogicalComponent<NonManagedImplementation> logicalComponent = new LogicalComponent<>(componentUri, componentDefinition, domainComponent); ProducerDefinition producerDefinition = new ProducerDefinition("producer", contract); LogicalProducer producer = new LogicalProducer(URI.create(domainRoot + "/F3Synthetic#producer"), producerDefinition, logicalComponent); producer.addTarget(channelUri); return producer; }
ComponentDefinition<? extends Implementation<?>> definition = parent.getDefinition(); if (definition != null) { processIntents(definition.getIntents(), aggregatedIntents); Implementation<?> implementation = definition.getImplementation(); if (implementation != null) { processIntents(implementation.getIntents(), aggregatedIntents); ComponentType type = componentDefinition.getParent(); processIntents(type.getIntents(), aggregatedIntents);
private void containsIntents(List<String> intentArgs, LogicalComponent<?> component, Set<LogicalScaArtifact> artifacts) { if (containsIntents(intentArgs, component.getDefinition().getImplementation().getIntents())) { artifacts.add(component); } if (containsIntents(intentArgs, component.getDefinition().getIntents())) { artifacts.add(component); } if (containsIntents(intentArgs, component.getIntents())) { artifacts.add(component); } for (LogicalService service : component.getServices()) { if (containsIntents(intentArgs, service.getIntents())) { artifacts.add(service); } } for (LogicalReference reference : component.getReferences()) { if (containsIntents(intentArgs, reference.getIntents())) { artifacts.add(reference); } } if (component instanceof LogicalCompositeComponent) { LogicalCompositeComponent composite = (LogicalCompositeComponent) component; for (LogicalComponent<?> childComponent : composite.getComponents()) { containsIntents(intentArgs, childComponent, artifacts); } } }
private boolean noPolicy(LogicalComponent<?> component) { return component != null && (component.getDefinition().getImplementation().isType(IMPLEMENTATION_SYSTEM) || component.getDefinition().getImplementation().isType(IMPLEMENTATION_SINGLETON)); }
private URI getContributionUri(LogicalBinding<WsBindingDefinition> binding) { LogicalComponent<?> current = binding.getParent().getParent(); while (current.getParent().getParent() != null) { // component deployed directly to the domain current = current.getParent(); } return current.getDefinition().getContributionUri(); }
attr = component.getUri().getSchemeSpecificPart(); } else if ("name".equals(localName)) { attr = component.getDefinition().getName(); } else { throw new UnsupportedAxisException("Unknown attribute specified: " + localName);
private void addService(Class<?> interfaze, ComponentDefinition<?> definition) throws ValidationDeploymentException { URI uri = ContributionResolver.getContribution(); DefaultIntrospectionContext context = new DefaultIntrospectionContext(uri, getClass().getClassLoader()); JavaServiceContract contract = contractProcessor.introspect(interfaze, context); ServiceDefinition serviceDefinition = new ServiceDefinition(interfaze.getSimpleName(), contract); definition.getComponentType().add(serviceDefinition); checkErrors(context); }
processIntents(definition.getIntents(), aggregatedIntents); Implementation<?> implementation = definition.getImplementation(); if (implementation != null) { processIntents(implementation.getIntents(), aggregatedIntents); ComponentType type = componentDefinition.getParent(); processIntents(type.getIntents(), aggregatedIntents);
/** * Aggregate intents from ancestors of a component. Components are handled differently than other SCA artifacts as implementation intents are inherited. * * @param component the logical artifact to aggregate intents for * @return the aggregated intents */ protected Set<QName> aggregateIntents(LogicalComponent<?> component) { LogicalComponent<?> current = component; Set<QName> aggregatedIntents = new LinkedHashSet<>(); while (current != null) { Set<QName> currentIntents = current.getIntents(); processIntents(currentIntents, aggregatedIntents); ComponentDefinition<? extends Implementation<?>> definition = current.getDefinition(); if (definition != null) { processIntents(definition.getIntents(), aggregatedIntents); Implementation<?> implementation = definition.getImplementation(); if (implementation != null) { processIntents(implementation.getIntents(), aggregatedIntents); ComponentType componentType = implementation.getComponentType(); if (componentType != null) { processIntents(componentType.getIntents(), aggregatedIntents); } } } current = current.getParent(); } return aggregatedIntents; }
public IntentPair resolveIntents(LogicalComponent<?> component, LogicalOperation operation) throws PolicyResolutionException { Implementation<?> implementation = component.getDefinition().getImplementation(); QName type = implementation.getType(); ImplementationType implementationType = policyRegistry.getDefinition(type, ImplementationType.class); Set<QName> mayProvidedIntents; if (implementationType == null) { // tolerate not having a registered implementation type definition mayProvidedIntents = Collections.emptySet(); } else { mayProvidedIntents = implementationType.getMayProvide(); } Set<Intent> requiredIntents = getRequestedIntents(component, operation); Set<Intent> intentsToBeProvided = new LinkedHashSet<>(); for (Intent intent : requiredIntents) { if (mayProvidedIntents.contains(intent.getName())) { intentsToBeProvided.add(intent); } } return new IntentPair(requiredIntents, intentsToBeProvided); }
JavaServiceContract contract, EffectivePolicy policy) throws GenerationException { URI contributionUri = binding.getParent().getParent().getDefinition().getContributionUri(); Class<?> serviceClass = loadServiceClass(contract, contributionUri); WsBindingDefinition definition = binding.getDefinition();
private Set<Intent> getRequestedIntents(LogicalComponent<?> logicalComponent, LogicalOperation operation) throws PolicyResolutionException { // Aggregate all the intents from the ancestors Set<QName> intentNames = new LinkedHashSet<>(); intentNames.addAll(operation.getIntents()); ComponentDefinition<? extends Implementation<?>> definition = logicalComponent.getDefinition(); Implementation<?> implementation = definition.getImplementation(); ComponentType componentType = implementation.getComponentType(); intentNames.addAll(implementation.getIntents()); intentNames.addAll(componentType.getIntents()); intentNames.addAll(aggregateIntents(logicalComponent)); // Expand all the profile intents Set<Intent> requiredIntents = resolveIntents(intentNames); // Remove intents not applicable to the artifact filterInvalidIntents(Intent.IMPLEMENTATION, requiredIntents); filterMutuallyExclusiveIntents(requiredIntents); return requiredIntents; }
public MetroJavaWireSourceDefinition generateSource(LogicalBinding<WsBindingDefinition> binding, JavaServiceContract contract, EffectivePolicy policy) throws GenerationException { URI contributionUri = binding.getParent().getParent().getDefinition().getContributionUri(); Class<?> serviceClass = loadServiceClass(contract, contributionUri); WsBindingDefinition definition = binding.getDefinition();
} else if (localName.startsWith("implementation.")) { LogicalComponent<?> component = (LogicalComponent<?>) contextNode; if (localName.equals(component.getDefinition().getImplementation().getType().getLocalPart())) { return new SingleObjectIterator(component);
wsdl = wsdlResolver.parseWsdl(wsdlLocation); } else { URI contributionUri = binding.getParent().getParent().getDefinition().getContributionUri(); QName wsdlName = contract.getWsdlQName(); wsdl = wsdlResolver.resolveWsdl(contributionUri, wsdlName);
public Set<PolicySet> resolvePolicySets(LogicalComponent<?> component, LogicalOperation operation) throws PolicyResolutionException { Implementation<?> implementation = component.getDefinition().getImplementation(); QName type = implementation.getType(); ImplementationType implementationType = policyRegistry.getDefinition(type, ImplementationType.class);
wsdl = wsdlResolver.parseWsdl(wsdlLocation); } else { URI contributionUri = binding.getParent().getParent().getDefinition().getContributionUri(); QName wsdlName = contract.getWsdlQName(); wsdl = wsdlResolver.resolveWsdl(contributionUri, wsdlName);