Hi,

This change is causing issues for web applications under Jetty (more generally, if the path contains spaces encoded as %20). For example, new URL(file:/C:/My%20Dir).getFile() returns "/C:/My%20Dir", but new File("/C:/My%20Dir") doesn't work.

We can use new File(URI) to create a File out of URI (for URL, we call URL.toURI() first) but new File(URI) throws IllegalArgumentException for opaque URIs such as file:./x.txt or file:../../a/b/c.txt (These file URIs are not valid anyway but some people use it).

I fixed the issue under r790470 but we might need to have a general utility (in a module like common-java) to deal with URL/URI/File conversions.

Thanks,
Raymond
--------------------------------------------------
From: <[email protected]>
Sent: Wednesday, June 24, 2009 8:39 AM
To: <[email protected]>
Subject: svn commit: r788055 - in /tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution: java/impl/ContributionHelper.java processor/impl/ContributionContentProcessor.java

Author: slaws
Date: Wed Jun 24 15:39:38 2009
New Revision: 788055

URL: http://svn.apache.org/viewvc?rev=788055&view=rev
Log:
Deal with file: protocol that doesn't populate the path part of the URL

Modified:

tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionHelper.java

tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/ContributionContentProcessor.java

Modified: tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionHelper.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionHelper.java?rev=788055&r1=788054&r2=788055&view=diff
==============================================================================
--- tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionHelper.java (original) +++ tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionHelper.java Wed Jun 24 15:39:38 2009
@@ -38,7 +38,7 @@
        List<URL> urls = new ArrayList<URL>();
boolean isZipContribution = contribution.getLocation().endsWith(".zip");
        URI uri = URI.create(contribution.getLocation());
- boolean isFolderContribution = !isZipContribution && uri.getScheme().equals("file") && new File(uri).isDirectory(); + boolean isFolderContribution = !isZipContribution && uri.getScheme().equals("file") && new File(uri.getSchemeSpecificPart()).isDirectory();
        if (isZipContribution || isFolderContribution) {
            for (Artifact a : contribution.getArtifacts()) {
                if (a.getLocation().endsWith(".jar")) {

Modified: tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/ContributionContentProcessor.java URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/ContributionContentProcessor.java?rev=788055&r1=788054&r2=788055&view=diff
==============================================================================
--- tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/ContributionContentProcessor.java (original) +++ tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/ContributionContentProcessor.java Wed Jun 24 15:39:38 2009
@@ -115,15 +115,16 @@
        // Create a contribution scanner
ContributionScanner scanner = scanners.getContributionScanner(contributionURL.getProtocol());
        if (scanner == null) {
-            try {
- if ("file".equals(contributionURL.getProtocol()) && new File(contributionURL.toURI().getPath()).isDirectory()) {
+            //try {
+                if ("file".equals(contributionURL.getProtocol()) &&
+                    new File(contributionURL.getFile()).isDirectory()) {
                    scanner = new DirectoryContributionScanner();
                } else {
                    scanner = new JarContributionScanner();
                }
-            } catch (URISyntaxException e) {
-                throw new ContributionReadException(e);
-            }
+            //} catch (URISyntaxException e) {
+            //    throw new ContributionReadException(e);
+            //}
        }

        // Scan the contribution and list the artifacts contained in it


Reply via email to