Modified: tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java?rev=767701&r1=767700&r2=767701&view=diff ============================================================================== --- tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java (original) +++ tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java Wed Apr 22 22:49:55 2009 @@ -177,29 +177,22 @@ ConfiguredNodeImplementation configuration = getNodeConfiguration(bundle); if (compositeContent != null) { - Contribution deploymentContrib = createDeploymentContribution(compositeContent); + Composite deploymentComposite = + addDeploymentComposite(configuration.getContributions().get(0), compositeContent); - configuration.setComposite(deploymentContrib.getDeployables().get(0)); - configuration.getContributions().add(deploymentContrib); + configuration.setComposite(deploymentComposite); } return configuration; } /** - * Create an SCA contribution to hold the deployment composite + * Add the deployment composite to an installed SCA contribution * @param compositeContent The XML string for the deployment composite - * @return An SCA contribution with the deployment composite + * @return The deployment composite * @throws Exception */ - private Contribution createDeploymentContribution(String compositeContent) throws Exception { - // Create the deployment contribution - Contribution contrib = contributionFactory.createContribution(); - contrib.setURI(SCA11_TUSCANY_NS + "/contributions/_deployment_"); - contrib.setLocation(SCA11_TUSCANY_NS + "/contributions/_deployment_"); - ModelResolver modelResolver = new ExtensibleModelResolver(contrib, modelResolvers, modelFactories); - contrib.setModelResolver(modelResolver); - contrib.setUnresolved(false); + private Composite addDeploymentComposite(Contribution contrib, String compositeContent) throws Exception { // Load the deployment composite XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(compositeContent)); @@ -210,16 +203,14 @@ Artifact compositeArtifact = contributionFactory.createArtifact(); compositeArtifact.setModel(deploymentComposite); - compositeArtifact.setURI("META-INF/_deployment_.composite"); - compositeArtifact.setContents(compositeContent.getBytes("UTF-8")); - compositeArtifact.setLocation(SCA11_TUSCANY_NS + "/contributions/_deployment_/META-INF/_deployment_.composite"); + compositeArtifact.setURI(deploymentComposite.getName()+".composite"); compositeArtifact.setUnresolved(false); contrib.getArtifacts().add(compositeArtifact); contrib.getDeployables().add(deploymentComposite); analyzeProblems(); - return contrib; + return deploymentComposite; } private synchronized void init() {
Modified: tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java?rev=767701&r1=767700&r2=767701&view=diff ============================================================================== --- tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java (original) +++ tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java Wed Apr 22 22:49:55 2009 @@ -6,15 +6,15 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.workspace.processor.impl; @@ -53,7 +53,7 @@ /** * URLArtifactProcessor that handles contribution files and the artifacts they contain * and returns a contribution model. - * + * * @version $Rev$ $Date$ */ public class ContributionContentProcessor implements URLArtifactProcessor<Contribution>{ @@ -76,7 +76,7 @@ this.contributionFactory = modelFactories.getFactory(ContributionFactory.class); this.scanners = extensionPoints.getExtensionPoint(ContributionScannerExtensionPoint.class); } - + /* public ContributionContentProcessor(FactoryExtensionPoint modelFactories, ModelResolverExtensionPoint modelResolvers, URLArtifactProcessor<Object> artifactProcessor, StAXArtifactProcessor<Object> extensionProcessor, Monitor monitor) { @@ -89,17 +89,17 @@ this.monitor = monitor; } */ - + public String getArtifactType() { return ".contribution/content"; } - + public Class<Contribution> getModelType() { return Contribution.class; } - + public Contribution read(URL parentURL, URI contributionURI, URL contributionURL) throws ContributionReadException { - + // Create contribution model Contribution contribution = contributionFactory.createContribution(); contribution.setURI(contributionURI.toString()); @@ -117,7 +117,7 @@ scanner = new JarContributionScanner(); } } - + // Scan the contribution and list the artifacts contained in it List<Artifact> artifacts = contribution.getArtifacts(); boolean contributionMetadata = false; @@ -131,7 +131,7 @@ artifact.setLocation(artifactURL.toString()); artifacts.add(artifact); modelResolver.addModel(artifact); - + // Read each artifact Object model = artifactProcessor.read(contributionURL, URI.create(artifactURI), artifactURL); if (model != null) { @@ -147,10 +147,12 @@ contribution.getImports().addAll(c.getImports()); contribution.getExports().addAll(c.getExports()); contribution.getDeployables().addAll(c.getDeployables()); + contribution.getExtensions().addAll(c.getExtensions()); + contribution.getAttributeExtensions().addAll(c.getAttributeExtensions()); } } } - + // If no sca-contribution.xml file was provided then just consider // all composites in the contribution as deployables if (!contributionMetadata) { @@ -167,24 +169,24 @@ DefaultExport defaultExport = contributionFactory.createDefaultExport(); contribution.getExports().add(defaultExport); } - + return contribution; } - + public void resolve(Contribution contribution, ModelResolver resolver) throws ContributionResolveException { - + // Resolve the contribution model itself ModelResolver contributionResolver = contribution.getModelResolver(); contribution.setUnresolved(false); contributionResolver.addModel(contribution); - + // Resolve imports and exports for (Export export: contribution.getExports()) { if (export instanceof DefaultExport) { - + // Initialize the default export's resolver export.setModelResolver(contributionResolver); - + } else { extensionProcessor.resolve(export, contributionResolver); } @@ -192,7 +194,7 @@ for (Import import_: contribution.getImports()) { extensionProcessor.resolve(import_, contributionResolver); } - + // Resolve all artifact models for (Artifact artifact : contribution.getArtifacts()) { Object model = artifact.getModel(); @@ -204,7 +206,7 @@ } } } - + // Resolve deployable composites List<Composite> deployables = contribution.getDeployables(); for (int i = 0, n = deployables.size(); i < n; i++) { Modified: tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java?rev=767701&r1=767700&r2=767701&view=diff ============================================================================== --- tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java (original) +++ tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java Wed Apr 22 22:49:55 2009 @@ -6,15 +6,15 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.workspace.processor.impl; @@ -55,7 +55,7 @@ /** * URLArtifactProcessor that handles contribution files and returns a contribution * info model. - * + * * @version $Rev$ $Date$ */ public class ContributionInfoProcessor implements URLArtifactProcessor<Contribution>{ @@ -76,7 +76,7 @@ this.extensionProcessor = extensionProcessor; this.contributionFactory = modelFactories.getFactory(ContributionFactory.class); } - + public ContributionInfoProcessor(FactoryExtensionPoint modelFactories, ModelResolverExtensionPoint modelResolvers, URLArtifactProcessor<Object> artifactProcessor) { this.modelFactories = modelFactories; this.modelResolvers = modelResolvers; @@ -84,17 +84,17 @@ this.artifactProcessor = artifactProcessor; this.contributionFactory = modelFactories.getFactory(ContributionFactory.class); } - + public String getArtifactType() { return ".contribution/info"; } - + public Class<Contribution> getModelType() { return null; } - + public Contribution read(URL parentURL, URI contributionURI, URL contributionURL) throws ContributionReadException { - + // Create contribution model Contribution contribution = contributionFactory.createContribution(); contribution.setURI(contributionURI.toString()); @@ -110,7 +110,7 @@ } else { scanner = new JarContributionScanner(); } - + // Read generated and user sca-contribution.xml files boolean contributionMetadata = false; for (String path: new String[]{ @@ -127,14 +127,16 @@ continue; } contributionMetadata = true; - + // Read the sca-contribution.xml file ContributionMetadata c = (ContributionMetadata)artifactProcessor.read(contributionURL, URI.create(path), url); contribution.getImports().addAll(c.getImports()); contribution.getExports().addAll(c.getExports()); contribution.getDeployables().addAll(c.getDeployables()); + contribution.getExtensions().addAll(c.getExtensions()); + contribution.getAttributeExtensions().addAll(c.getAttributeExtensions()); } - + // If no sca-contribution.xml file was provided then consider // all composites in the contribution as deployables, and also // read any files that are explicitly asssigned artifact processors @@ -160,10 +162,10 @@ } if (read) { URL artifactURL = scanner.getArtifactURL(contributionURL, artifactURI); - + // Read each artifact Object model = artifactProcessor.read(contributionURL, URI.create(artifactURI), artifactURL); - + // In the absence of more info, consider all composites as deployable if (model instanceof Composite) { contribution.getDeployables().add((Composite)model); @@ -171,7 +173,7 @@ } } } - + // Add default contribution import and export DefaultImport defaultImport = contributionFactory.createDefaultImport(); defaultImport.setModelResolver(new DefaultModelResolver()); @@ -179,24 +181,24 @@ DefaultExport defaultExport = contributionFactory.createDefaultExport(); contribution.getExports().add(defaultExport); } - + return contribution; } - + public void resolve(Contribution contribution, ModelResolver resolver) throws ContributionResolveException { - + // Mark the contribution model resolved ModelResolver contributionResolver = contribution.getModelResolver(); contribution.setUnresolved(false); contributionResolver.addModel(contribution); - + // Resolve imports and exports for (Export export: contribution.getExports()) { if (export instanceof DefaultExport) { - + // Initialize the default export's resolver export.setModelResolver(contributionResolver); - + } else { extensionProcessor.resolve(export, contributionResolver); } @@ -204,12 +206,12 @@ for (Import import_: contribution.getImports()) { extensionProcessor.resolve(import_, contributionResolver); } - + } /** * FIXME Temporary hack for testing the ClassLoaderModelResolver. - * + * * @param modelResolvers */ private static void hackResolvers(ModelResolverExtensionPoint modelResolvers) { Modified: tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF?rev=767701&r1=767700&r2=767701&view=diff ============================================================================== --- tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF (original) +++ tuscany/java/sca/modules/workspace/META-INF/MANIFEST.MF Wed Apr 22 22:49:55 2009 @@ -15,6 +15,7 @@ Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt Bundle-Description: Apache Tuscany SCA Domain Workspace Model Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0", + org.apache.tuscany.sca.assembly.impl;version="2.0.0", org.apache.tuscany.sca.contribution;version="2.0.0", org.apache.tuscany.sca.contribution.resolver;version="2.0.0", org.apache.tuscany.sca.core;version="2.0.0", Modified: tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java?rev=767701&r1=767700&r2=767701&view=diff ============================================================================== --- tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java (original) +++ tuscany/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java Wed Apr 22 22:49:55 2009 @@ -23,6 +23,7 @@ import java.util.List; import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.assembly.impl.ExtensibleImpl; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; import org.apache.tuscany.sca.contribution.Export; @@ -35,7 +36,7 @@ * * @version $Rev$ $Date$ */ -class WorkspaceImpl implements Workspace { +class WorkspaceImpl extends ExtensibleImpl implements Workspace { private List<Contribution> contributions = new ArrayList<Contribution>(); private String location;
