summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration')
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/BindingConfiguration.java55
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/ContributionConfiguration.java141
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DefaultNodeConfigurationFactory.java46
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DeploymentComposite.java64
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java135
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfigurationFactory.java50
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java54
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java188
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java64
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java63
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java204
11 files changed, 1064 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/BindingConfiguration.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/ContributionConfiguration.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DefaultNodeConfigurationFactory.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/DeploymentComposite.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java b/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java
new file mode 100644
index 0000000000..1ed7c2d408
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java
@@ -0,0 +1,135 @@
+/*
+ * 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 java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.assembly.Endpoint;
+
+/**
+ * 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);
+
+ /**
+ * Get a list of endpoint descriptions for external services.
+ * @return
+ */
+ List<Endpoint> getEndpointDescriptions();
+
+ List<Object> getExtensions();
+
+
+ /**
+ * Allow the hosting environment to pass in a map of attributes as context
+ * @param name The name of the attribute
+ * @param value The value of the attribute
+ * @return
+ */
+ Map<String, Object> getAttributes();
+
+ /**
+ * Configure an attribute
+ * @param name
+ * @param value
+ * @return
+ */
+ NodeConfiguration setAttribute(String name, Object value);
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfigurationFactory.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java b/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java
new file mode 100644
index 0000000000..0c4059a7d9
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/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 = true;
+ 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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java b/sca-java-2.x/tags/2.0.1-RC1/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/tags/2.0.1-RC1/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/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java b/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java
new file mode 100644
index 0000000000..55c3bef605
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java
@@ -0,0 +1,204 @@
+/*
+ * 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.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.assembly.Endpoint;
+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>();
+ private List<Endpoint> endpoints = new ArrayList<Endpoint>();
+
+ private transient Map<String, Object> attributes = new HashMap<String, 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) {
+ String url = null;
+ if (location != null) {
+ url = location.toString();
+ }
+ return addContribution(contributionURI, url);
+ }
+
+ public NodeConfiguration addContribution(URI contributionURI, URL location) {
+ String url = null;
+ if (location != null) {
+ url = location.toString();
+ }
+ return addContribution(contributionURI.toString(), url);
+ }
+
+ 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;
+ }
+
+ public Map<String, Object> getAttributes() {
+ return attributes;
+ }
+
+ public NodeConfiguration setAttribute(String name, Object value) {
+ attributes.put(name, value);
+ return this;
+ }
+
+ @Override
+ public List<Endpoint> getEndpointDescriptions() {
+ return endpoints;
+ }
+
+}