Author: rfeng
Date: Thu Feb 19 06:34:03 2009
New Revision: 745752
URL: http://svn.apache.org/viewvc?rev=745752&view=rev
Log:
Fix for TUSCANY-2702
Modified:
tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
Modified:
tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?rev=745752&r1=745751&r2=745752&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
Thu Feb 19 06:34:03 2009
@@ -18,10 +18,12 @@
*/
package org.apache.tuscany.sca.contribution.service.impl;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
@@ -304,6 +306,22 @@
return contributionMetadata;
}
+
+ private static boolean isDirectory(URL url) {
+ if ("file".equals(url.getProtocol())) {
+ try {
+ final URI uri = url.toURI();
+ return AccessController.doPrivileged(new
PrivilegedAction<Boolean>() {
+ public Boolean run() {
+ return new File(uri).isDirectory();
+ }
+ });
+ } catch (URISyntaxException e) {
+ // Ignore
+ }
+ }
+ return false;
+ }
/**
* Note:
@@ -358,18 +376,23 @@
//NOTE: if a contribution is stored on the repository
//the stream would be consumed at this point
if (storeInRepository || contributionStream == null) {
- URLConnection connection = sourceURL.openConnection();
- connection.setUseCaches(false);
- // Allow access to open URL stream. Add FilePermission to added to
security policy file.
- final URLConnection finalConnection = connection;
- try {
- contributionStream = AccessController.doPrivileged(new
PrivilegedExceptionAction<InputStream>() {
- public InputStream run() throws IOException {
- return finalConnection.getInputStream();
- }
- });
- } catch (PrivilegedActionException e) {
- throw (IOException)e.getException();
+ if (isDirectory(sourceURL)) {
+ // TUSCANY-2702: This is a directory
+ contributionStream = null;
+ } else {
+ URLConnection connection = sourceURL.openConnection();
+ connection.setUseCaches(false);
+ // Allow access to open URL stream. Add FilePermission to
added to security policy file.
+ final URLConnection finalConnection = connection;
+ try {
+ contributionStream = AccessController.doPrivileged(new
PrivilegedExceptionAction<InputStream>() {
+ public InputStream run() throws IOException {
+ return finalConnection.getInputStream();
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (IOException)e.getException();
+ }
}
try {