You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/04/06 09:18:54 UTC

svn commit: r526081 - in /incubator/tuscany/java/sca/modules/contribution-impl/src: main/java/org/apache/tuscany/services/contribution/ main/java/org/apache/tuscany/services/contribution/processor/ test/java/org/apache/tuscany/services/contribution/ te...

Author: lresende
Date: Fri Apr  6 00:18:53 2007
New Revision: 526081

URL: http://svn.apache.org/viewvc?view=rev&rev=526081
Log:
Implementing simplifications to packageProcessor interfaces
Updating testcases

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java
      - copied, changed from r525992, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionDirectoryWatcher.java
Modified:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java (from r525992, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java?view=diff&rev=526081&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java&r1=525992&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java Fri Apr  6 00:18:53 2007
@@ -28,17 +28,17 @@
 import org.apache.tuscany.services.contribution.model.ContentType;
 import org.apache.tuscany.services.contribution.model.Contribution;
 import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
 
 /**
  * Implementation of the content describer
  *
  * @version $Rev$ $Date$
  */
-public class ContentTypeDescriberImpl implements ContentTypeDescriber {
+public class ArtifactTypeDescriberImpl implements TypeDescriber {
     private final Map<String, String> contentTypeRegistry = new HashMap<String, String>();
 
-    public ContentTypeDescriberImpl() {
+    public ArtifactTypeDescriberImpl() {
         super();
         init();
     }
@@ -71,7 +71,7 @@
      * @param defaultContentType
      * @return
      */
-    public String getContentType(URL resourceURL, String defaultContentType) {
+    public String getType(URL resourceURL, String defaultContentType) {
         URLConnection connection = null;
         String contentType = defaultContentType;
 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java Fri Apr  6 00:18:53 2007
@@ -24,10 +24,11 @@
 import java.net.URI;
 import java.net.URL;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
 import org.apache.tuscany.services.spi.contribution.ContributionException;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
@@ -46,13 +47,13 @@
     /**
      * Helper method to describe contentType for each artifact
      */
-    private ContentTypeDescriber packageTypeDescriber;
+    private TypeDescriber packageTypeDescriber;
 
-    public ContributionPackageProcessorRegistryImpl(ContentTypeDescriber contentTypeDescriber) {
-        if (contentTypeDescriber == null) {
+    public ContributionPackageProcessorRegistryImpl(TypeDescriber packageTypeDescriber) {
+        if (packageTypeDescriber == null) {
             this.packageTypeDescriber = new PackageTypeDescriberImpl();
         } else {
-            this.packageTypeDescriber = contentTypeDescriber;
+            this.packageTypeDescriber = packageTypeDescriber;
         }
     }
 
@@ -64,20 +65,17 @@
         registry.remove(contentType);
     }
 
-    public void processContent(Contribution contribution, URI source, InputStream inputStream)
-        throws ContributionException, IOException {
-
-        URL locationURL = contribution.getArtifact(source).getLocation();
-        String contentType = this.packageTypeDescriber.getContentType(locationURL, null);
+    public List<URL> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
+        String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
         if (contentType == null) {
-            throw new UnsupportedContentTypeException("Unsupported contribution package", source.toString());
+            throw new UnsupportedContentTypeException("Unsupported contribution package", packageSourceURL.toString());
         }
 
-        ContributionPackageProcessor processor = this.registry.get(contentType);
-        if (processor == null) {
-            throw new UnsupportedContentTypeException(contentType, locationURL.getPath());
+        ContributionPackageProcessor packageProcessor = this.registry.get(contentType);
+        if (packageProcessor == null) {
+            throw new UnsupportedContentTypeException(contentType, packageSourceURL.getPath());
         }
 
-        processor.processContent(contribution, source, inputStream);
+        return packageProcessor.getArtifacts(packageSourceURL, inputStream);
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java Fri Apr  6 00:18:53 2007
@@ -24,6 +24,7 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.stream.XMLInputFactory;
@@ -31,7 +32,9 @@
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.contribution.model.DeployedArtifact;
 import org.apache.tuscany.services.contribution.util.IOHelper;
+import org.apache.tuscany.services.spi.contribution.ArtifactProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.ArtifactResolverRegistry;
 import org.apache.tuscany.services.spi.contribution.ContributionException;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
@@ -50,11 +53,17 @@
     protected ContributionRepository contributionRepository;
 
     /**
-     * Registry of available processors. Usually set by injection.
+     * Registry of available package processors. 
      */
-    protected ContributionPackageProcessorRegistry processorRegistry;
+    protected ContributionPackageProcessorRegistry packageProcessorRegistry;
 
     /**
+     * Registry of available artifact processors
+     */
+    
+    protected ArtifactProcessorRegistry artifactProcessorRegistry;
+    
+    /**
      * xml factory used to create reader instance to load contribution metadata
      */
     protected XMLInputFactory xmlFactory;
@@ -73,11 +82,13 @@
     protected ArtifactResolverRegistry resolverRegistry;
 
     public ContributionServiceImpl(ContributionRepository repository,
-                                   ContributionPackageProcessorRegistry processorRegistry,
+                                   ContributionPackageProcessorRegistry packageProcessorRegistry,
+                                   ArtifactProcessorRegistry artifactProcessorRegistry,
                                    ArtifactResolverRegistry resolverRegistry) {
         super();
         this.contributionRepository = repository;
-        this.processorRegistry = processorRegistry;
+        this.packageProcessorRegistry = packageProcessorRegistry;
+        this.artifactProcessorRegistry = artifactProcessorRegistry;
         this.resolverRegistry = resolverRegistry;
         
         this.xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
@@ -148,6 +159,49 @@
 
     }
     
+    public Contribution getContribution(URI id) {
+        return this.contributionRegistry.get(id);
+    }
+
+    public void remove(URI contribution) throws ContributionException {
+        // remove from repository
+        this.contributionRegistry.remove(contribution);
+    }
+
+    public void addDeploymentComposite(URI contribution, Object composite) {
+        /*
+        CompositeComponentType model = (CompositeComponentType)composite;
+        URI compositeURI = contribution.resolve(model.getName() + ".composite");
+        DeployedArtifact artifact = new DeployedArtifact(compositeURI);
+        // FIXME: the namespace should be from the CompositeComponentType model
+        artifact.addModelObject(composite.getClass(), null, composite);
+        Contribution contributionObject = (Contribution)getContribution(contribution);
+        contributionObject.addArtifact(artifact);
+        */
+    }
+
+    /*
+    public <T> T resolve(URI contribution, Class<T> definitionType, String namespace, String name) {
+        Contribution contributionObject = getContribution(contribution);
+        return resolverRegistry.resolve(contributionObject, definitionType, namespace, name, null);
+    }
+
+    public URL resolve(URI contribution, String namespace, URI uri, URI baseURI) {
+        Contribution contributionObject = getContribution(contribution);
+        return resolverRegistry.resolve(contributionObject, namespace, uri.toString(), baseURI.toString());
+    }
+    */
+
+    public <M> M resolve(Class modelClass, Class<M> elementClass, Object modelKey, Object elementKey, Map<String, Object> attributes) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+    
+    
+    /**
+     * 
+     */
+    
     /**
      * Note: 
      * @param contributionURI ContributionID
@@ -177,62 +231,48 @@
         contribution.setURI(contributionURI);
         contribution.setLocation(locationURL);
         
+        List<URL> contributionArtifacts = null;
+        
         if (contributionStream == null) {
             contributionStream = sourceURL.openStream();
             try {
                 // process the contribution
-                this.processorRegistry.processContent(contribution, contribution.getUri(), contributionStream);
+                contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
             } finally {
                 IOHelper.closeQuietly(contributionStream);
                 contributionStream = null;
             }
-
         } else {
             // process the contribution
-            this.processorRegistry.processContent(contribution, contribution.getUri(), contributionStream);
+            contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
         }
-            
-
+        
+        //processArtifactRead(contribution, contributionArtifacts);
+        
         // store the contribution on the registry
         this.contributionRegistry.put(contribution.getUri(), contribution);
     }
 
-    public Contribution getContribution(URI id) {
-        return this.contributionRegistry.get(id);
-    }
-
-    public void remove(URI contribution) throws ContributionException {
-        // remove from repository
-        this.contributionRegistry.remove(contribution);
-    }
-
-    public void addDeploymentComposite(URI contribution, Object composite) {
-        /*
-        CompositeComponentType model = (CompositeComponentType)composite;
-        URI compositeURI = contribution.resolve(model.getName() + ".composite");
-        DeployedArtifact artifact = new DeployedArtifact(compositeURI);
-        // FIXME: the namespace should be from the CompositeComponentType model
-        artifact.addModelObject(composite.getClass(), null, composite);
-        Contribution contributionObject = (Contribution)getContribution(contribution);
-        contributionObject.addArtifact(artifact);
-        */
-    }
-
-    /*
-    public <T> T resolve(URI contribution, Class<T> definitionType, String namespace, String name) {
-        Contribution contributionObject = getContribution(contribution);
-        return resolverRegistry.resolve(contributionObject, definitionType, namespace, name, null);
-    }
-
-    public URL resolve(URI contribution, String namespace, URI uri, URI baseURI) {
-        Contribution contributionObject = getContribution(contribution);
-        return resolverRegistry.resolve(contributionObject, namespace, uri.toString(), baseURI.toString());
+    
+    private void processArtifactRead(Contribution contribution, List<URL> artifacts) throws ContributionException{
+        for(URL artifactURL : artifacts){
+            Object model = this.artifactProcessorRegistry.read(artifactURL);
+
+            if(model != null){
+                URI artifactURI = getArtifactURI(contribution.getUri(), artifactURL);
+                DeployedArtifact artifact = new DeployedArtifact(artifactURI);
+                artifact.setLocation(artifactURL);
+                contribution.addArtifact(artifact);
+            }
+        }
     }
-    */
+    
+    
+    
+    private URI getArtifactURI(URI baseURI, URL artifactURL){
+        String artifactPath = artifactURL.toExternalForm().substring(artifactURL.toExternalForm().length());
+        return baseURI.resolve(artifactPath);
 
-    public <M> M resolve(Class modelClass, Class<M> elementClass, Object modelKey, Object elementKey, Map<String, Object> attributes) {
-        // TODO Auto-generated method stub
-        return null;
     }
     
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java Fri Apr  6 00:18:53 2007
@@ -27,14 +27,14 @@
 
 import org.apache.tuscany.services.contribution.model.ContentType;
 import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
 
 /**
  * Implementation of the content describer
  *
  * @version $Rev$ $Date$
  */
-public class PackageTypeDescriberImpl implements ContentTypeDescriber {
+public class PackageTypeDescriberImpl implements TypeDescriber {
     private final Map<String, String> contentTypeRegistry = new HashMap<String, String>();
 
     public PackageTypeDescriberImpl() {
@@ -67,7 +67,7 @@
      * @param defaultContentType
      * @return
      */
-    public String getContentType(URL resourceURL, String defaultContentType) {
+    public String getType(URL resourceURL, String defaultContentType) {
         URLConnection connection = null;
         String contentType = defaultContentType;
 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java Fri Apr  6 00:18:53 2007
@@ -22,21 +22,16 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.services.contribution.ContentTypeDescriberImpl;
 import org.apache.tuscany.services.contribution.model.ContentType;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
 import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.contribution.util.IOHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
 import org.apache.tuscany.services.spi.contribution.ContributionException;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor;
+import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
 
 public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
@@ -45,8 +40,11 @@
      */
     public static final String PACKAGE_TYPE = ContentType.FOLDER;
 
-    @Override
-    public String getContentType() {
+    public FolderContributionProcessor(ContributionPackageProcessorRegistry registry){
+        super(registry);
+    }
+    
+    public String getPackageType() {
         return PACKAGE_TYPE;
     }
 
@@ -76,15 +74,18 @@
      * @return
      * @throws IOException
      */
-    protected List<URL> getArtifacts(URL rootURL) throws ContributionException,
-        IOException {
+    public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+        if (packageSourceURL == null) {
+            throw new IllegalArgumentException("Invalid null package source URL.");
+        }
+        
         List<URL> artifacts = new ArrayList<URL>();
 
         // Assume the root is a jar file
         File rootFolder;
         
         try {
-            rootFolder = new File(rootURL.toURI());
+            rootFolder = new File(packageSourceURL.toURI());
             if (rootFolder.isDirectory()) {
                 if(! rootFolder.exists()){
                     throw new InvalidFolderContributionException(rootFolder.getAbsolutePath());
@@ -94,45 +95,9 @@
             }
 
         } catch (URISyntaxException e) {
-            throw new InvalidFolderContributionURIException(rootURL.toExternalForm(), e);
+            throw new InvalidFolderContributionURIException(packageSourceURL.toExternalForm(), e);
         }
-
+        
         return artifacts;
-    }
-
-    public void processContent(Contribution contribution, URI source, InputStream inputStream)
-        throws ContributionException, IOException {
-        if (contribution == null) {
-            throw new IllegalArgumentException("Invalid null contribution.");
-        }
-
-        if (source == null) {
-            throw new IllegalArgumentException("Invalid null source uri.");
-        }
-
-        URL contributionURL = contribution.getArtifact(source).getLocation();
-
-        for (URL artifactURL : getArtifacts(contributionURL)) {
-            String artifactPath = artifactURL.toExternalForm().substring(contributionURL.toExternalForm().length());
-            URI artifactURI = contribution.getUri().resolve(artifactPath);
-            DeployedArtifact artifact = new DeployedArtifact(artifactURI);
-            artifact.setLocation(artifactURL);
-            contribution.addArtifact(artifact);
-
-            ContentTypeDescriber contentTypeDescriber = new ContentTypeDescriberImpl();
-            String contentType = contentTypeDescriber.getContentType(artifactURL, null);
-
-            
-            // just process scdl and contribution metadata for now
-            if (ContentType.COMPOSITE.equals(contentType)) {
-                InputStream is = artifactURL.openStream();
-                try {
-                    this.registry.processContent(contribution, artifactURI, is);
-                } finally {
-                    IOHelper.closeQuietly(is);
-                    is = null;
-                }
-            }
-        }
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java Fri Apr  6 00:18:53 2007
@@ -22,21 +22,16 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
-import org.apache.tuscany.services.contribution.ContentTypeDescriberImpl;
 import org.apache.tuscany.services.contribution.model.ContentType;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
-import org.apache.tuscany.services.contribution.util.IOHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
 import org.apache.tuscany.services.spi.contribution.ContributionException;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor;
+import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
 
 public class JarContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
@@ -44,23 +39,39 @@
      * Package-type that this package processor can handle
      */
     public static final String PACKAGE_TYPE = ContentType.JAR;
+        
+    public JarContributionProcessor(ContributionPackageProcessorRegistry registry){
+        super(registry);
+    }
 
-    @Override
-    public String getContentType() {
+    public String getPackageType() {
         return PACKAGE_TYPE;
     }
 
-    /**
-     * Get a list of resources inside the jar
-     * 
-     * @return
-     * @throws IOException
-     */
-    protected List<URL> getArtifacts(URL rootURL, InputStream sourceInputStream) throws IOException {
-        List<URL> artifacts = new ArrayList<URL>();
+    private URL forceJarURL(URL sourceURL) throws MalformedURLException {
+        if (sourceURL.toString().startsWith("jar:")) {
+            return sourceURL;
+        } else {
+            return new URL("jar:" + sourceURL.toExternalForm() + "!/");
+        }
+
+    }
+    
+    public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+        if (packageSourceURL == null) {
+            throw new IllegalArgumentException("Invalid null package source URL.");
+        }
+
+        if (inputStream == null) {
+            throw new IllegalArgumentException("Invalid null source inputstream.");
+        }
 
+        List<URL> artifacts = new ArrayList<URL>();
+        
+        packageSourceURL = forceJarURL(packageSourceURL);
+        
         // Assume the root is a jar file
-        JarInputStream jar = new JarInputStream(sourceInputStream);
+        JarInputStream jar = new JarInputStream(inputStream);
         try {
             while (true) {
                 JarEntry entry = jar.getNextJarEntry();
@@ -74,66 +85,12 @@
 
                 // FIXME: Maybe we should externalize the filter as a property
                 if (!entry.getName().startsWith(".")) {
-                    artifacts.add(new URL(rootURL, entry.getName()));
+                    artifacts.add(new URL(packageSourceURL, entry.getName()));
                 }
             }
         } finally {
             jar.close();
         }
         return artifacts;
-    }
-
-    private URL forceJarURL(URL sourceURL) throws MalformedURLException {
-        if (sourceURL.toString().startsWith("jar:")) {
-            return sourceURL;
-        } else {
-            return new URL("jar:" + sourceURL.toExternalForm() + "!/");
-        }
-
-    }
-
-    public void processContent(Contribution contribution, URI source, InputStream inputStream)
-        throws ContributionException, IOException {
-        if (contribution == null) {
-            throw new IllegalArgumentException("Invalid null contribution.");
-        }
-
-        if (source == null) {
-            throw new IllegalArgumentException("Invalid null source uri.");
-        }
-
-        if (inputStream == null) {
-            throw new IllegalArgumentException("Invalid null source inputstream.");
-        }
-
-        URL sourceURL = contribution.getArtifact(source).getLocation();
-
-        sourceURL = forceJarURL(sourceURL);
-
-        for (URL artifactURL : getArtifacts(sourceURL, inputStream)) {
-            URI artifactURI;
-
-            String artifactPath = artifactURL.toExternalForm().substring(sourceURL.toExternalForm().length());
-            artifactURI = contribution.getUri().resolve(artifactPath);
-            DeployedArtifact artifact = new DeployedArtifact(artifactURI);
-            artifact.setLocation(artifactURL);
-            contribution.addArtifact(artifact);
-
-
-            ContentTypeDescriber contentTypeDescriber = new ContentTypeDescriberImpl();
-            String contentType = contentTypeDescriber.getContentType(artifactURL, null);
-
-            // just process scdl for now
-            if (ContentType.COMPOSITE.equals(contentType)) {
-                InputStream is = IOHelper.getInputStream(artifactURL);
-                try {
-                    this.registry.processContent(contribution, artifactURI, is);
-                } finally {
-                    IOHelper.closeQuietly(is);
-                    is = null;
-                }
-            }
-        }
-
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java Fri Apr  6 00:18:53 2007
@@ -25,28 +25,28 @@
 import org.apache.tuscany.services.contribution.model.ContentType;
 
 public class ContentTypeDescriberImplTestCase extends TestCase {
-    private ContentTypeDescriberImpl contentTypeDescriber;
+    private ArtifactTypeDescriberImpl contentTypeDescriber;
 
     public void testResolveContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.scdl");
-        assertEquals(ContentType.COMPOSITE, contentTypeDescriber.getContentType(artifactURL, null));
+        assertEquals(ContentType.COMPOSITE, contentTypeDescriber.getType(artifactURL, null));
     }
 
     
     public void testResolveUnknownContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
-        assertNull(contentTypeDescriber.getContentType(artifactURL, null));
+        assertNull(contentTypeDescriber.getType(artifactURL, null));
     }
     
     public void testDefaultContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
         assertEquals("application/vnd.tuscany.ext", 
-                contentTypeDescriber.getContentType(artifactURL, "application/vnd.tuscany.ext"));        
+                contentTypeDescriber.getType(artifactURL, "application/vnd.tuscany.ext"));        
     }
 
     protected void setUp() throws Exception {
         super.setUp();
-        contentTypeDescriber = new ContentTypeDescriberImpl();
+        contentTypeDescriber = new ArtifactTypeDescriberImpl();
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java Fri Apr  6 00:18:53 2007
@@ -19,49 +19,54 @@
 
 package org.apache.tuscany.services.contribution;
 
+import java.net.URI;
+import java.net.URL;
+
 import junit.framework.TestCase;
 
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.contribution.processor.FolderContributionProcessor;
+import org.apache.tuscany.services.contribution.processor.JarContributionProcessor;
+import org.apache.tuscany.services.spi.contribution.ArtifactProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.apache.tuscany.services.spi.contribution.ContributionRepository;
 import org.apache.tuscany.services.spi.contribution.ContributionService;
+import org.apache.tuscany.services.spi.contribution.DefaultURLArtifactProcessorRegistry;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
 
 /**
  * This is more intended to be a integration test then a unit test. *
  */
 public class ContributionServiceImplTestCase extends TestCase {
-    private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
-    private ContributionRepository repository; 
-    private ContentTypeDescriber contentTypeDescriber;
-    private ContributionPackageProcessorRegistry registry;
+    private static final String CONTRIBUTION_URI = "sca://contributions/002/";
+    private static final String CONTRIBUTION = "/repository/sample-calculator.jar";
+    
+    private TypeDescriber contentTypeDescriber;
+    private ContributionPackageProcessorRegistry packageProcessorRegistry;
+    private ArtifactProcessorRegistry artifactProcessorRegistry;
     private ContributionService contributionService;
     
     protected void setUp() throws Exception {
         super.setUp();
         
-//        this.repository = new ContributionRepositoryImpl("target/repository");
-//        
-//        this.contentTypeDescriber = new ContentTypeDescriberImpl();
-//        
-//        this.registry = new ContributionProcessorRegistryImpl(contentTypeDescriber);
-//        
-//        JarContributionProcessor jarProcessor = new JarContributionProcessor();
-//        jarProcessor.setContributionProcessorRegistry(this.registry);
-//        this.registry.register(JarContributionProcessor.CONTENT_TYPE, jarProcessor);
-//        
-//        JavaContributionProcessor javaProcessor = new JavaContributionProcessor(null);
-//        javaProcessor.setContributionProcessorRegistry(this.registry);
-//        this.registry.register(JavaContributionProcessor.CONTENT_TYPE, javaProcessor);
-//        
-//        
-//        contributionService = new ContributionServiceImpl(repository, registry);
+        //boostrap contribution service
+        this.contentTypeDescriber = new ArtifactTypeDescriberImpl();
+        
+ 
+        this.packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(contentTypeDescriber);
+        new JarContributionProcessor(this.packageProcessorRegistry);
+        new FolderContributionProcessor(this.packageProcessorRegistry);
+        
+        this.artifactProcessorRegistry = new DefaultURLArtifactProcessorRegistry();
+        //new CompositeDocumentProcessor(this.artifactProcessorRegistry);
+        
+        this.contributionService = new ContributionServiceImpl(null, this.packageProcessorRegistry, null, null);
     }
 
     public void testContributeURL() throws Exception {
-//        URL contribution = getClass().getResource(JAR_CONTRIBUTION);
-//
-//        URI contributionURI = contributionService.contribute(contribution);
-//        assertNotNull(contributionURI);
+        URI contributionURI = URI.create(CONTRIBUTION_URI);
+        URL contributionURL = getClass().getResource(CONTRIBUTION);
+
+        this.contributionService.contribute(contributionURI, contributionURL, false);
+        assertNotNull(contributionURI);
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java Fri Apr  6 00:18:53 2007
@@ -29,18 +29,18 @@
 
     public void testResolvePackageType() throws Exception {
         URL artifactURL = getClass().getResource("/deployables/sample-calculator.jar");
-        assertEquals(ContentType.JAR, this.packageTypeDescriber.getContentType(artifactURL, null));
+        assertEquals(ContentType.JAR, this.packageTypeDescriber.getType(artifactURL, null));
     }
     
     public void testResolveUnknownPackageType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
-        assertNull(this.packageTypeDescriber.getContentType(artifactURL, null));
+        assertNull(this.packageTypeDescriber.getType(artifactURL, null));
     }
     
     public void testDefaultPackageType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
         assertEquals("application/vnd.tuscany.ext", 
-                packageTypeDescriber.getContentType(artifactURL, "application/vnd.tuscany.ext"));        
+                packageTypeDescriber.getType(artifactURL, "application/vnd.tuscany.ext"));        
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java Fri Apr  6 00:18:53 2007
@@ -19,40 +19,30 @@
 package org.apache.tuscany.services.contribution.processor;
 
 import java.io.File;
-import java.io.InputStream;
-import java.net.URI;
+import java.net.URL;
+import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.contribution.ContributionPackageProcessorRegistryImpl;
+import org.apache.tuscany.services.contribution.PackageTypeDescriberImpl;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.easymock.EasyMock;
 
 public class FolderContributionPackageProcessorTestCase extends TestCase {
-    private static final String CONTRIBUTION_URI = "sca://contributions/002/";
-    private static final String DIRECTORY_CONTRIBUTION = "../../../../core-samples/common/calculator";
+    private static final String FOLDER_CONTRIBUTION = "../../../../core-samples/common/calculator";
     
     private File contributionRoot;
-    private FolderContributionProcessor folderProcessor = new FolderContributionProcessor();
-    
 
     protected void setUp() throws Exception {
         super.setUp();
-        this.contributionRoot = new File(DIRECTORY_CONTRIBUTION);
+        this.contributionRoot = new File(FOLDER_CONTRIBUTION);
     }
     
-    public final void testProcessJarArtifacts() throws Exception {
-        ContributionPackageProcessorRegistry mockRegistry = EasyMock.createMock(ContributionPackageProcessorRegistry.class);
-        mockRegistry.register(FolderContributionProcessor.PACKAGE_TYPE, folderProcessor);
-        mockRegistry.processContent((Contribution)EasyMock.anyObject(), (URI) EasyMock.anyObject(), (InputStream) EasyMock.anyObject() );
-        EasyMock.expectLastCall().anyTimes();
-        EasyMock.replay(mockRegistry);
-        folderProcessor.setContributionProcessorRegistry(mockRegistry);
-        folderProcessor.start();
-        EasyMock.verify(mockRegistry);
-        
-        Contribution contribution = new Contribution(URI.create(CONTRIBUTION_URI));
-        contribution.setLocation(this.contributionRoot.toURL());
-        folderProcessor.processContent(contribution, contribution.getUri(), null);
+    public final void testProcessPackageArtifacts() throws Exception {
+        ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl()); 
+        FolderContributionProcessor folderProcessor = new FolderContributionProcessor(packageProcessorRegistry);
+
+        List<URL> artifacts = folderProcessor.getArtifacts(contributionRoot.toURL(), null);
+        assertNotNull(artifacts);
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java Fri Apr  6 00:18:53 2007
@@ -19,58 +19,37 @@
 package org.apache.tuscany.services.contribution.processor;
 
 import java.io.InputStream;
-import java.net.URI;
 import java.net.URL;
+import java.util.List;
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
+import org.apache.tuscany.services.contribution.ContributionPackageProcessorRegistryImpl;
+import org.apache.tuscany.services.contribution.PackageTypeDescriberImpl;
 import org.apache.tuscany.services.contribution.util.IOHelper;
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.easymock.EasyMock;
 
 public class JarContributionPackageProcessorTestCase extends TestCase {
-    private static final String CONTRIBUTION_URI = "sca://contributions/001/";
     private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
     
-    private JarContributionProcessor jarProcessor;
-    
     protected void setUp() throws Exception {
         super.setUp();
-        
-        this.jarProcessor = new JarContributionProcessor();
     }
     
-    public final void testProcessJarArtifacts() throws Exception {
-        ContributionPackageProcessorRegistry mockRegistry = EasyMock.createMock(ContributionPackageProcessorRegistry.class);
-        mockRegistry.register(JarContributionProcessor.PACKAGE_TYPE, jarProcessor);
-        mockRegistry.processContent((Contribution)EasyMock.anyObject(), (URI) EasyMock.anyObject(), (InputStream) EasyMock.anyObject() );
-        EasyMock.expectLastCall().anyTimes();
-        EasyMock.replay(mockRegistry);
-        jarProcessor.setContributionProcessorRegistry(mockRegistry);
-        jarProcessor.start();
-        EasyMock.verify(mockRegistry);
-
+    public final void testProcessPackageArtifacts() throws Exception {
+        ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl()); 
+        JarContributionProcessor jarProcessor = new JarContributionProcessor(packageProcessorRegistry);
 
-        //start processing the jar
         URL jarURL = getClass().getResource(JAR_CONTRIBUTION);
-        URI contributionURI = URI.create(CONTRIBUTION_URI);
-        URI artifactURI = contributionURI.resolve(JAR_CONTRIBUTION);
-       
-        Contribution contribution = new Contribution(contributionURI);
-        contribution.setLocation(jarURL);
-        
-        DeployedArtifact artifact = new DeployedArtifact(artifactURI);
-        artifact.setLocation(jarURL);
-        contribution.addArtifact(artifact);
-        
         InputStream jarStream = jarURL.openStream();
-        
+        List<URL> artifacts = null;
         try{
-            jarProcessor.processContent(contribution, contributionURI.resolve(JAR_CONTRIBUTION), jarStream);
+            artifacts = jarProcessor.getArtifacts(jarURL, jarStream);
         }finally{
             IOHelper.closeQuietly(jarStream);
         }
+        
+        assertNotNull(artifacts);
+    }
+    
     }
-}



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