diff options
Diffstat (limited to 'branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java')
-rw-r--r-- | branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java b/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java index 3a80c1dd3b..32425e3299 100644 --- a/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java +++ b/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java @@ -26,6 +26,9 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; +import java.net.URLStreamHandlerFactory; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -37,6 +40,7 @@ import org.apache.tuscany.sca.contribution.PackageType; import org.apache.tuscany.sca.contribution.processor.PackageProcessor; import org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor; import org.apache.tuscany.sca.contribution.service.ContributionException; +import org.eclipse.emf.common.archive.ArchiveURLConnection; /** * Ear Contribution package processor. @@ -44,9 +48,32 @@ import org.apache.tuscany.sca.contribution.service.ContributionException; * @version $Rev$ $Date$ */ public class EarContributionProcessor implements PackageProcessor { + + /* Install handler for "archive" */ + static { + URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory() { + public URLStreamHandler createURLStreamHandler(String protocol) { + if("archive".equalsIgnoreCase(protocol)) { + return new Handler(); + } else { + return null; + } + }} + ); + } + + static class Handler extends URLStreamHandler { + @Override + protected URLConnection openConnection(URL u) throws IOException { + return new ArchiveURLConnection(u); + } + } public URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException { + if(artifact.toString().equals("")) { + return packageSourceURL; + } if (packageSourceURL.toString().startsWith("archive:")) { return new URL(packageSourceURL, artifact.toString()); } else { |