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 2007/05/06 20:17:24 UTC

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

Author: jsdelfino
Date: Sun May  6 11:17:22 2007
New Revision: 535641

URL: http://svn.apache.org/viewvc?view=rev&rev=535641
Log:
SPI cleanup, clearly separate package processor extension point from the package processors itself. Simplified the PackageProcessorExtensionPoint interface by leveraging the getPackageType method implemented by the PackageProcessors. Removed AbstractContributionPackageProcessor as it was introducing an unnecessary and unused dependency from the package processors on PackageProcessorExtensionPoint.

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/AbstractContributionPackageProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/PackageTypeDescriberImpl.java
Modified:
    incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessorExtensionPoint.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/FolderContributionProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/JarContributionProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/FolderContributionPackageProcessorTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/JarContributionPackageProcessorTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/PackageTypeDescriberImplTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessorExtensionPoint.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/MiniRuntimeImpl.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java

Modified: incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java Sun May  6 11:17:22 2007
@@ -27,6 +27,7 @@
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
 
 import junit.framework.TestCase;
 
@@ -42,11 +43,15 @@
 import org.apache.tuscany.contribution.Contribution;
 import org.apache.tuscany.contribution.DeployedArtifact;
 import org.apache.tuscany.contribution.impl.DefaultContributionFactory;
+import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessor;
 import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.PackageProcessor;
 import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessor;
 import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.contribution.processor.impl.JarContributionProcessor;
@@ -55,7 +60,7 @@
 import org.apache.tuscany.contribution.service.ContributionService;
 import org.apache.tuscany.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.contribution.service.impl.ContributionServiceImpl;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
+import org.apache.tuscany.contribution.service.impl.DefaultPackageTypeDescriber;
 import org.apache.tuscany.contribution.service.util.FileHelper;
 import org.apache.tuscany.contribution.service.util.IOHelper;
 import org.apache.tuscany.core.DefaultExtensionPointRegistry;
@@ -89,36 +94,39 @@
         // Add artifact processor extension points
         DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();
         extensionRegistry.addExtensionPoint(StAXArtifactProcessorExtensionPoint.class, staxProcessors);
+        DefaultStAXArtifactProcessor staxProcessor = new DefaultStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
         DefaultURLArtifactProcessorExtensionPoint documentProcessors = new DefaultURLArtifactProcessorExtensionPoint();
         extensionRegistry.addExtensionPoint(URLArtifactProcessorExtensionPoint.class, documentProcessors);
+        DefaultURLArtifactProcessor documentProcessor = new DefaultURLArtifactProcessor(documentProcessors);
 
         // Register base artifact processors
         staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper,
-                                                                   staxProcessors));
-        staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessors));
+                                                                   staxProcessor));
+        staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
         staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory,
-                                                                          staxProcessors));
+                                                                          staxProcessor));
 
         XMLInputFactory inputFactory = XMLInputFactory.newInstance();
-        documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessors, inputFactory));
-        documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessors, inputFactory));
-        documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessors, inputFactory));
+        documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
+        documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
+        documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
 
         // Create package processor extension point
-        PackageTypeDescriberImpl describer = new PackageTypeDescriberImpl();
-        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint(describer);
+        DefaultPackageTypeDescriber describer = new DefaultPackageTypeDescriber();
+        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint();
+        PackageProcessor packageProcessor = new DefaultPackageProcessor(packageProcessors, describer);
         extensionRegistry.addExtensionPoint(PackageProcessorExtensionPoint.class, packageProcessors);
 
         // Register base package processors
-        new JarContributionProcessor(packageProcessors);
-        new FolderContributionProcessor(packageProcessors);
+        packageProcessors.addPackageProcessor(new JarContributionProcessor());
+        packageProcessors.addPackageProcessor(new FolderContributionProcessor());
 
         // Create a repository
         ContributionRepository repository = new ContributionRepositoryImpl("target");
 
         // Create an artifact resolver and contribution service
         DefaultArtifactResolver artifactResolver = new DefaultArtifactResolver(getClass().getClassLoader());
