You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/03/01 17:23:11 UTC

svn commit: r632616 - in /incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl: ContributionContentProcessor.java ContributionInfoProcessor.java

Author: jsdelfino
Date: Sat Mar  1 08:23:11 2008
New Revision: 632616

URL: http://svn.apache.org/viewvc?rev=632616&view=rev
Log:
Added support for resolution to ContributionInfoProcessor. Added a ContributionContentProcessor to read the contents of a contribution.

Added:
    incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java   (with props)
Modified:
    incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java

Added: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java?rev=632616&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java Sat Mar  1 08:23:11 2008
@@ -0,0 +1,131 @@
+/*
+ * 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.workspace.processor.impl;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.scanner.ContributionScanner;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.workspace.scanner.impl.DirectoryContributionScanner;
+import org.apache.tuscany.sca.workspace.scanner.impl.JarContributionScanner;
+
+/**
+ * URLArtifactProcessor that handles contribution files and the artifacts they contain
+ * and returns a contribution model.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ContributionContentProcessor implements URLArtifactProcessor<Contribution>{
+    private ContributionFactory contributionFactory;
+    private ModelResolverExtensionPoint modelResolvers;
+    private ModelFactoryExtensionPoint modelFactories;
+    private URLArtifactProcessor<Object> artifactProcessor;
+
+    public ContributionContentProcessor(ModelFactoryExtensionPoint modelFactories, ModelResolverExtensionPoint modelResolvers, URLArtifactProcessor<Object> artifactProcessor) {
+        this.modelFactories = modelFactories;
+        this.modelResolvers = modelResolvers;
+        this.artifactProcessor = artifactProcessor;
+        this.contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+    }
+    
+    public String getArtifactType() {
+        return null;
+    }
+    
+    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());
+        ModelResolver modelResolver = new ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
+        contribution.setModelResolver(modelResolver);
+        contribution.setUnresolved(true);
+
+        // Create a contribution scanner
+        ContributionScanner scanner;
+        if ("file".equals(contributionURL.getProtocol()) && new File(contributionURL.getFile()).isDirectory()) {
+            scanner = new DirectoryContributionScanner();
+        } else {
+            scanner = new JarContributionScanner();
+        }
+        
+        // Scan the contribution and list the artifacts contained in it
+        List<Artifact> artifacts = contribution.getArtifacts();
+        for (String artifactURI: scanner.getArtifacts(contributionURL)) {
+            URL artifactURL = scanner.getArtifactURL(contributionURL, artifactURI);
+
+            // Add the deployed artifact model to the contribution
+            Artifact artifact = this.contributionFactory.createArtifact();
+            artifact.setURI(artifactURI);
+            artifact.setLocation(artifactURL.toString());
+            artifacts.add(artifact);
+            
+            // Read each artifact
+            Object model = artifactProcessor.read(contributionURL, URI.create(artifactURI), artifactURL);
+            if (model != null) {
+                artifact.setModel(model);
+
+                // Add the loaded model to the model resolver
+                modelResolver.addModel(model);
+
+                // Merge contribution metadata into the contribution model
+                if (model instanceof Contribution) {
+                    Contribution c = (Contribution)model;
+                    contribution.getImports().addAll(c.getImports());
+                    contribution.getExports().addAll(c.getExports());
+                    contribution.getDeployables().addAll(c.getDeployables());
+                }
+            }
+        }
+        
+        return contribution;
+    }
+    
+    public void resolve(Contribution contribution, ModelResolver resolver) throws ContributionResolveException {
+        
+        // Resolve all artifact models
+        ModelResolver contributionResolver = contribution.getModelResolver();
+        for (Artifact artifact : contribution.getArtifacts()) {
+            Object model = artifact.getModel();
+            if (model != null) {
+                artifactProcessor.resolve(model, contributionResolver);
+            }
+        }
+        
+        // Resolve the contribution model itself
+        artifactProcessor.resolve(contribution, contributionResolver);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionContentProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java?rev=632616&r1=632615&r2=632616&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/workspace-impl/src/main/java/org/apache/tuscany/sca/workspace/processor/impl/ContributionInfoProcessor.java Sat Mar  1 08:23:11 2008
@@ -24,8 +24,11 @@
 
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.scanner.ContributionScanner;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -39,12 +42,16 @@
  * @version $Rev$ $Date$
  */
 public class ContributionInfoProcessor implements URLArtifactProcessor<Contribution>{
-    private URLArtifactProcessor<Object> artifactProcessor;
     private ContributionFactory contributionFactory;
+    private ModelResolverExtensionPoint modelResolvers;
+    private ModelFactoryExtensionPoint modelFactories;
+    private URLArtifactProcessor<Object> artifactProcessor;
 
-    public ContributionInfoProcessor(ContributionFactory contributionFactory, URLArtifactProcessor<Object> artifactProcessor) {
-        this.contributionFactory = contributionFactory;
-        this.artifactProcessor = artifactProcessor; 
+    public ContributionInfoProcessor(ModelFactoryExtensionPoint modelFactories, ModelResolverExtensionPoint modelResolvers, URLArtifactProcessor<Object> artifactProcessor) {
+        this.modelFactories = modelFactories;
+        this.modelResolvers = modelResolvers;
+        this.artifactProcessor = artifactProcessor;
+        this.contributionFactory = modelFactories.getFactory(ContributionFactory.class);
     }
     
     public String getArtifactType() {
@@ -60,6 +67,8 @@
         // Create contribution model
         Contribution contribution = contributionFactory.createContribution();
         contribution.setURI(contributionURI.toString());
+        ModelResolver modelResolver = new ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
+        contribution.setModelResolver(modelResolver);
         contribution.setUnresolved(true);
 
         // Create a contribution scanner
@@ -87,7 +96,7 @@
     }
     
     public void resolve(Contribution contribution, ModelResolver resolver) throws ContributionResolveException {
-        artifactProcessor.resolve(contribution, resolver);
+        artifactProcessor.resolve(contribution, contribution.getModelResolver());
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org