diff options
Diffstat (limited to '')
5 files changed, 545 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0-Beta2/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/BindingConfigurationImpl.java b/sca-java-2.x/tags/2.0-Beta2/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-Beta2/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-Beta2/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/ContributionConfigurationImpl.java b/sca-java-2.x/tags/2.0-Beta2/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/tags/2.0-Beta2/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/tags/2.0-Beta2/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/DeploymentCompositeImpl.java b/sca-java-2.x/tags/2.0-Beta2/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-Beta2/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-Beta2/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationFactoryImpl.java b/sca-java-2.x/tags/2.0-Beta2/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-Beta2/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-Beta2/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java b/sca-java-2.x/tags/2.0-Beta2/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/tags/2.0-Beta2/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; + } + +} |