-        this.contributionService = new ContributionServiceImpl(repository, packageProcessors, documentProcessors,
+        this.contributionService = new ContributionServiceImpl(repository, packageProcessor, documentProcessor,
                                                                artifactResolver, assemblyFactory,
                                                                new DefaultContributionFactory(), XMLInputFactory
                                                                    .newInstance());

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessor.java?view=auto&rev=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessor.java Sun May  6 11:17:22 2007
@@ -0,0 +1,78 @@
+/*
+ * 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.contribution.processor.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.tuscany.contribution.processor.PackageProcessor;
+import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
+import org.apache.tuscany.contribution.service.ContributionException;
+import org.apache.tuscany.contribution.service.TypeDescriber;
+import org.apache.tuscany.contribution.service.UnsupportedContentTypeException;
+
+/**
+ * Default implementation of PackageProcessor.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class DefaultPackageProcessor implements PackageProcessor {
+
+    private PackageProcessorExtensionPoint processors;
+
+    /**
+     * Helper method to describe contentType for each artifact
+     */
+    private TypeDescriber packageTypeDescriber;
+
+    public DefaultPackageProcessor(PackageProcessorExtensionPoint processors, TypeDescriber packageTypeDescriber) {
+        this.processors = processors; 
+        this.packageTypeDescriber = packageTypeDescriber;
+    }
+
+    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());
+        }
+
+        PackageProcessor packageProcessor = this.processors.getPackageProcessor(contentType);
+        if (packageProcessor == null) {
+            throw new UnsupportedContentTypeException(contentType, packageSourceURL.getPath());
+        }
+
+        return packageProcessor.getArtifacts(packageSourceURL, inputStream);
+    }
+
+    public URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException {
+        String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
+        PackageProcessor packageProcessor = this.processors.getPackageProcessor(contentType);
+        return packageProcessor.getArtifactURL(packageSourceURL, artifact);
+    }
+    
+    public String getPackageType() {
+        return null;
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessorExtensionPoint.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessorExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/DefaultPackageProcessorExtensionPoint.java Sun May  6 11:17:22 2007
@@ -19,21 +19,11 @@
 
 package org.apache.tuscany.contribution.processor.impl;
 
-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.contribution.processor.PackageProcessor;
 import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
-import org.apache.tuscany.contribution.service.ContributionException;
-import org.apache.tuscany.contribution.service.TypeDescriber;
-import org.apache.tuscany.contribution.service.UnsupportedContentTypeException;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
 
 /**
  * Default implementation of ContributionProcessorRegistry
@@ -41,50 +31,24 @@
  * @version $Rev$ $Date$
  */
 public class DefaultPackageProcessorExtensionPoint implements PackageProcessorExtensionPoint {
+
     /**
      * Processor registry
      */
     private Map<String, PackageProcessor> registry = new HashMap<String, PackageProcessor>();
 
-    /**
-     * Helper method to describe contentType for each artifact
-     */
-    private TypeDescriber packageTypeDescriber;
-
-    public DefaultPackageProcessorExtensionPoint(TypeDescriber packageTypeDescriber) {
-        if (packageTypeDescriber == null) {
-            this.packageTypeDescriber = new PackageTypeDescriberImpl();
-        } else {
-            this.packageTypeDescriber = packageTypeDescriber;
-        }
+    public DefaultPackageProcessorExtensionPoint() {
     }
 
-    public void register(String contentType, PackageProcessor processor) {
-        registry.put(contentType, processor);
+    public void addPackageProcessor(PackageProcessor processor) {
+        registry.put(processor.getPackageType(), processor);
     }
 
-    public void unregister(String contentType) {
-        registry.remove(contentType);
-    }
-
-    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());
-        }
-
-        PackageProcessor packageProcessor = this.registry.get(contentType);
-        if (packageProcessor == null) {
-            throw new UnsupportedContentTypeException(contentType, packageSourceURL.getPath());
-        }
-
-        return packageProcessor.getArtifacts(packageSourceURL, inputStream);
+    public void removePackageProcessor(PackageProcessor processor) {
+        registry.remove(processor.getPackageType());
     }
 
-    public URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException {
-        String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
-        PackageProcessor packageProcessor = this.registry.get(contentType);
-        return packageProcessor.getArtifactURL(packageSourceURL, artifact);
+    public PackageProcessor getPackageProcessor(String contentType) {
+        return registry.get(contentType);
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/FolderContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/FolderContributionProcessor.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/FolderContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/FolderContributionProcessor.java Sun May  6 11:17:22 2007
@@ -31,19 +31,16 @@
 
 import org.apache.tuscany.contribution.ContentType;
 import org.apache.tuscany.contribution.processor.PackageProcessor;
-import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.service.ContributionException;
 import org.apache.tuscany.contribution.service.util.FileHelper;
 
-public class FolderContributionProcessor extends AbstractContributionPackageProcessor implements
-    PackageProcessor {
+public class FolderContributionProcessor implements PackageProcessor {
     /**
      * Package-type that this package processor can handle
      */
     public static final String PACKAGE_TYPE = ContentType.FOLDER;
 
-    public FolderContributionProcessor(PackageProcessorExtensionPoint packageProcessors) {
-        super(packageProcessors);
+    public FolderContributionProcessor() {
     }
 
     public String getPackageType() {

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/JarContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/JarContributionProcessor.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/JarContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/processor/impl/JarContributionProcessor.java Sun May  6 11:17:22 2007
@@ -31,18 +31,15 @@
 
 import org.apache.tuscany.contribution.ContentType;
 import org.apache.tuscany.contribution.processor.PackageProcessor;
-import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.service.ContributionException;
 
-public class JarContributionProcessor extends AbstractContributionPackageProcessor implements
-    PackageProcessor {
+public class JarContributionProcessor implements PackageProcessor {
     /**
      * Package-type that this package processor can handle
      */
     public static final String PACKAGE_TYPE = ContentType.JAR;
 
-    public JarContributionProcessor(PackageProcessorExtensionPoint packageProcessors) {
-        super(packageProcessors);
+    public JarContributionProcessor() {
     }
 
     public String getPackageType() {

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java?view=auto&rev=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java Sun May  6 11:17:22 2007
@@ -0,0 +1,98 @@
+/*
+ * 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.contribution.service.impl;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.contribution.ContentType;
+import org.apache.tuscany.contribution.service.TypeDescriber;
+import org.apache.tuscany.contribution.service.util.FileHelper;
+
+/**
+ * Implementation of the content describer
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultPackageTypeDescriber implements TypeDescriber {
+    private final Map<String, String> contentTypeRegistry = new HashMap<String, String>();
+
+    public DefaultPackageTypeDescriber() {
+        super();
+        init();
+    }
+
+    /**
+     * Initialize contentType registry with know types based on known file extensions
+     */
+    private void init() {
+        contentTypeRegistry.put("JAR", ContentType.JAR);
+    }
+
+    protected String resolveContentyTypeByExtension(URL resourceURL) {
+        String artifactExtension = FileHelper.getExtension(resourceURL.getPath());
+        if (artifactExtension == null) {
+            return null;
+        }
+        return contentTypeRegistry.get(artifactExtension.toUpperCase());
+    }
+
+    /**
+     * Build contentType for a specific resource. We first check if the file is
+     * a supported one (looking into our registry based on resource extension)
+     * If not found, we try to check file contentType Or we return
+     * defaultContentType provided
+     * 
+     * @param url
+     * @param defaultContentType
+     * @return
+     */
+    public String getType(URL resourceURL, String defaultContentType) {
+        URLConnection connection = null;
+        String contentType = defaultContentType;
+
+        if (resourceURL.getProtocol().equals("file") && FileHelper.toFile(resourceURL).isDirectory()) {
+            // Special case : contribution is a folder
+            contentType = ContentType.FOLDER;
+        } else {
+            contentType = resolveContentyTypeByExtension(resourceURL);
+            if (contentType == null) {
+                try {
+                    connection = resourceURL.openConnection();
+                    contentType = connection.getContentType();
+    
+                    if (contentType == null || contentType.equals("content/unknown")) {
+                        // here we couldn't figure out from our registry or from URL and it's not a special file
+                        // return defaultContentType if provided
+                        contentType = defaultContentType;
+                    }
+                } catch (IOException io) {
+                    // could not access artifact, just ignore and we will return
+                    // null contentType
+                }
+            }
+        }
+        return contentType == null ? defaultContentType : contentType;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/DefaultPackageTypeDescriber.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/FolderContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/FolderContributionPackageProcessorTestCase.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/FolderContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/FolderContributionPackageProcessorTestCase.java Sun May  6 11:17:22 2007
@@ -24,9 +24,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.impl.FolderContributionProcessor;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
 
 public class FolderContributionPackageProcessorTestCase extends TestCase {
     private static final String FOLDER_CONTRIBUTION = ".";
@@ -39,10 +37,7 @@
     }
     
     public final void testProcessPackageArtifacts() throws Exception {
-        PackageProcessorExtensionPoint packageProcessors = 
-            new DefaultPackageProcessorExtensionPoint(new PackageTypeDescriberImpl()); 
-        FolderContributionProcessor folderProcessor = 
-            new FolderContributionProcessor(packageProcessors);
+        FolderContributionProcessor folderProcessor = new FolderContributionProcessor();
 
         List<URI> artifacts = folderProcessor.getArtifacts(contributionRoot.toURL(), null);
         assertNotNull(artifacts);

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/JarContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/JarContributionPackageProcessorTestCase.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/JarContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/processor/JarContributionPackageProcessorTestCase.java Sun May  6 11:17:22 2007
@@ -25,9 +25,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.impl.JarContributionProcessor;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
 import org.apache.tuscany.contribution.service.util.IOHelper;
 
 public class JarContributionPackageProcessorTestCase extends TestCase {
@@ -38,10 +36,7 @@
     }
     
     public final void testProcessPackageArtifacts() throws Exception {
-        PackageProcessorExtensionPoint packageProcessors = 
-            new DefaultPackageProcessorExtensionPoint(new PackageTypeDescriberImpl()); 
-        JarContributionProcessor jarProcessor = 
-            new JarContributionProcessor(packageProcessors);
+        JarContributionProcessor jarProcessor = new JarContributionProcessor();
 
         URL jarURL = getClass().getResource(JAR_CONTRIBUTION);
         InputStream jarStream = jarURL.openStream();

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/PackageTypeDescriberImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/PackageTypeDescriberImplTestCase.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/PackageTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/PackageTypeDescriberImplTestCase.java Sun May  6 11:17:22 2007
@@ -23,10 +23,10 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.contribution.ContentType;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
+import org.apache.tuscany.contribution.service.impl.DefaultPackageTypeDescriber;
 
 public class PackageTypeDescriberImplTestCase extends TestCase {
-    private PackageTypeDescriberImpl packageTypeDescriber;
+    private DefaultPackageTypeDescriber packageTypeDescriber;
 
     public void testResolvePackageType() throws Exception {
         URL artifactURL = getClass().getResource("/deployables/sample-calculator.jar");
@@ -46,7 +46,7 @@
 
     protected void setUp() throws Exception {
         super.setUp();
-        packageTypeDescriber = new PackageTypeDescriberImpl();
+        packageTypeDescriber = new DefaultPackageTypeDescriber();
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessor.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessor.java Sun May  6 11:17:22 2007
@@ -33,11 +33,13 @@
  * @version $Rev$ $Date$
  */
 public interface PackageProcessor {
-    // /**
-    // * Returns the type of package handled by this package processor.
-    // * @return the type of package handled by this package processor
-    // */
-    // String getPackageType();
+    
+    /**
+     * Returns the type of package processed by this package processor.
+     * 
+     * @return the package type
+     */
+    String getPackageType();
 
     /**
      * Retrieve a list of artifacts for the specific package type
@@ -58,4 +60,5 @@
      * @return
      */
     URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException;
+
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessorExtensionPoint.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessorExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/processor/PackageProcessorExtensionPoint.java Sun May  6 11:17:22 2007
@@ -21,16 +21,26 @@
 /**
  * @version $Rev$ $Date$
  */
-public interface PackageProcessorExtensionPoint extends PackageProcessor {
+public interface PackageProcessorExtensionPoint {
+    
+    /**
+     * Register a PackageProcessor using the package type as the key
+     * @param processor
+     */
+    void addPackageProcessor(PackageProcessor processor);
+    
     /**
-     * Register a ContributionPackageProcessor using the package type as the key
+     * Unregister a PackageProcessor
      * @param processor
      */
-    void register(String packageType, PackageProcessor processor);
+    void removePackageProcessor(PackageProcessor processor);
     
     /**
-     * Unregister a ContributionProcessor by package type
+     * Returns the PackageProcessor for the given package type.
+     * 
      * @param packageType
+     * @return
      */
-    void unregister(String packageType);
+    PackageProcessor getPackageProcessor(String packageType);
+    
 }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/MiniRuntimeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/MiniRuntimeImpl.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/MiniRuntimeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/MiniRuntimeImpl.java Sun May  6 11:17:22 2007
@@ -38,9 +38,11 @@
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessor;
 import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.PackageProcessor;
 import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessor;
 import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.contribution.processor.impl.JarContributionProcessor;
@@ -49,7 +51,7 @@
 import org.apache.tuscany.contribution.service.ContributionService;
 import org.apache.tuscany.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.contribution.service.impl.ContributionServiceImpl;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
+import org.apache.tuscany.contribution.service.impl.DefaultPackageTypeDescriber;
 import org.apache.tuscany.contribution.service.util.FileHelper;
 import org.apache.tuscany.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.core.runtime.ActivationException;
@@ -139,13 +141,14 @@
         documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
 
         // Create package processor extension point
-        PackageTypeDescriberImpl describer = new PackageTypeDescriberImpl();
-        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint(describer);
+        DefaultPackageTypeDescriber describer = new DefaultPackageTypeDescriber();
+        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint();
+        PackageProcessor packageProcessor = new DefaultPackageProcessor(packageProcessors, describer);
         extensionPointRegistry.addExtensionPoint(PackageProcessorExtensionPoint.class, packageProcessors);
 
         // Register base package processors
-        new JarContributionProcessor(packageProcessors);
-        new FolderContributionProcessor(packageProcessors);
+        packageProcessors.addPackageProcessor(new JarContributionProcessor());
+        packageProcessors.addPackageProcessor(new FolderContributionProcessor());
 
         // Create contribution service
         ContributionRepository repository;
@@ -156,7 +159,7 @@
         }
 
         DefaultArtifactResolver artifactResolver = new DefaultArtifactResolver(hostClassLoader);
-        ContributionService contributionService = new ContributionServiceImpl(repository, packageProcessors,
+        ContributionService contributionService = new ContributionServiceImpl(repository, packageProcessor,
                                                                               documentProcessor, artifactResolver,
                                                                               assemblyFactory,
                                                                               new DefaultContributionFactory(),

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=535641&r1=535640&r2=535641
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java Sun May  6 11:17:22 2007
@@ -46,9 +46,11 @@
 import org.apache.tuscany.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessor;
 import org.apache.tuscany.contribution.processor.DefaultURLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.PackageProcessor;
 import org.apache.tuscany.contribution.processor.PackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.URLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessor;
 import org.apache.tuscany.contribution.processor.impl.DefaultPackageProcessorExtensionPoint;
 import org.apache.tuscany.contribution.processor.impl.FolderContributionProcessor;
 import org.apache.tuscany.contribution.processor.impl.JarContributionProcessor;
@@ -57,7 +59,7 @@
 import org.apache.tuscany.contribution.service.ContributionService;
 import org.apache.tuscany.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.contribution.service.impl.ContributionServiceImpl;
-import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
+import org.apache.tuscany.contribution.service.impl.DefaultPackageTypeDescriber;
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.WireProcessorExtensionPoint;
 import org.apache.tuscany.core.invocation.DefaultWireProcessorExtensionPoint;
@@ -162,13 +164,14 @@
         documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
 
         // Create contribution package processor extension point
-        PackageTypeDescriberImpl describer = new PackageTypeDescriberImpl();
-        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint(describer);
+        DefaultPackageTypeDescriber describer = new DefaultPackageTypeDescriber();
+        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint();
+        PackageProcessor packageProcessor = new DefaultPackageProcessor(packageProcessors ,describer);
         registry.addExtensionPoint(PackageProcessorExtensionPoint.class, packageProcessors);
 
         // Register base package processors
-        new JarContributionProcessor(packageProcessors);
-        new FolderContributionProcessor(packageProcessors);
+        packageProcessors.addPackageProcessor(new JarContributionProcessor());
+        packageProcessors.addPackageProcessor(new FolderContributionProcessor());
 
         // Create a contribution repository
         ContributionRepository repository;
@@ -183,7 +186,7 @@
         ContributionFactory contributionFactory = new DefaultContributionFactory();
         DefaultURLArtifactProcessor documentProcessor = new DefaultURLArtifactProcessor(documentProcessors);
         ContributionService contributionService = new ContributionServiceImpl(
-                                                                              repository, packageProcessors,
+                                                                              repository, packageProcessor,
                                                                               documentProcessor, artifactResolver,
                                                                               assemblyFactory,
                                                                               contributionFactory,



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