Remove the domain module as the code is now in domain-node
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@952990 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9b70bf992c
commit
e45e9a6783
14 changed files with 0 additions and 1162 deletions
|
@ -1,13 +0,0 @@
|
|||
Manifest-Version: 1.0
|
||||
Archiver-Version: Plexus Archiver
|
||||
Created-By: Apache Maven
|
||||
Built-By: ant
|
||||
Build-Jdk: 1.6.0_18
|
||||
Extension-Name: tuscany-domain
|
||||
Implementation-Title: Apache Tuscany SCA Domain
|
||||
Implementation-Vendor: The Apache Software Foundation
|
||||
Implementation-Vendor-Id: org.apache
|
||||
Implementation-Version: 2.0-SNAPSHOT
|
||||
Specification-Title: Apache Tuscany SCA Domain
|
||||
Specification-Vendor: The Apache Software Foundation
|
||||
Specification-Version: 2.0-SNAPSHOT
|
|
@ -1,45 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-modules</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>tuscany-domain</artifactId>
|
||||
<name>Apache Tuscany SCA Domain</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca.shades</groupId>
|
||||
<artifactId>tuscany-base</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -1,239 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.tuscany.sca.something;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.Composite;
|
||||
import org.apache.tuscany.sca.contribution.Contribution;
|
||||
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
|
||||
import org.apache.tuscany.sca.deployment.Deployer;
|
||||
import org.apache.tuscany.sca.monitor.ValidationException;
|
||||
import org.apache.tuscany.sca.runtime.ActivationException;
|
||||
import org.apache.tuscany.sca.something.impl.InstalledContribution;
|
||||
import org.oasisopen.sca.NoSuchServiceException;
|
||||
|
||||
public interface Section10 {
|
||||
|
||||
/**
|
||||
* 4577 10.5.1 install Contribution & update Contribution
|
||||
* 4578 Creates or updates an installed contribution with a supplied root contribution, and installed at a supplied
|
||||
* 4579 base URI. A supplied dependent contribution list (<export/> elements) specifies the contributions that are
|
||||
* 4580 used to resolve the dependencies of the root contribution and other dependent contributions. These
|
||||
* 4581 override any dependent contributions explicitly listed via the @location attribute in the import statements
|
||||
* 4582 of the contribution.
|
||||
* 4583 SCA follows the simplifying assumption that the use of a contribution for resolving anything also means
|
||||
* 4584 that all other exported artifacts can be used from that contribution. Because of this, the dependent
|
||||
* 4585 contribution list is just a list of installed contribution URIs. There is no need to specify what is being used
|
||||
* 4586 from each one.
|
||||
* 4587 Each dependent contribution is also an installed contribution, with its own dependent contributions. By
|
||||
* 4588 default these dependent contributions of the dependent contributions (which we will call indirect
|
||||
* 4589 dependent contributions) are included as dependent contributions of the installed contribution. However,
|
||||
* 4590 if a contribution in the dependent contribution list exports any conflicting definitions with an indirect
|
||||
* 4591 dependent contribution, then the indirect dependent contribution is not included (i.e. the explicit list
|
||||
* 4592 overrides the default inclusion of indirect dependent contributions). Also, if there is ever a conflict
|
||||
* 4593 between two indirect dependent contributions, then the conflict MUST be resolved by an explicit entry in
|
||||
* 4594 the dependent contribution list.
|
||||
* 4595 [ASM12009]
|
||||
* 4596 Note that in many cases, the dependent contribution list can be generated. In particular, if the creator of
|
||||
* 4597 a Domain is careful to avoid creating duplicate definitions for the same qualified name, then it is easy for
|
||||
* 4598 this list to be generated by tooling. *
|
||||
* @param uri
|
||||
* @param contributionURL
|
||||
* @throws ContributionReadException
|
||||
* @throws ActivationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
void installContribution(String uri, String contributionURL, String metaDataURL, List<String> dependentContributionURIs, boolean deployDeployables) throws ContributionReadException, ActivationException, ValidationException;
|
||||
void installContribution(Contribution contribution, List<String> dependentContributionURIs, boolean deployDeployables) throws ContributionReadException, ActivationException, ValidationException;
|
||||
|
||||
/* Useful short forms of that for when you don't care or have the others (but leave out for now to keep as simple as possible):
|
||||
String installContribution(String contributionURL) throws ContributionReadException, ActivationException, ValidationException;
|
||||
void installContribution(String uri, String contributionURL) throws ContributionReadException, ActivationException, ValidationException;
|
||||
String installContribution(String contributionURL, boolean autoDeploy) throws ContributionReadException, ActivationException, ValidationException;
|
||||
*/
|
||||
|
||||
/**
|
||||
* 4577 10.5.1 install Contribution & update Contribution
|
||||
* 4578 Creates or updates an installed contribution with a supplied root contribution, and installed at a supplied
|
||||
* 4579 base URI. A supplied dependent contribution list (<export/> elements) specifies the contributions that are
|
||||
* 4580 used to resolve the dependencies of the root contribution and other dependent contributions. These
|
||||
* 4581 override any dependent contributions explicitly listed via the @location attribute in the import statements
|
||||
* 4582 of the contribution.
|
||||
* 4583 SCA follows the simplifying assumption that the use of a contribution for resolving anything also means
|
||||
* 4584 that all other exported artifacts can be used from that contribution. Because of this, the dependent
|
||||
* 4585 contribution list is just a list of installed contribution URIs. There is no need to specify what is being used
|
||||
* 4586 from each one.
|
||||
* 4587 Each dependent contribution is also an installed contribution, with its own dependent contributions. By
|
||||
* 4588 default these dependent contributions of the dependent contributions (which we will call indirect
|
||||
* 4589 dependent contributions) are included as dependent contributions of the installed contribution. However,
|
||||
* 4590 if a contribution in the dependent contribution list exports any conflicting definitions with an indirect
|
||||
* 4591 dependent contribution, then the indirect dependent contribution is not included (i.e. the explicit list
|
||||
* 4592 overrides the default inclusion of indirect dependent contributions). Also, if there is ever a conflict
|
||||
* 4593 between two indirect dependent contributions, then the conflict MUST be resolved by an explicit entry in
|
||||
* 4594 the dependent contribution list.
|
||||
* 4595 [ASM12009]
|
||||
* 4596 Note that in many cases, the dependent contribution list can be generated. In particular, if the creator of
|
||||
* 4597 a Domain is careful to avoid creating duplicate definitions for the same qualified name, then it is easy for
|
||||
* 4598 this list to be generated by tooling.
|
||||
*
|
||||
* @param uri
|
||||
* @param contributionURL
|
||||
*/
|
||||
void updateContribution(String uri, String contributionURL);
|
||||
void updateContribution(Contribution contribution);
|
||||
|
||||
/**
|
||||
* 4599 10.5.2 add Deployment Composite & update Deployment Composite
|
||||
* 4600 Adds or updates a deployment composite using a supplied composite ("composite by value" – a data
|
||||
* 4601 structure, not an existing resource in the Domain) to the contribution identified by a supplied contribution
|
||||
* 4602 URI. The added or updated deployment composite is given a relative URI that matches the @name
|
||||
* 4603 attribute of the composite, with a “.composite” suffix. Since all composites run within the context of a
|
||||
* 4604 installed contribution (any component implementations or other definitions are resolved within that
|
||||
* 4605 contribution), this functionality makes it possible for the deployer to create a composite with final
|
||||
* 4606 configuration and wiring decisions and add it to an installed contribution without having to modify the
|
||||
* 4607 contents of the root contribution.
|
||||
* 4608 Also, in some use cases, a contribution might include only implementation code (e.g. PHP scripts). It is
|
||||
* 4609 then possible for those to be given component names by a (possibly generated) composite that is added
|
||||
* 4610 into the installed contribution, without having to modify the packaging. *
|
||||
*
|
||||
* @param uri
|
||||
* @param compositeXML
|
||||
* @return
|
||||
* @throws XMLStreamException
|
||||
* @throws ContributionReadException
|
||||
* @throws ActivationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException;
|
||||
String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException;
|
||||
|
||||
/**
|
||||
* 4599 10.5.2 add Deployment Composite & update Deployment Composite
|
||||
* 4600 Adds or updates a deployment composite using a supplied composite ("composite by value" – a data
|
||||
* 4601 structure, not an existing resource in the Domain) to the contribution identified by a supplied contribution
|
||||
* 4602 URI. The added or updated deployment composite is given a relative URI that matches the @name
|
||||
* 4603 attribute of the composite, with a “.composite” suffix. Since all composites run within the context of a
|
||||
* 4604 installed contribution (any component implementations or other definitions are resolved within that
|
||||
* 4605 contribution), this functionality makes it possible for the deployer to create a composite with final
|
||||
* 4606 configuration and wiring decisions and add it to an installed contribution without having to modify the
|
||||
* 4607 contents of the root contribution.
|
||||
* 4608 Also, in some use cases, a contribution might include only implementation code (e.g. PHP scripts). It is
|
||||
* 4609 then possible for those to be given component names by a (possibly generated) composite that is added
|
||||
* 4610 into the installed contribution, without having to modify the packaging. *
|
||||
*
|
||||
* @param uri
|
||||
* @param compositeXML
|
||||
* @return
|
||||
*/
|
||||
String updateDeploymentComposite(String uri, Reader compositeXML);
|
||||
String updateDeploymentComposite(String uri, Composite composite);
|
||||
|
||||
/**
|
||||
* 4611 11.4.310.5.3 remove Contribution
|
||||
* 4612 Removes the deployed contribution identified by a supplied contribution URI.
|
||||
*
|
||||
* @param contributionURI
|
||||
* @return List of contribution URIs (includes dependent contributions) which were removed
|
||||
* @throws ActivationException
|
||||
*/
|
||||
List<String> removeContribution(String contributionURI) throws ActivationException;
|
||||
|
||||
/**
|
||||
* 4677 10.7.1 add To Domain-Level Composite
|
||||
* 4678 This functionality adds the composite identified by a supplied URI to the Domain Level Composite. The
|
||||
* 4679 supplied composite URI refers to a composite within an installed contribution. The composite's installed
|
||||
* 4680 contribution determines how the composite’s artifacts are resolved (directly and indirectly). The supplied
|
||||
* 4681 composite is added to the domain composite with semantics that correspond to the domain-level
|
||||
* 4683 components become top-level components and the component services become externally visible
|
||||
* 4684 services (eg. they would be present in a WSDL description of the Domain). The meaning of any promoted
|
||||
* 4685 services and references in the supplied composite is not defined; since there is no composite scope
|
||||
* 4686 outside the domain composite, the usual idea of promotion has no utility.
|
||||
*
|
||||
* @param compositeURI
|
||||
* @throws ActivationException
|
||||
*/
|
||||
void addToDomainLevelComposite(String compositeURI) throws ActivationException;
|
||||
|
||||
/**
|
||||
* 4687 10.7.2 remove From Domain-Level Composite
|
||||
* 4688 Removes from the Domain Level composite the elements corresponding to the composite identified by a
|
||||
* 4689 supplied composite URI. This means that the removal of the components, wires, services and references
|
||||
* 4690 originally added to the domain level composite by the identified composite. *
|
||||
* @param compositeURI
|
||||
* @throws ActivationException
|
||||
*/
|
||||
void removeFromDomainLevelComposite(String compositeURI) throws ActivationException;
|
||||
|
||||
/**
|
||||
* 10.7.3 get Domain-Level Composite
|
||||
* Returns a <composite> definition that has an <include> line for each composite that had been added to
|
||||
* the domain level composite. It is important to note that, in dereferencing the included composites, any
|
||||
* referenced artifacts are resolved in terms of that installed composite.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Composite getDomainLevelComposite();
|
||||
|
||||
/* that previous one returns a Composte object but not sure what would be most appropriate, and having one return a string seems convenient: */
|
||||
String getDomainLevelCompositeAsString();
|
||||
|
||||
/**
|
||||
* 4695 10.7.4 get QName Definition
|
||||
* 4696 In order to make sense of the domain-level composite (as returned by get Domain-Level Composite), it
|
||||
* 4697 needs to be possible to get the definitions for named artifacts in the included composites. This
|
||||
* 4698 functionality takes the supplied URI of an installed contribution (which provides the context), a supplied
|
||||
* 4699 qualified name of a definition to look up, and a supplied symbol space (as a QName, e.g.
|
||||
* 4700 wsdl:PortTypeportType). The result is a single definition, in whatever form is appropriate for that
|
||||
* 4701 definition type.
|
||||
* 4702 Note that this, like all the other domain-level operations, is a conceptual operation. Its capabilities need to
|
||||
* 4703 exist in some form, but not necessarily as a service operation with exactly this signature. *
|
||||
* @param contributionURI
|
||||
* @param definition
|
||||
* @param symbolSpace
|
||||
* @return
|
||||
*/
|
||||
Object getQNameDefinition(String contributionURI, QName definition, QName symbolSpace);
|
||||
|
||||
/**
|
||||
* Probably want to be able to stop it all at once so a method called stop or shutdown or destroy
|
||||
* though i guess it could be argued that this method may be somewhere else
|
||||
* @throws ActivationException
|
||||
*/
|
||||
void shutdown() throws ActivationException;
|
||||
|
||||
/**
|
||||
* Would also be convenient to get service proxys as from SCAClientFactory
|
||||
*/
|
||||
<T> T getService(Class<T> interfaze, String serviceURI) throws NoSuchServiceException;
|
||||
|
||||
/* do we also need these following ones that are mentioned only indirectly in the spec? */
|
||||
|
||||
List<String> getDeployedCompostes(String contributionURI);
|
||||
List<String> getInstalledContributions();
|
||||
InstalledContribution getInstalledContribution(String uri);
|
||||
Deployer getDeployer();
|
||||
AssemblyFactory getAssemblyFactory();
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.tuscany.sca.something;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
|
||||
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
|
||||
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
|
||||
import org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint;
|
||||
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
|
||||
import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory;
|
||||
import org.apache.tuscany.sca.deployment.Deployer;
|
||||
import org.apache.tuscany.sca.runtime.CompositeActivator;
|
||||
import org.apache.tuscany.sca.runtime.EndpointRegistry;
|
||||
import org.apache.tuscany.sca.runtime.ExtensibleDomainRegistryFactory;
|
||||
import org.apache.tuscany.sca.runtime.RuntimeProperties;
|
||||
import org.apache.tuscany.sca.something.impl.Section10Impl;
|
||||
import org.apache.tuscany.sca.work.WorkScheduler;
|
||||
|
||||
public class Section10Factory {
|
||||
|
||||
private Deployer deployer;
|
||||
private ExtensionPointRegistry extensionPointRegistry;
|
||||
private CompositeActivator compositeActivator;
|
||||
private ExtensibleDomainRegistryFactory domainRegistryFactory;
|
||||
|
||||
// TODO: keep this method?
|
||||
public static Section10 createSection10() {
|
||||
return new Section10Factory().createSection10("default");
|
||||
}
|
||||
|
||||
public Section10Factory() {
|
||||
init(null);
|
||||
}
|
||||
|
||||
public Section10Factory(Properties config) {
|
||||
init(config);
|
||||
}
|
||||
|
||||
public Section10 createSection10(String domainName) {
|
||||
EndpointRegistry endpointRegistry = domainRegistryFactory.getEndpointRegistry("default", domainName);
|
||||
return new Section10Impl(domainName, deployer, compositeActivator, endpointRegistry, extensionPointRegistry);
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
deployer.stop();
|
||||
extensionPointRegistry.stop();
|
||||
}
|
||||
|
||||
protected void init(Properties config) {
|
||||
if (config == null) {
|
||||
config = new Properties();
|
||||
config.setProperty("defaultScheme", "vm");
|
||||
config.setProperty("defaultDomainName", "default");
|
||||
}
|
||||
this.extensionPointRegistry = new DefaultExtensionPointRegistry();
|
||||
extensionPointRegistry.start();
|
||||
|
||||
FactoryExtensionPoint modelFactories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class);
|
||||
AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionPointRegistry);
|
||||
modelFactories.addFactory(assemblyFactory);
|
||||
|
||||
UtilityExtensionPoint utilities = extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class);
|
||||
this.compositeActivator = utilities.getUtility(CompositeActivator.class);
|
||||
this.deployer = utilities.getUtility(Deployer.class);
|
||||
utilities.getUtility(RuntimeProperties.class).setProperties(config);
|
||||
utilities.getUtility(WorkScheduler.class);
|
||||
|
||||
// Initialize the Tuscany module activators
|
||||
// The module activators will be started
|
||||
extensionPointRegistry.getExtensionPoint(ModuleActivatorExtensionPoint.class);
|
||||
|
||||
this.domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionPointRegistry);
|
||||
// DomainRegistryFactory domainRegistryFactory = ExtensibleDomainRegistryFactory.getInstance(extensionPointRegistry);
|
||||
// domainRegistryFactory.getEndpointRegistry(config.getProperty("reguri"), config.getProperty("defaultDomainName"));
|
||||
|
||||
}
|
||||
}
|
|
@ -1,138 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.tuscany.sca.something.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.Composite;
|
||||
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
|
||||
import org.apache.tuscany.sca.context.CompositeContext;
|
||||
import org.apache.tuscany.sca.contribution.Artifact;
|
||||
import org.apache.tuscany.sca.contribution.Contribution;
|
||||
import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
|
||||
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
|
||||
import org.apache.tuscany.sca.deployment.Deployer;
|
||||
import org.apache.tuscany.sca.monitor.Monitor;
|
||||
import org.apache.tuscany.sca.monitor.ValidationException;
|
||||
import org.apache.tuscany.sca.runtime.ActivationException;
|
||||
import org.apache.tuscany.sca.runtime.CompositeActivator;
|
||||
import org.apache.tuscany.sca.runtime.EndpointRegistry;
|
||||
|
||||
public class DeployedComposite {
|
||||
|
||||
private String uri;
|
||||
private Composite composite;
|
||||
private InstalledContribution installedContribution;
|
||||
private List<Contribution> dependedOnContributions;
|
||||
private Composite domainComposite; // TODO: this is misleadingly named
|
||||
|
||||
private CompositeActivator compositeActivator;
|
||||
private CompositeContext compositeContext;
|
||||
private Deployer deployer;
|
||||
private EndpointRegistry endpointRegistry;
|
||||
private ExtensionPointRegistry extensionPointRegistry;
|
||||
|
||||
public DeployedComposite(Composite composite,
|
||||
InstalledContribution ic,
|
||||
List<Contribution> dependedOnContributions,
|
||||
Deployer deployer,
|
||||
CompositeActivator compositeActivator,
|
||||
EndpointRegistry endpointRegistry,
|
||||
ExtensionPointRegistry extensionPointRegistry) throws ActivationException {
|
||||
this.composite = composite;
|
||||
this.installedContribution = ic;
|
||||
this.dependedOnContributions = dependedOnContributions;
|
||||
this.deployer = deployer;
|
||||
this.compositeActivator = compositeActivator;
|
||||
this.endpointRegistry = endpointRegistry;
|
||||
this.extensionPointRegistry = extensionPointRegistry;
|
||||
try {
|
||||
init();
|
||||
} catch (Exception e) {
|
||||
throw new ActivationException(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void init() throws ValidationException, ContributionResolveException, CompositeBuilderException, ActivationException {
|
||||
|
||||
List<Contribution> contribution = new ArrayList<Contribution>();
|
||||
contribution.add(installedContribution.getContribution());
|
||||
contribution.get(0).getDeployables().clear();
|
||||
contribution.get(0).getDeployables().add(composite);
|
||||
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
// TODO: is the ContextMonitor neccessary here?
|
||||
// Monitor tcm = monitorFactory.setContextMonitor(monitor);
|
||||
// try {
|
||||
|
||||
domainComposite = deployer.build(contribution, dependedOnContributions, new HashMap<QName, List<String>>(), monitor);
|
||||
monitor.analyzeProblems();
|
||||
|
||||
// } finally {
|
||||
// monitorFactory.setContextMonitor(tcm);
|
||||
// }
|
||||
|
||||
compositeContext = new CompositeContext(extensionPointRegistry,
|
||||
endpointRegistry,
|
||||
domainComposite,
|
||||
null, // nothing appears to use the domain name in CompositeContext
|
||||
null, // don't need node uri
|
||||
deployer.getSystemDefinitions());
|
||||
|
||||
CompositeContext.setThreadCompositeContext(compositeContext); // TODO: what is this doing?
|
||||
|
||||
compositeActivator.activate(compositeContext, domainComposite);
|
||||
compositeActivator.start(compositeContext, domainComposite);
|
||||
|
||||
this.uri = getCompositeURI(composite, installedContribution);
|
||||
}
|
||||
|
||||
public void unDeploy() throws ActivationException {
|
||||
compositeActivator.stop(compositeContext, domainComposite);
|
||||
compositeActivator.deactivate(domainComposite);
|
||||
}
|
||||
|
||||
public String getURI() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deployable composites don't have the uri set so get it from the artifact in the contribution
|
||||
* // TODO: fix the Tuscany code so this uri is correctly set and this method isn't needed
|
||||
*/
|
||||
protected String getCompositeURI(Composite c, InstalledContribution ic) {
|
||||
for (Artifact a : ic.getContribution().getArtifacts()) {
|
||||
if (a.getModel() != null) {
|
||||
if (a.getModel() instanceof Composite) {
|
||||
Composite cm = a.getModel();
|
||||
if (c.getName().equals(cm.getName())) {
|
||||
return cm.getURI();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// shouldn't ever happen
|
||||
throw new IllegalStateException("can't determine composte uri");
|
||||
}
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.tuscany.sca.something.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.Composite;
|
||||
import org.apache.tuscany.sca.contribution.Contribution;
|
||||
|
||||
public class InstalledContribution {
|
||||
|
||||
private String uri;
|
||||
private String url;
|
||||
private Contribution contribution;
|
||||
private List<Composite> defaultDeployables = new ArrayList<Composite>();
|
||||
private List<DeployedComposite> deployedComposites = new ArrayList<DeployedComposite>();
|
||||
private List<String> dependentContributionURIs;
|
||||
|
||||
public InstalledContribution(String uri, String url, Contribution contribution, List<String> dependentContributionURIs) {
|
||||
this.uri = uri;
|
||||
this.url = url;
|
||||
this.contribution = contribution;
|
||||
this.defaultDeployables = contribution.getDeployables();
|
||||
this.dependentContributionURIs = dependentContributionURIs;
|
||||
}
|
||||
public Contribution getContribution() {
|
||||
return contribution;
|
||||
}
|
||||
public void setContribution(Contribution contribution) {
|
||||
this.contribution = contribution;
|
||||
}
|
||||
public String getURI() {
|
||||
return uri;
|
||||
}
|
||||
public String getURL() {
|
||||
return url;
|
||||
}
|
||||
public List<Composite> getDefaultDeployables() {
|
||||
return defaultDeployables;
|
||||
}
|
||||
public List<DeployedComposite> getDeployedComposites() {
|
||||
return deployedComposites;
|
||||
}
|
||||
public List<String> getDependentContributionURIs() {
|
||||
return dependentContributionURIs;
|
||||
}
|
||||
}
|
|
@ -1,300 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.tuscany.sca.something.impl;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.AssemblyFactory;
|
||||
import org.apache.tuscany.sca.assembly.Composite;
|
||||
import org.apache.tuscany.sca.common.java.io.IOHelper;
|
||||
import org.apache.tuscany.sca.contribution.Artifact;
|
||||
import org.apache.tuscany.sca.contribution.Contribution;
|
||||
import org.apache.tuscany.sca.contribution.ContributionMetadata;
|
||||
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
|
||||
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
|
||||
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
|
||||
import org.apache.tuscany.sca.deployment.Deployer;
|
||||
import org.apache.tuscany.sca.monitor.Monitor;
|
||||
import org.apache.tuscany.sca.monitor.ValidationException;
|
||||
import org.apache.tuscany.sca.runtime.ActivationException;
|
||||
import org.apache.tuscany.sca.runtime.CompositeActivator;
|
||||
import org.apache.tuscany.sca.runtime.EndpointRegistry;
|
||||
import org.apache.tuscany.sca.something.Section10;
|
||||
import org.oasisopen.sca.NoSuchDomainException;
|
||||
import org.oasisopen.sca.NoSuchServiceException;
|
||||
import org.oasisopen.sca.client.SCAClientFactory;
|
||||
|
||||
public class Section10Impl implements Section10 {
|
||||
|
||||
private String domainName;
|
||||
private Deployer deployer;
|
||||
private Map<String, InstalledContribution> installedContributions = new HashMap<String, InstalledContribution>();
|
||||
private CompositeActivator compositeActivator;
|
||||
private EndpointRegistry endpointRegistry;
|
||||
private ExtensionPointRegistry extensionPointRegistry;
|
||||
|
||||
public Section10Impl(String domainName, Deployer deployer, CompositeActivator compositeActivator, EndpointRegistry endpointRegistry, ExtensionPointRegistry extensionPointRegistry) {
|
||||
this.domainName = domainName;
|
||||
this.deployer = deployer;
|
||||
this.compositeActivator = compositeActivator;
|
||||
this.endpointRegistry = endpointRegistry;
|
||||
this.extensionPointRegistry = extensionPointRegistry;
|
||||
}
|
||||
|
||||
public void installContribution(String uri, String contributionURL, String metaDataURL, List<String> dependentContributionURIs, boolean deployDeployables) throws ContributionReadException, ActivationException, ValidationException {
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
Contribution contribution = deployer.loadContribution(URI.create(uri), IOHelper.getLocationAsURL(contributionURL), monitor);
|
||||
monitor.analyzeProblems();
|
||||
if (metaDataURL != null) {
|
||||
mergeContributionMetaData(metaDataURL, contribution);
|
||||
}
|
||||
installContribution(contribution, dependentContributionURIs, deployDeployables);
|
||||
}
|
||||
|
||||
private void mergeContributionMetaData(String metaDataURL, Contribution contribution) throws ValidationException {
|
||||
ContributionMetadata metaData;
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
try {
|
||||
metaData = deployer.loadXMLDocument(IOHelper.getLocationAsURL(metaDataURL), monitor);
|
||||
} catch (Exception e) {
|
||||
throw new ValidationException(e);
|
||||
}
|
||||
monitor.analyzeProblems();
|
||||
contribution.getDeployables().addAll(metaData.getDeployables());
|
||||
contribution.getImports().addAll(metaData.getImports());
|
||||
contribution.getExports().addAll(metaData.getExports());
|
||||
}
|
||||
|
||||
public void installContribution(Contribution contribution, List<String> dependentContributionURIs, boolean deployDeployables) throws ContributionReadException, ActivationException, ValidationException {
|
||||
InstalledContribution ic = new InstalledContribution(contribution.getURI(), contribution.getLocation(), contribution, dependentContributionURIs);
|
||||
installedContributions.put(contribution.getURI(), ic);
|
||||
if (deployDeployables) {
|
||||
for (Composite c : ic.getDefaultDeployables()) {
|
||||
deployComposite(c, ic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String addDeploymentComposite(String contributionURI, Reader compositeXML) throws ContributionReadException, XMLStreamException, ActivationException, ValidationException {
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
Composite composite = deployer.loadXMLDocument(compositeXML, monitor);
|
||||
monitor.analyzeProblems();
|
||||
return addDeploymentComposite(contributionURI, composite);
|
||||
}
|
||||
|
||||
public String addDeploymentComposite(String contributionURI, Composite composite) throws ActivationException {
|
||||
InstalledContribution ic = installedContributions.get(contributionURI);
|
||||
if (ic == null) {
|
||||
throw new IllegalArgumentException("contribution not installed: " + contributionURI);
|
||||
}
|
||||
String compositeArtifcatURI = deployer.attachDeploymentComposite(ic.getContribution(), composite, true);
|
||||
deployComposite(composite, ic);
|
||||
return compositeArtifcatURI;
|
||||
}
|
||||
|
||||
public void addToDomainLevelComposite(String compositeURI) throws ActivationException {
|
||||
String contributionURI = getContributionUriForArtifact(compositeURI);
|
||||
InstalledContribution ic = installedContributions.get(contributionURI);
|
||||
if (ic == null) {
|
||||
throw new IllegalArgumentException("Contribution not installed: " + contributionURI);
|
||||
}
|
||||
String relativeURI = compositeURI.substring(contributionURI.length()+1);
|
||||
for (Artifact a : ic.getContribution().getArtifacts()) {
|
||||
if (a.getURI().equals(relativeURI)) {
|
||||
deployComposite((Composite) a.getModel(), ic);
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("composite not found: " + compositeURI);
|
||||
}
|
||||
|
||||
public void removeFromDomainLevelComposite(String compositeURI) throws ActivationException {
|
||||
String contributionURI = getContributionUriForArtifact(compositeURI);
|
||||
InstalledContribution ic = installedContributions.get(contributionURI);
|
||||
String relativeURI = compositeURI.substring(contributionURI.length()+1);
|
||||
for (DeployedComposite dc : ic.getDeployedComposites()) {
|
||||
if (relativeURI.equals(dc.getURI())) {
|
||||
ic.getDeployedComposites().remove(dc);
|
||||
dc.unDeploy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("composite not deployed: " + compositeURI);
|
||||
}
|
||||
|
||||
public Composite getDomainLevelComposite() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getDomainLevelCompositeAsString() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object getQNameDefinition(String contributionURI, QName definition, QName symbolSpace) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> removeContribution(String contributionURI) throws ActivationException {
|
||||
List<String> removedContributionURIs = new ArrayList<String>();
|
||||
InstalledContribution ic = installedContributions.get(contributionURI);
|
||||
if (ic != null) {
|
||||
removedContributionURIs.add(ic.getURI());
|
||||
for (String dependent : getDependentContributions(contributionURI)) {
|
||||
removedContributionURIs.addAll(removeContribution(dependent));
|
||||
}
|
||||
installedContributions.remove(contributionURI);
|
||||
for (DeployedComposite dc : ic.getDeployedComposites()) {
|
||||
dc.unDeploy();
|
||||
}
|
||||
ic.getDeployedComposites().clear();
|
||||
}
|
||||
return removedContributionURIs;
|
||||
}
|
||||
|
||||
public void updateContribution(String uri, String contributionURL) {
|
||||
// TODO Auto-generated method stub
|
||||
// is this just removeContribution/installContribution?
|
||||
}
|
||||
public void updateContribution(Contribution contribution) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
public String updateDeploymentComposite(String uri, Reader compositeXML) {
|
||||
// TODO Auto-generated method stub
|
||||
// is this removeFromDomainLevelComposite/addDeploymentComposite
|
||||
return null;
|
||||
}
|
||||
public String updateDeploymentComposite(String uri, Composite composite) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public void shutdown() throws ActivationException {
|
||||
for (String uri : installedContributions.keySet()) {
|
||||
removeContribution(uri);
|
||||
}
|
||||
}
|
||||
|
||||
public <T> T getService(Class<T> interfaze, String serviceURI) throws NoSuchServiceException {
|
||||
try {
|
||||
return SCAClientFactory.newInstance(URI.create(getDomainName())).getService(interfaze, serviceURI);
|
||||
} catch (NoSuchDomainException e) {
|
||||
// shouldn't ever happen as we know this is the domain so it must exist
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public String getDomainName() {
|
||||
return domainName;
|
||||
}
|
||||
|
||||
public List<String> getDeployedCompostes(String contributionURI) {
|
||||
ArrayList<String> compositeURIs = new ArrayList<String>();
|
||||
for (InstalledContribution ic : installedContributions.values()) {
|
||||
for (DeployedComposite dc : ic.getDeployedComposites()) {
|
||||
compositeURIs.add(ic.getURI() + "/" + dc.getURI());
|
||||
}
|
||||
}
|
||||
return compositeURIs;
|
||||
}
|
||||
|
||||
public List<String> getInstalledContributions() {
|
||||
return new ArrayList<String>(installedContributions.keySet());
|
||||
}
|
||||
|
||||
public InstalledContribution getInstalledContribution(String uri) {
|
||||
return installedContributions.get(uri);
|
||||
}
|
||||
|
||||
protected String getContributionUriForArtifact(String artifactURI) {
|
||||
String contributionURI = null;
|
||||
for (String uri : installedContributions.keySet()) {
|
||||
if (artifactURI.startsWith(uri)) {
|
||||
contributionURI = uri;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (contributionURI == null) {
|
||||
throw new IllegalArgumentException("no contribution found for: " + artifactURI);
|
||||
}
|
||||
return contributionURI;
|
||||
}
|
||||
|
||||
protected void deployComposite(Composite c, InstalledContribution ic) throws ActivationException {
|
||||
List<Contribution> dependentContributions = new ArrayList<Contribution>();
|
||||
if (ic.getDependentContributionURIs() != null) {
|
||||
// if the install specified dependent uris use just those contributions
|
||||
for (String uri : ic.getDependentContributionURIs()) {
|
||||
InstalledContribution dependee = installedContributions.get(uri);
|
||||
if (dependee != null) {
|
||||
dependentContributions.add(dependee.getContribution());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// otherwise use all available contributions for dependents
|
||||
for (InstalledContribution ics : installedContributions.values()) {
|
||||
dependentContributions.add(ics.getContribution());
|
||||
}
|
||||
}
|
||||
|
||||
DeployedComposite dc = new DeployedComposite(c, ic, dependentContributions, deployer, compositeActivator, endpointRegistry, extensionPointRegistry);
|
||||
ic.getDeployedComposites().add(dc);
|
||||
}
|
||||
|
||||
public Set<String> getDependentContributions(String contributionURI) {
|
||||
InstalledContribution ic = installedContributions.get(contributionURI);
|
||||
if (ic == null) {
|
||||
throw new IllegalArgumentException("Contribution not installed: " + contributionURI);
|
||||
}
|
||||
Set<String> dependentContributionURIs = new HashSet<String>();
|
||||
for (InstalledContribution icx : installedContributions.values()) {
|
||||
if (ic != icx) {
|
||||
List<Contribution> dependencies = icx.getContribution().getDependencies();
|
||||
if (dependencies != null && dependencies.contains(ic.getContribution())) {
|
||||
dependentContributionURIs.addAll(getDependentContributions(icx.getURI()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return dependentContributionURIs;
|
||||
}
|
||||
|
||||
public Deployer getDeployer() {
|
||||
return deployer;
|
||||
}
|
||||
|
||||
public AssemblyFactory getAssemblyFactory() {
|
||||
FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class);
|
||||
return factories.getFactory(AssemblyFactory.class);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.tuscany.sca.something;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.apache.tuscany.sca.assembly.Composite;
|
||||
import org.apache.tuscany.sca.contribution.Contribution;
|
||||
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
|
||||
import org.apache.tuscany.sca.deployment.Deployer;
|
||||
import org.apache.tuscany.sca.monitor.Monitor;
|
||||
import org.apache.tuscany.sca.monitor.ValidationException;
|
||||
import org.apache.tuscany.sca.runtime.ActivationException;
|
||||
import org.junit.Test;
|
||||
import org.oasisopen.sca.NoSuchDomainException;
|
||||
import org.oasisopen.sca.NoSuchServiceException;
|
||||
|
||||
public class DeployerTestCase {
|
||||
|
||||
@Test
|
||||
public void testInstalledContribution() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
|
||||
Deployer deployer = section10.getDeployer();
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
Contribution contribution = deployer.loadContribution(URI.create("foo"), new File("src/test/resources/sample-helloworld-nodeployable.jar").toURI().toURL(), monitor);
|
||||
monitor.analyzeProblems();
|
||||
|
||||
section10.installContribution(contribution, null, true);
|
||||
List<String> ics = section10.getInstalledContributions();
|
||||
Assert.assertEquals(1, ics.size());
|
||||
Assert.assertEquals("foo", ics.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddDeploymentComposite() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException, XMLStreamException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
|
||||
section10.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true);
|
||||
|
||||
Deployer deployer = section10.getDeployer();
|
||||
Monitor monitor = deployer.createMonitor();
|
||||
Composite composite = deployer.loadXMLDocument(new File("src/test/resources/helloworld2.composite").toURI().toURL(), monitor);
|
||||
monitor.analyzeProblems();
|
||||
composite.setURI("helloworld2.composite");
|
||||
section10.addDeploymentComposite("foo", composite);
|
||||
List<String> dcs = section10.getDeployedCompostes("foo");
|
||||
Assert.assertEquals(1, dcs.size());
|
||||
Assert.assertEquals("foo/helloworld2.composite", dcs.get(0));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.tuscany.sca.something;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
|
||||
import org.apache.tuscany.sca.monitor.ValidationException;
|
||||
import org.apache.tuscany.sca.runtime.ActivationException;
|
||||
import org.apache.tuscany.sca.something.impl.Section10Impl;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.oasisopen.sca.NoSuchDomainException;
|
||||
import org.oasisopen.sca.NoSuchServiceException;
|
||||
|
||||
public class Section10TestCase {
|
||||
|
||||
@Test
|
||||
public void testInstallDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null, true);
|
||||
|
||||
// Helloworld helloworldService = section10.getService(Helloworld.class, "HelloworldComponent");
|
||||
// Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
|
||||
}
|
||||
|
||||
@Ignore("TODO: fails with Sun JDK due to SCA properties issue")
|
||||
@Test
|
||||
public void testInstallWithDependent() throws NoSuchServiceException, ContributionReadException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("store", "/Tuscany/svn/2.x-trunk/itest/T3558/src/test/resources/sample-store.jar", null, null, true);
|
||||
section10.installContribution("store-client", "/Tuscany/svn/2.x-trunk/itest/T3558/src/test/resources/sample-store-client.jar", null, null, true);
|
||||
|
||||
// Helloworld helloworldService = section10.getService(Helloworld.class, "HelloworldComponent");
|
||||
// Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInstallNoDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true);
|
||||
|
||||
// SCAClientFactory scaClientFactory = section10.getSCAClientFactory();
|
||||
// try {
|
||||
// scaClientFactory.getService(Helloworld.class, "HelloworldComponent");
|
||||
// Assert.fail();
|
||||
// } catch (NoSuchServiceException e) {
|
||||
// // expected as there is no deployables
|
||||
// }
|
||||
|
||||
section10.addToDomainLevelComposite("helloworld" + "/helloworld.composite");
|
||||
// Helloworld helloworldService = scaClientFactory.getService(Helloworld.class, "HelloworldComponent");
|
||||
// Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInstalledContributions() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null, true);
|
||||
List<String> ics = section10.getInstalledContributions();
|
||||
Assert.assertEquals(1, ics.size());
|
||||
Assert.assertEquals("foo", ics.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDeployedCompostes() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null, true);
|
||||
List<String> dcs = section10.getDeployedCompostes("foo");
|
||||
Assert.assertEquals(1, dcs.size());
|
||||
Assert.assertEquals("foo/helloworld.composite", dcs.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveComposte() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
section10.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null, true);
|
||||
section10.removeFromDomainLevelComposite("foo/helloworld.composite");
|
||||
List<String> dcs = section10.getDeployedCompostes("foo");
|
||||
Assert.assertEquals(0, dcs.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInstallWithMetaData() throws ContributionReadException, ActivationException, ValidationException {
|
||||
Section10 section10 = Section10Factory.createSection10();
|
||||
((Section10Impl)section10).installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", "src/test/resources/sca-contribution-generated.xml", null, true);
|
||||
|
||||
List<String> dcs = section10.getDeployedCompostes("helloworld");
|
||||
Assert.assertEquals(1, dcs.size());
|
||||
Assert.assertEquals("helloworld/helloworld.composite", dcs.get(0));
|
||||
|
||||
// Helloworld helloworldService = scaClientFactory.getService(Helloworld.class, "HelloworldComponent");
|
||||
// Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package sample;
|
||||
|
||||
public interface Helloworld {
|
||||
String sayHello(String name);
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
-->
|
||||
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
|
||||
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
|
||||
targetNamespace="http://sample"
|
||||
name="helloworld2">
|
||||
|
||||
<component name="Helloworld2Component">
|
||||
<implementation.java class="sample.HelloworldImpl"/>
|
||||
</component>
|
||||
|
||||
</composite>
|
Binary file not shown.
Binary file not shown.
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
-->
|
||||
<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
|
||||
xmlns:sample="http://sample">
|
||||
<deployable composite="sample:helloworld"/>
|
||||
</contribution>
|
Loading…
Add table
Reference in a new issue