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

svn commit: r526289 - 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/pro...

Author: rfeng
Date: Fri Apr  6 14:23:50 2007
New Revision: 526289

URL: http://svn.apache.org/viewvc?view=rev&rev=526289
Log:
Update ContributionPackageProcessor to return List<URI>

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/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/processor/FolderContributionPackageProcessorTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java

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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -21,17 +21,17 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 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.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;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
 import org.apache.tuscany.services.spi.contribution.UnsupportedContentTypeException;
 
 /**
@@ -65,7 +65,7 @@
         registry.remove(contentType);
     }
 
-    public List<URL> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
+    public List<URI> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
         String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
         if (contentType == null) {
             throw new UnsupportedContentTypeException("Unsupported contribution package", packageSourceURL.toString());
@@ -78,4 +78,13 @@
 
         return packageProcessor.getArtifacts(packageSourceURL, inputStream);
     }
+    
+    /**
+     * @see org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor#getArtifactURL(java.net.URL, java.net.URI)
+     */
+    public URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException {
+        String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
+        ContributionPackageProcessor packageProcessor = this.registry.get(contentType);
+        return packageProcessor.getArtifactURL(packageSourceURL, artifact);
+    }    
 }

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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -53,16 +54,16 @@
     protected ContributionRepository contributionRepository;
 
     /**
-     * Registry of available package processors. 
+     * Registry of available package processors.
      */
     protected ContributionPackageProcessorRegistry packageProcessorRegistry;
 
     /**
      * Registry of available artifact processors
      */
-    
+
     protected ArtifactProcessorRegistry artifactProcessorRegistry;
-    
+
     /**
      * xml factory used to create reader instance to load contribution metadata
      */
@@ -72,7 +73,6 @@
      */
     protected ContributionMetadataLoaderImpl contributionLoader;
 
