diff options
Diffstat (limited to '')
11 files changed, 1009 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/BindingConfiguration.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/BindingConfiguration.java new file mode 100644 index 0000000000..a6dab059a3 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/BindingConfiguration.java @@ -0,0 +1,55 @@ +/* + * 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.node.configuration; + +import java.util.List; + +import javax.xml.namespace.QName; + +/** + * Configuration for bindings used by an SCA node + */ +public interface BindingConfiguration { + /** + * Get the QName of the binding type + * @return the QName of the binding type + */ + QName getBindingType(); + + /** + * Set the type of the binding + * @param type The QName of the binding type + */ + BindingConfiguration setBindingType(QName type); + + /** + * Get a list of base URIs for the binding. For each protocol supported by the binding, + * one base URI can be configured + * @return A list of base URIs + */ + List<String> getBaseURIs(); + + /** + * Add a base URI + * @param baseURI + * @return + */ + BindingConfiguration addBaseURI(String baseURI); +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/ContributionConfiguration.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/ContributionConfiguration.java new file mode 100644 index 0000000000..ee790f54bf --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/ContributionConfiguration.java @@ -0,0 +1,141 @@ +/* + * 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.node.configuration; + +import java.io.InputStream; +import java.io.Reader; +import java.net.URI; +import java.net.URL; +import java.util.List; + +/** + * Configuration for an SCA contribution used by the SCA node + */ +public interface ContributionConfiguration { + /** + * Get the URI of the contribution + * @return The URI of the contribution + */ + String getURI(); + + /** + * Set the URI of the contribution + * @param uri The URI of the contribution + */ + ContributionConfiguration setURI(String uri); + + /** + * Get the location of the contribution + * @return The location of the contribution + */ + String getLocation(); + + /** + * Set the location of the contribution + * @param location The location of the contribution + */ + ContributionConfiguration setLocation(String location); + + /** + * Get the list of deployment composites that are attached to the contribution + * @return A list of deployment composites + */ + List<DeploymentComposite> getDeploymentComposites(); + + /** + * Add a deployment composite to this contribution + * @param deploymentComposite The deployment composite + * @return + */ + ContributionConfiguration addDeploymentComposite(DeploymentComposite deploymentComposite); + + /** + * Create a deployment composite and add it to the contribution configuration + * @param location The location is either relative to the contribution or + * @return + */ + ContributionConfiguration addDeploymentComposite(URI location); + + /** + * Attach a deployment composite to this contribution + * @param location + * @return + */ + ContributionConfiguration addDeploymentComposite(URL location); + + /** + * Attach a deployment composite to this contribution + * @param content The string that contains the XML description of the SCA composite + * @return + */ + ContributionConfiguration addDeploymentComposite(String content); + + /** + * Attach a deployment composite to this contribution + * @param content The XML description of the SCA composite from a reader + * @return + */ + ContributionConfiguration addDeploymentComposite(Reader content); + /** + * Attach a deployment composite to this contribution + * @param content The XML description of the SCA composite from an input stream + * @return + */ + ContributionConfiguration addDeploymentComposite(InputStream content); + + /** + * Set if the deployable composites should be started when the contribution is installed + * @param startDeployables whether or not deployable composites should be started. The default is false. + */ + void setStartDeployables(boolean startDeployables); + + /** + * Tests if the deployable composites should be started when the contribution is installed + */ + boolean isStartDeployables(); + + /** + * Gets the URIs of any dependent contributions. The dependent contributions are the + * contributions that will be used to resolve any imports used by this contribution. + * @return the URIs of any dependent contribution + */ + List<String> getDependentContributionURIs(); + + /** + * Sets the dependent contribution URIs for this contribution. The dependent contributions are the + * contributions that will be used to resolve any imports used by this contribution. + * @param dependentContributionURIs + */ + void setDependentContributionURIs(List<String> dependentContributionURIs); + + /** + * Get the contribution meta data url. This is sca-contribution.xml data that is added to any + * existing meta-inf/sca-contribution.xml file within the contribution. + * @return the metadata url string + */ + String getMetaDataURL(); + + /** + * Set the contribution meta data url. This is sca-contribution.xml data that is added to any + * existing meta-inf/sca-contribution.xml file within the contribution. + * @param metaDataURL the url string to the metadata file. + */ + void setMetaDataURL(String metaDataURL); +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DefaultNodeConfigurationFactory.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DefaultNodeConfigurationFactory.java new file mode 100644 index 0000000000..a23cef7e81 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DefaultNodeConfigurationFactory.java @@ -0,0 +1,46 @@ +/* + * 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.node.configuration; + +import org.apache.tuscany.sca.node.configuration.impl.NodeConfigurationFactoryImpl; + +/** + * Default NodeConfigurationFactory + */ +public class DefaultNodeConfigurationFactory implements NodeConfigurationFactory { + private NodeConfigurationFactory factory = new NodeConfigurationFactoryImpl(); + + public BindingConfiguration createBindingConfiguration() { + return factory.createBindingConfiguration(); + } + + public ContributionConfiguration createContributionConfiguration() { + return factory.createContributionConfiguration(); + } + + public DeploymentComposite createDeploymentComposite() { + return factory.createDeploymentComposite(); + } + + public NodeConfiguration createNodeConfiguration() { + return factory.createNodeConfiguration(); + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DeploymentComposite.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DeploymentComposite.java new file mode 100644 index 0000000000..18fecf8044 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DeploymentComposite.java @@ -0,0 +1,64 @@ +/* + * 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.node.configuration; + + +/** + * Configuration for a deployment composite + */ +public interface DeploymentComposite { + /** + * Get the location of the deployment composite, it can be relative to the owning + * contribution or an external resource + * @return + */ + String getLocation(); + + /** + * Set the location of the deployment composite + * @param location + */ + DeploymentComposite setLocation(String location); + + /** + * Get string content of the deployment composite (XML) + * @return + */ + String getContent(); + + /** + * Set the XML content for the composite + * @param compositeXML + */ + DeploymentComposite setContent(String compositeXML); + + /** + * Get the URI of the contribution that the deployment composite is attached to + * @return the URI of the contribution that the deployment composite is attached to + */ + String getContributionURI(); + + /** + * Set the URI of the contribution that the deployment composite is attached to + * @param contributionURI + */ + DeploymentComposite setContributionURI(String contributionURI); + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java new file mode 100644 index 0000000000..12c6994dda --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java @@ -0,0 +1,108 @@ +/* + * 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.node.configuration; + +import java.io.InputStream; +import java.io.Reader; +import java.net.URI; +import java.net.URL; +import java.util.List; + +import javax.xml.namespace.QName; + +/** + * The configuration for a Node which represents the deployment of an SCA composite application + * @tuscany.spi.extension.asclient + */ +public interface NodeConfiguration { + String DEFAULT_DOMAIN_URI = "default"; + String DEFAULT_NODE_URI = "http://tuscany.apache.org/sca/1.1/nodes/default"; + String DEFAULT_DOMAIN_REGISTRY_URI = "default"; + + /** + * Get the URI of the SCA domain that manages the composite application + * @return The URI of the SCA domain + */ + String getDomainURI(); + + /** + * Set the URI of the SCA domain + * @param domainURI The URI of the SCA domain + */ + NodeConfiguration setDomainURI(String domainURI); + + /** + * Return the URI of the domain registry + * @return + */ + String getDomainRegistryURI(); + + /** + * Set the URI of the domain registry + * @param domainRegistryURI The URI of the domain registry. The scheme will be used + * by Tusany to choose the implementation of DomainRegistry interface. Examples are: + * <ul> + * <li>vm://localhost (a JVM local registry) + * <li>multicast://228.0.0.100:50000?timeout=50 (Tomcat Tribes multicast based registry) + * </ul> + * @return The NodeConfiguration + */ + NodeConfiguration setDomainRegistryURI(String domainRegistryURI); + + /** + * Get the URI of the node. It uniquely identifies a node within the SCA domain + * @return The URI of the node + */ + String getURI(); + + /** + * Set the URI of the node + * @param uri The URI of the node + */ + NodeConfiguration setURI(String uri); + + /** + * Get a list of confiurations for SCA contributions + * @return A list of configurations for SCA contributions + */ + List<ContributionConfiguration> getContributions(); + + /** + * Get a list of configurations for SCA bindings + * @return A list of configurations for SCA bindings + */ + List<BindingConfiguration> getBindings(); + + NodeConfiguration addContribution(ContributionConfiguration contribution); + NodeConfiguration addContribution(String contributionURI, String location); + NodeConfiguration addContribution(String contributionURI, URL location); + NodeConfiguration addContribution(URI contributionURI, URL location); + NodeConfiguration addContribution(URL...location); + + NodeConfiguration addDeploymentComposite(String contributionURI, String location); + NodeConfiguration addDeploymentComposite(String contributionURI, Reader content); + NodeConfiguration addDeploymentComposite(String contributionURI, InputStream content); + + NodeConfiguration addBinding(BindingConfiguration binding); + NodeConfiguration addBinding(QName bindingType, String...baseURIs); + NodeConfiguration addBinding(QName bindingType, URI...baseURIs); + + List<Object> getExtensions(); +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfigurationFactory.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfigurationFactory.java new file mode 100644 index 0000000000..71833bc7e7 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfigurationFactory.java @@ -0,0 +1,50 @@ +/* + * 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.node.configuration; + + +/** + * The factory to create java models related to the node configuration + */ +public interface NodeConfigurationFactory { + /** + * Create a new instance of NodeConfiguration + * @return + */ + NodeConfiguration createNodeConfiguration(); + + /** + * Create a new instance of ContributionConfiguration + * @return + */ + ContributionConfiguration createContributionConfiguration(); + + /** + * Create a new instance of BindingConfiguration + * @return + */ + BindingConfiguration createBindingConfiguration(); + + /** + * Create a new instance of DeploymentComposite + * @return + */ + DeploymentComposite createDeploymentComposite(); +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java new file mode 100644 index 0000000000..5658187c4f --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java @@ -0,0 +1,54 @@ +/* + * 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.node.configuration.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.node.configuration.BindingConfiguration; + +/** + * Default implementation of BindingConfiguration + */ +public class BindingConfigurationImpl implements BindingConfiguration { + private QName type; + private List<String> baseURIs = new ArrayList<String>(); + + public List<String> getBaseURIs() { + return baseURIs; + } + + public QName getBindingType() { + return type; + } + + public BindingConfiguration setBindingType(QName type) { + this.type = type; + return this; + } + + public BindingConfiguration addBaseURI(String baseURI) { + baseURIs.add(baseURI); + return this; + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java new file mode 100644 index 0000000000..f6e462142a --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java @@ -0,0 +1,188 @@ +/* + * 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.node.configuration.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringWriter; +import java.net.URI; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; +import org.apache.tuscany.sca.node.configuration.DeploymentComposite; + +/** + * Configuration for an SCA contribution used by the SCA node + */ +public class ContributionConfigurationImpl implements ContributionConfiguration { + private List<DeploymentComposite> deploymentComposites = new ArrayList<DeploymentComposite>(); + private String uri; + private String location; + private boolean startDeployables; + private List<String> dependentContributionURIs; + private String metaDataURL; + + public ContributionConfigurationImpl() { + super(); + } + + public ContributionConfigurationImpl(String uri, String location) { + super(); + this.uri = uri; + this.location = location; + } + + public ContributionConfigurationImpl(String location) { + super(); + this.uri = location; + this.location = location; + } + + /** + * Get the URI of the contribution + * @return The URI of the contribution + */ + public String getURI() { + return uri; + } + + /** + * Set the URI of the contribution + * @param uri The URI of the contribution + */ + public ContributionConfiguration setURI(String uri) { + this.uri = uri; + return this; + } + + /** + * Get the location of the contribution + * @return The location of the contribution + */ + public String getLocation() { + return location; + } + + /** + * Set the location of the contribution + * @param location The location of the contribution + */ + public ContributionConfiguration setLocation(String location) { + this.location = location; + return this; + } + + /** + * Get the list of deployment composites that are attached to the contribution + * @return + */ + public List<DeploymentComposite> getDeploymentComposites() { + return deploymentComposites; + } + + public ContributionConfiguration addDeploymentComposite(DeploymentComposite deploymentComposite) { + deploymentComposites.add(deploymentComposite); + if (uri != null) { + deploymentComposite.setContributionURI(uri); + } + return this; + } + + public ContributionConfiguration addDeploymentComposite(Reader reader) { + try { + DeploymentComposite composite = new DeploymentCompositeImpl(); + char[] buf = new char[8192]; + StringWriter sw = new StringWriter(); + int size = 0; + while (size >= 0) { + size = reader.read(buf); + if (size > 0) { + sw.write(buf, 0, size); + } + } + reader.close(); + composite.setContent(sw.toString()); + return addDeploymentComposite(composite); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } + } + + public ContributionConfiguration addDeploymentComposite(InputStream content) { + try { + InputStreamReader reader = new InputStreamReader(content, "UTF-8"); + return addDeploymentComposite(reader); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } + } + + public ContributionConfiguration addDeploymentComposite(String content) { + DeploymentComposite composite = new DeploymentCompositeImpl(); + composite.setContent(content); + return addDeploymentComposite(composite); + } + + public ContributionConfiguration addDeploymentComposite(URI location) { + DeploymentComposite composite = new DeploymentCompositeImpl(); + composite.setLocation(location.toString()); + return addDeploymentComposite(composite); + } + + public ContributionConfiguration addDeploymentComposite(URL location) { + DeploymentComposite composite = new DeploymentCompositeImpl(); + composite.setLocation(location.toString()); + return addDeploymentComposite(composite); + } + + @Override + public void setStartDeployables(boolean startDeployables) { + this.startDeployables = startDeployables; + } + + @Override + public boolean isStartDeployables() { + return startDeployables; + } + + @Override + public List<String> getDependentContributionURIs() { + return dependentContributionURIs; + } + + @Override + public void setDependentContributionURIs(List<String> dependentContributionURIs) { + this.dependentContributionURIs = dependentContributionURIs; + } + + @Override + public String getMetaDataURL() { + return metaDataURL; + } + + @Override + public void setMetaDataURL(String metaDataURL) { + this.metaDataURL = metaDataURL; + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java new file mode 100644 index 0000000000..a161b426e7 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java @@ -0,0 +1,64 @@ +/* + * 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.node.configuration.impl; + +import org.apache.tuscany.sca.node.configuration.DeploymentComposite; + +/** + * Configuration for a deployment composite + */ +public class DeploymentCompositeImpl implements DeploymentComposite { + private String location; + private String content; + private String contributionURI; + + public String getLocation() { + return location; + } + + public DeploymentComposite setLocation(String location) { + this.location = location; + return this; + } + + public String getContent() { + return content; + } + + public DeploymentComposite setContent(String content) { + this.content = content; + return this; + } + + public String getContributionURI() { + return contributionURI; + } + + public DeploymentComposite setContributionURI(String contributionURI) { + this.contributionURI = contributionURI; + return this; + } + + @Override + public String toString() { + return "DeploymentCompositeImpl [contributionURI=" + contributionURI + ", location=" + location + "]"; + } + +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java new file mode 100644 index 0000000000..86096c9aee --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java @@ -0,0 +1,63 @@ +/* + * 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.node.configuration.impl; + +import org.apache.tuscany.sca.node.configuration.BindingConfiguration; +import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; +import org.apache.tuscany.sca.node.configuration.DeploymentComposite; +import org.apache.tuscany.sca.node.configuration.NodeConfiguration; +import org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory; + +/** + * The factory to create java models related to the node configuration + */ +public class NodeConfigurationFactoryImpl implements NodeConfigurationFactory { + /** + * Create a new instance of NodeConfiguration + * @return + */ + public NodeConfiguration createNodeConfiguration() { + return new NodeConfigurationImpl(); + } + + /** + * Create a new instance of ContributionConfiguration + * @return + */ + public ContributionConfiguration createContributionConfiguration() { + return new ContributionConfigurationImpl(); + } + + /** + * Create a new instance of BindingConfiguration + * @return + */ + public BindingConfiguration createBindingConfiguration() { + return new BindingConfigurationImpl(); + } + + /** + * Create a new instance of DeploymentComposite + * @return + */ + public DeploymentComposite createDeploymentComposite() { + return new DeploymentCompositeImpl(); + } +} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java new file mode 100644 index 0000000000..b4ec05cae5 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java @@ -0,0 +1,176 @@ +/* + * 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.node.configuration.impl; + +import java.io.InputStream; +import java.io.Reader; +import java.net.URI; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.node.configuration.BindingConfiguration; +import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; +import org.apache.tuscany.sca.node.configuration.NodeConfiguration; + +/** + * Default implementation of NodeConfiguration + */ +public class NodeConfigurationImpl implements NodeConfiguration { + private String uri = DEFAULT_NODE_URI; + private String domainURI = DEFAULT_DOMAIN_URI; + private String domainRegistryURI = DEFAULT_DOMAIN_REGISTRY_URI; + private List<ContributionConfiguration> contributions = new ArrayList<ContributionConfiguration>(); + private List<BindingConfiguration> bindings = new ArrayList<BindingConfiguration>(); + private List<Object> extensions = new ArrayList<Object>(); + + public String getURI() { + return uri; + } + + public NodeConfiguration setURI(String uri) { + this.uri = uri; + return this; + } + + public String getDomainURI() { + return domainURI; + } + + public NodeConfiguration setDomainURI(String domainURI) { + this.domainURI = domainURI; + return this; + } + + public List<ContributionConfiguration> getContributions() { + return contributions; + } + + public List<BindingConfiguration> getBindings() { + return bindings; + } + + public NodeConfiguration addBinding(BindingConfiguration bindingConfiguration) { + for (BindingConfiguration bc : bindings) { + // Try to merge first by QName + if (bc.getBindingType().equals(bindingConfiguration.getBindingType())) { + bc.getBaseURIs().addAll(bindingConfiguration.getBaseURIs()); + return this; + } + } + bindings.add(bindingConfiguration); + return this; + } + + public NodeConfiguration addContribution(ContributionConfiguration contributionConfiguration) { + contributions.add(contributionConfiguration); + return this; + } + + public NodeConfiguration addBinding(QName bindingType, String... baseURIs) { + BindingConfiguration binding = new BindingConfigurationImpl().setBindingType(bindingType); + for (String u : baseURIs) { + String[] uris = u.split("(\\s)+"); + for (String uri : uris) { + if (uri.length() > 0) { + binding.addBaseURI(uri); + } + } + } + return addBinding(binding); + } + + public NodeConfiguration addBinding(QName bindingType, URI... baseURIs) { + BindingConfiguration binding = new BindingConfigurationImpl().setBindingType(bindingType); + for (URI u : baseURIs) { + binding.addBaseURI(u.toString()); + } + return addBinding(binding); + } + + public NodeConfiguration addContribution(String contributionURI, String location) { + ContributionConfiguration contribution = new ContributionConfigurationImpl(contributionURI, location); + return addContribution(contribution); + } + + public NodeConfiguration addContribution(String contributionURI, URL location) { + return addContribution(contributionURI, location.toString()); + } + + public NodeConfiguration addContribution(URI contributionURI, URL location) { + return addContribution(contributionURI.toString(), location.toString()); + } + + public NodeConfiguration addContribution(URL... locations) { + for (URL url : locations) { + ContributionConfiguration contribution = new ContributionConfigurationImpl(url.toString(), url.toString()); + addContribution(contribution); + } + return this; + } + + public NodeConfiguration addDeploymentComposite(String contributionURI, InputStream content) { + findContribution(contributionURI).addDeploymentComposite(content); + return this; + } + + public NodeConfiguration addDeploymentComposite(String contributionURI, Reader content) { + findContribution(contributionURI).addDeploymentComposite(content); + return this; + } + + public NodeConfiguration addDeploymentComposite(String contributionURI, String location) { + findContribution(contributionURI).addDeploymentComposite(URI.create(location)); + return this; + } + + private ContributionConfiguration findContribution(String uri) { + for (ContributionConfiguration c : contributions) { + if (c.getURI() != null && c.getURI().equals(uri)) { + return c; + } + } + throw new IllegalArgumentException("Contribution is not found (uri=" + uri + ")"); + } + + public String toString() { + if (domainURI != null) { + return "{" + domainURI + "}" + uri; + } else { + return uri; + } + } + + public List<Object> getExtensions() { + return extensions; + } + + public String getDomainRegistryURI() { + return domainRegistryURI; + } + + public NodeConfiguration setDomainRegistryURI(String domainRegistryURI) { + this.domainRegistryURI = domainRegistryURI; + return this; + } + +} |