Author: jsdelfino
Date: Sat May 10 12:25:18 2008
New Revision: 655142

URL: http://svn.apache.org/viewvc?rev=655142&view=rev
Log:
Improving the performance and robustness of the domain manager app. Switch back 
to ContributionInfoProcessor when we're only interested in general info about 
contributions. Added some error checking when contributions cannot be found. 
Centralized the logic to detect JAR files in DomainManagerUtil.

Modified:
    
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
    
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
    
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java

Modified: 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java?rev=655142&r1=655141&r2=655142&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/ContributionCollectionImpl.java
 Sat May 10 12:25:18 2008
@@ -57,12 +57,10 @@
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import 
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
-import 
org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 import 
org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
-import 
org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -115,7 +113,6 @@
     private ContributionFactory contributionFactory;
     private WorkspaceFactory workspaceFactory;
     private StAXArtifactProcessor<Object> staxProcessor;
-    private URLArtifactProcessor<Object> urlProcessor;
     private URLArtifactProcessor<Contribution> contributionProcessor;
     private XMLInputFactory inputFactory;
     private XMLOutputFactory outputFactory;
@@ -141,19 +138,15 @@
         contributionFactory = 
modelFactories.getFactory(ContributionFactory.class);
         workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
         
-        // Create model resolvers
-        ModelResolverExtensionPoint modelResolvers = 
extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
-
         // Create artifact processors
         inputFactory = modelFactories.getFactory(XMLInputFactory.class);
         StAXArtifactProcessorExtensionPoint staxProcessors = 
extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
         staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, 
inputFactory, outputFactory);
 
         URLArtifactProcessorExtensionPoint urlProcessors = 
extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
-        urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors);
         
         // Create contribution info processor
-        contributionProcessor = urlProcessors.getProcessor(Contribution.class);
+        contributionProcessor = 
urlProcessors.getProcessor(".contribution/info");
 
         // Create a document builder (used to pretty print XML)
         documentBuilder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
@@ -384,7 +377,10 @@
         }
         
         // List the dependency problems
-        if (problems.size() > 1) {
+        if (contribution.isUnresolved()) {
+            problems.add("Contribution not found");
+        }
+        if (problems.size() > 0) {
             sb.append("<span id=\"problems\" style=\"color: red\">");
             for (int i = 0, n = problems.size(); i < n ; i++) {
                 sb.append("Problem: "+ problems.get(i) + "<br>");
@@ -505,8 +501,15 @@
                 URL url = locationURL(c.getLocation());
                 try {
                     Contribution contribution = 
(Contribution)contributionProcessor.read(null, uri, url);
+                    contribution.setUnresolved(false);
                     dependencyWorkspace.getContributions().add(contribution);
-                } catch (ContributionReadException e) {}
+                } catch (ContributionReadException e) {
+                    Contribution contribution = 
contributionFactory.createContribution();
+                    contribution.setURI(c.getURI());
+                    contribution.setLocation(c.getLocation());
+                    contribution.setUnresolved(true);
+                    dependencyWorkspace.getContributions().add(contribution);
+                }
             }
         } catch (Exception e) {
             throw new ServiceRuntimeException(e);

Modified: 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java?rev=655142&r1=655141&r2=655142&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployedCompositeCollectionImpl.java
 Sat May 10 12:25:18 2008
@@ -30,6 +30,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -59,10 +60,8 @@
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.xml.CompositeProcessor;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
@@ -206,24 +205,20 @@
             return;
         }
 
-        // Support reading source composite file inside a JAR
+        // Read the composite file and write to response
         String uri = item.getAlternate();
-        int e = uri.indexOf("!/"); 
-        if (e != -1) {
-            int s = uri.lastIndexOf('/', e - 2) +1;
-            if (uri.substring(s, e).contains(".")) {
-                uri = "jar:" + uri;
-            } else {
-                uri = uri.substring(0, e) + uri.substring(e + 1);
-            }
+        InputStream is;
+        try {
+            URLConnection connection = new URL(uri).openConnection();
+            connection.setUseCaches(false);
+            connection.connect();
+            is = connection.getInputStream();
+        } catch (FileNotFoundException ex) {
+            response.sendError(HttpServletResponse.SC_NOT_FOUND, key);
+            return;
         }
-        
-        // Read the composite file and write to response
+
         response.setContentType("text/xml");
-        URLConnection connection = new URL(uri).openConnection();
-        connection.setUseCaches(false);
-        connection.connect();
-        InputStream is = connection.getInputStream();
         ServletOutputStream os = response.getOutputStream();
         byte[] buffer = new byte[4096];
         for (;;) {

Modified: 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java?rev=655142&r1=655141&r2=655142&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DomainManagerUtil.java
 Sat May 10 12:25:18 2008
@@ -151,22 +151,36 @@
      * @return
      */
     static String compositeAlternateLink(String contributionLocation, String 
deployableURI) {
-        URI uri = URI.create(contributionLocation);
-        if ("file".equals(uri.getScheme())) {
-            String path = uri.toString().substring(5);
+        if (deployableURI == null) {
+            return null;
+        }
+        URI u = URI.create(contributionLocation);
+        String uri;
+        if ("file".equals(u.getScheme())) {
+            String path = u.toString().substring(5);
             File file = new File(path);
             if (file.isDirectory()) {
                 if (contributionLocation.endsWith("/")) {
-                    return contributionLocation + deployableURI;
+                    uri = contributionLocation + deployableURI;
                 } else {
-                    return contributionLocation + "/" + deployableURI;
+                    uri = contributionLocation + "/" + deployableURI;
                 }
             } else {
-                return contributionLocation + "!/" + deployableURI; 
+                uri = contributionLocation + "!/" + deployableURI; 
             }
         } else {
-            return contributionLocation + "!/" + deployableURI;
+            uri = contributionLocation + "!/" + deployableURI;
+        }
+        int e = uri.indexOf("!/"); 
+        if (e != -1) {
+            int s = uri.lastIndexOf('/', e - 2) +1;
+            if (uri.substring(s, e).contains(".")) {
+                uri = "jar:" + uri;
+            } else {
+                uri = uri.substring(0, e) + uri.substring(e + 1);
+            }
         }
+        return uri;
     }
 
     /**


Reply via email to