-
     /**
      * Contribution registry This is a registry of processed Contributios index
      * by URI
@@ -90,7 +90,7 @@
         this.packageProcessorRegistry = packageProcessorRegistry;
         this.artifactProcessorRegistry = artifactProcessorRegistry;
         this.resolverRegistry = resolverRegistry;
-        
+
         this.xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
         this.contributionLoader = new ContributionMetadataLoaderImpl();
     }
@@ -127,8 +127,8 @@
             if (contributionMetadataURL == null && generatedContributionMetadataURL == null) {
                 contributionMetadata = new Contribution();
             } else {
-                URL metadataURL =
-                    contributionMetadataURL != null ? contributionMetadataURL : generatedContributionMetadataURL;
+                URL metadataURL = contributionMetadataURL != null ? contributionMetadataURL
+                                                                 : generatedContributionMetadataURL;
 
                 try {
                     metadataStream = metadataURL.openStream();
@@ -136,14 +136,12 @@
                     contributionMetadata = this.contributionLoader.load(xmlReader);
 
                 } catch (IOException ioe) {
-                    throw new 
-                        InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
+                    throw new InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
                 } catch (XMLStreamException xmle) {
-                    throw new 
-                        InvalidContributionMetadataException(xmle.getMessage(), metadataURL.toExternalForm(), xmle);
+                    throw new InvalidContributionMetadataException(xmle.getMessage(), metadataURL.toExternalForm(),
+                                                                   xmle);
                 } catch (ContributionMetadataLoaderException le) {
-                    throw new 
-                        InvalidContributionMetadataException(le.getMessage(), metadataURL.toExternalForm(), le);
+                    throw new InvalidContributionMetadataException(le.getMessage(), metadataURL.toExternalForm(), le);
                 }
             }
         } finally {
@@ -158,7 +156,7 @@
         return contributionMetadata;
 
     }
-    
+
     public Contribution getContribution(URI id) {
         return this.contributionRegistry.get(id);
     }
@@ -170,49 +168,57 @@
 
     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);
-        */
+         * 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 <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) {
+    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: 
+     * Note:
+     * 
      * @param contributionURI ContributionID
      * @param sourceURL contribution location
      * @param contributionStream contribution content
-     * @param storeInRepository flag if we store the contribution into the repository or not
+     * @param storeInRepository flag if we store the contribution into the
+     *            repository or not
      * @throws IOException
      * @throws DeploymentException
      */
-    private void addContribution(URI contributionURI, URL sourceURL, InputStream contributionStream, boolean storeInRepository)
-        throws IOException, ContributionException {
+    private void addContribution(URI contributionURI,
+                                 URL sourceURL,
+                                 InputStream contributionStream,
+                                 boolean storeInRepository) throws IOException, ContributionException {
         if (contributionStream == null && sourceURL == null) {
             throw new IllegalArgumentException("The content of the contribution is null");
         }
@@ -230,9 +236,9 @@
         Contribution contribution = initializeContributionMetadata(locationURL);
         contribution.setURI(contributionURI);
         contribution.setLocation(locationURL);
-        
-        List<URL> contributionArtifacts = null;
-        
+
+        List<URI> contributionArtifacts = null;
+
         if (contributionStream == null) {
             contributionStream = sourceURL.openStream();
             try {
@@ -246,19 +252,20 @@
             // process the contribution
             contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
         }
-        
-        //processArtifactRead(contribution, contributionArtifacts);
-        
+
+        processArtifactRead(contribution, contributionArtifacts);
+
         // store the contribution on the registry
         this.contributionRegistry.put(contribution.getUri(), contribution);
     }
 
-    
-    private void processArtifactRead(Contribution contribution, List<URL> artifacts) throws ContributionException{
-        for(URL artifactURL : artifacts){
+    private void processArtifactRead(Contribution contribution, List<URI> artifacts) throws ContributionException,
+        MalformedURLException {
+        for (URI a : artifacts) {
+            URL artifactURL = packageProcessorRegistry.getArtifactURL(contribution.getLocation(), a);
             Object model = this.artifactProcessorRegistry.read(artifactURL);
 
-            if(model != null){
+            if (model != null) {
                 URI artifactURI = getArtifactURI(contribution.getUri(), artifactURL);
                 DeployedArtifact artifact = new DeployedArtifact(artifactURI);
                 artifact.setLocation(artifactURL);
@@ -266,13 +273,11 @@
             }
         }
     }
-    
-    
-    
-    private URI getArtifactURI(URI baseURI, URL artifactURL){
+
+    private URI getArtifactURI(URI baseURI, URL artifactURL) {
         String artifactPath = artifactURL.toExternalForm().substring(artifactURL.toExternalForm().length());
         return baseURI.resolve(artifactPath);
 
     }
-    
-}
\ No newline at end of file
+
+}

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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -22,6 +22,7 @@
 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;
@@ -34,16 +35,17 @@
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
 
-public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
+public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements
+    ContributionPackageProcessor {
     /**
      * Package-type that this package processor can handle
      */
     public static final String PACKAGE_TYPE = ContentType.FOLDER;
 
-    public FolderContributionProcessor(ContributionPackageProcessorRegistry registry){
+    public FolderContributionProcessor(ContributionPackageProcessorRegistry registry) {
         super(registry);
     }
-    
+
     public String getPackageType() {
         return PACKAGE_TYPE;
     }
@@ -52,18 +54,18 @@
      * Recursively traverse a root directory
      * 
      * @param fileList
-     * @param root
+     * @param file
      * @throws IOException
      */
-    private void traverse(List<URL> fileList, File root) throws IOException {
-        if (root.isFile()) {
-            fileList.add(root.toURL());
-        } else if (root.isDirectory()) {
+    private void traverse(List<URI> fileList, File file, File root) throws IOException {
+        if (file.isFile()) {
+            fileList.add(root.toURI().relativize(file.toURI()));
+        } else if (file.isDirectory()) {
             // FIXME: Maybe we should externalize it as a property
             // Regular expression to exclude .xxx files
-            File[] files = root.listFiles(FileHelper.getFileFilter("[^\u002e].*", true));
+            File[] files = file.listFiles(FileHelper.getFileFilter("[^\u002e].*", true));
             for (int i = 0; i < files.length; i++) {
-                traverse(fileList, files[i]);
+                traverse(fileList, files[i], root);
             }
         }
     }
@@ -74,30 +76,31 @@
      * @return
      * @throws IOException
      */
-    public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+    public List<URI> 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>();
+
+        List<URI> artifacts = new ArrayList<URI>();
 
         // Assume the root is a jar file
         File rootFolder;
-        
+
         try {
             rootFolder = new File(packageSourceURL.toURI());
             if (rootFolder.isDirectory()) {
-                if(! rootFolder.exists()){
+                if (!rootFolder.exists()) {
                     throw new InvalidFolderContributionException(rootFolder.getAbsolutePath());
                 }
 
-                this.traverse(artifacts, rootFolder);
+                this.traverse(artifacts, rootFolder, rootFolder);
             }
 
         } catch (URISyntaxException e) {
             throw new InvalidFolderContributionURIException(packageSourceURL.toExternalForm(), e);
         }
-        
+
         return artifacts;
     }
-}
\ No newline at end of file
+}

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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -22,6 +22,7 @@
 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;
@@ -34,13 +35,14 @@
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
 import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
 
-public class JarContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
+public class JarContributionProcessor extends ContributionPackageProcessorExtension implements
+    ContributionPackageProcessor {
     /**
      * Package-type that this package processor can handle
      */
     public static final String PACKAGE_TYPE = ContentType.JAR;
-        
-    public JarContributionProcessor(ContributionPackageProcessorRegistry registry){
+
+    public JarContributionProcessor(ContributionPackageProcessorRegistry registry) {
         super(registry);
     }
 
@@ -48,16 +50,17 @@
         return PACKAGE_TYPE;
     }
 
-    private URL forceJarURL(URL sourceURL) throws MalformedURLException {
+    public URL getArtifactURL(URL sourceURL, URI artifact) throws MalformedURLException {
         if (sourceURL.toString().startsWith("jar:")) {
-            return sourceURL;
+            return new URL(sourceURL, artifact.toString());
         } else {
-            return new URL("jar:" + sourceURL.toExternalForm() + "!/");
+            return new URL("jar:" + sourceURL.toExternalForm() + "!/" + artifact);
         }
 
     }
-    
-    public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+
+    public List<URI> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException,
+        IOException {
         if (packageSourceURL == null) {
             throw new IllegalArgumentException("Invalid null package source URL.");
         }
@@ -66,10 +69,8 @@
             throw new IllegalArgumentException("Invalid null source inputstream.");
         }
 
-        List<URL> artifacts = new ArrayList<URL>();
-        
-        packageSourceURL = forceJarURL(packageSourceURL);
-        
+        List<URI> artifacts = new ArrayList<URI>();
+
         // Assume the root is a jar file
         JarInputStream jar = new JarInputStream(inputStream);
         try {
@@ -85,7 +86,7 @@
 
                 // FIXME: Maybe we should externalize the filter as a property
                 if (!entry.getName().startsWith(".")) {
-                    artifacts.add(new URL(packageSourceURL, entry.getName()));
+                    artifacts.add(URI.create(entry.getName()));
                 }
             }
         } finally {

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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -19,7 +19,7 @@
 package org.apache.tuscany.services.contribution.processor;
 
 import java.io.File;
-import java.net.URL;
+import java.net.URI;
 import java.util.List;
 
 import junit.framework.TestCase;
@@ -29,7 +29,7 @@
 import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
 
 public class FolderContributionPackageProcessorTestCase extends TestCase {
-    private static final String FOLDER_CONTRIBUTION = "../../../../core-samples/common/calculator";
+    private static final String FOLDER_CONTRIBUTION = ".";
     
     private File contributionRoot;
 
@@ -42,7 +42,7 @@
         ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl()); 
         FolderContributionProcessor folderProcessor = new FolderContributionProcessor(packageProcessorRegistry);
 
-        List<URL> artifacts = folderProcessor.getArtifacts(contributionRoot.toURL(), null);
+        List<URI> 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=526289&r1=526288&r2=526289
==============================================================================
--- 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 14:23:50 2007
@@ -19,6 +19,7 @@
 package org.apache.tuscany.services.contribution.processor;
 
 import java.io.InputStream;
+import java.net.URI;
 import java.net.URL;
 import java.util.List;
 
@@ -42,7 +43,7 @@
 
         URL jarURL = getClass().getResource(JAR_CONTRIBUTION);
         InputStream jarStream = jarURL.openStream();
-        List<URL> artifacts = null;
+        List<URI> artifacts = null;
         try{
             artifacts = jarProcessor.getArtifacts(jarURL, jarStream);
         }finally{



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