summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EarContributionProcessor.java27
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 {