Author: jsdelfino
Date: Wed Aug 29 11:12:33 2007
New Revision: 570884
URL: http://svn.apache.org/viewvc?rev=570884&view=rev
Log:
Fix for TUSCANY-1605, allowing implementation-resource to serve in-jar
resources.
Modified:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java
incubator/tuscany/java/sca/modules/http-jetty/pom.xml
incubator/tuscany/java/sca/modules/http-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyDefaultServlet.java
incubator/tuscany/java/sca/modules/http-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatDefaultServlet.java
Modified:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java?rev=570884&r1=570883&r2=570884&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java
Wed Aug 29 11:12:33 2007
@@ -73,6 +73,8 @@
}
fileList.add(URI.create(uri));
+ //FIXME Do we really need to use a regexp here to filter out
+ // file names that start one or two dots?
File[] files =
file.listFiles(FileHelper.getFileFilter("[^\u002e].*", true));
for (int i = 0; i < files.length; i++) {
traverse(fileList, files[i], root);
Modified:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java?rev=570884&r1=570883&r2=570884&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java
Wed Aug 29 11:12:33 2007
@@ -25,7 +25,9 @@
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
@@ -69,11 +71,10 @@
throw new IllegalArgumentException("Invalid null source
inputstream.");
}
- List<URI> artifacts = new ArrayList<URI>();
-
// Assume the root is a jar file
JarInputStream jar = new JarInputStream(inputStream);
try {
+ Set<String> names = new HashSet<String>();
while (true) {
JarEntry entry = jar.getNextJarEntry();
if (entry == null) {
@@ -82,13 +83,45 @@
}
// FIXME: Maybe we should externalize the filter as a property
- if (!entry.getName().startsWith(".")) {
- artifacts.add(URI.create(entry.getName()));
+ String name = entry.getName();
+ if (!name.startsWith(".")) {
+
+ // Trim trailing /
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+
+ // Add the entry name
+ if (!names.contains(name)) {
+ names.add(name);
+
+ // Add parent folder names to the list too
+ for (;;) {
+ int s = name.lastIndexOf('/');
+ if (s == -1) {
+ name = "";
+ } else {
+ name = name.substring(0, s);
+ }
+ if (!names.contains(name)) {
+ names.add(name);
+ } else {
+ break;
+ }
+ }
+ }
}
}
+
+ // Return list of URIs
+ List<URI> artifacts = new ArrayList<URI>();
+ for (String name: names) {
+ artifacts.add(URI.create(name));
+ }
+ return artifacts;
+
} finally {
jar.close();
}
- return artifacts;
}
}
Modified: incubator/tuscany/java/sca/modules/http-jetty/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/http-jetty/pom.xml?rev=570884&r1=570883&r2=570884&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/http-jetty/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/http-jetty/pom.xml Wed Aug 29 11:12:33
2007
@@ -38,13 +38,13 @@
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
- <version>6.1.0</version>
+ <version>6.1.3</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>6.1.0</version>
+ <version>6.1.3</version>
</dependency>
<dependency>
Modified:
incubator/tuscany/java/sca/modules/http-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyDefaultServlet.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/http-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyDefaultServlet.java?rev=570884&r1=570883&r2=570884&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/http-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyDefaultServlet.java
(original)
+++
incubator/tuscany/java/sca/modules/http-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyDefaultServlet.java
Wed Aug 29 11:12:33 2007
@@ -19,8 +19,15 @@
package org.apache.tuscany.sca.http.jetty;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
import org.mortbay.jetty.servlet.DefaultServlet;
import org.mortbay.resource.Resource;
+import org.mortbay.resource.URLResource;
/**
* Customizes the Jetty default servlet.
@@ -51,7 +58,23 @@
pathInContext = "";
}
}
- return super.getResource(pathInContext);
+
+ try {
+ URL url = new URL(documentRoot + "/" + pathInContext);
+ return new URLResource(url, url.openConnection()) {
+ private static final long serialVersionUID =
8560952113883507717L;
+
+ @Override
+ public File getFile() throws IOException {
+ return null;
+ }
+
+ };
+ } catch (MalformedURLException e) {
+ return null;
+ } catch (IOException e) {
+ return null;
+ }
}
@Override
Modified:
incubator/tuscany/java/sca/modules/http-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatDefaultServlet.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/http-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatDefaultServlet.java?rev=570884&r1=570883&r2=570884&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/http-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatDefaultServlet.java
(original)
+++
incubator/tuscany/java/sca/modules/http-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatDefaultServlet.java
Wed Aug 29 11:12:33 2007
@@ -19,9 +19,16 @@
package org.apache.tuscany.sca.http.tomcat;
-import java.net.URI;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Hashtable;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttributes;
+import javax.naming.directory.DirContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -29,6 +36,7 @@
import org.apache.catalina.servlets.DefaultServlet;
import org.apache.naming.resources.FileDirContext;
import org.apache.naming.resources.ProxyDirContext;
+import org.apache.naming.resources.Resource;
public class TomcatDefaultServlet extends DefaultServlet {
private static final long serialVersionUID = -7503581551326796573L;
@@ -39,9 +47,30 @@
public TomcatDefaultServlet(String servletPath, String documentRoot) {
this.documentRoot = documentRoot;
- FileDirContext dirContext = new FileDirContext();
- URI uri = URI.create(this.documentRoot);
- dirContext.setDocBase(uri.getPath());
+ DirContext dirContext = new FileDirContext() {
+
+ @Override
+ public Attributes getAttributes(String name) throws
NamingException {
+ return new BasicAttributes();
+ }
+
+ @Override
+ public Object lookup(String name) throws NamingException {
+
+ try {
+ final URL url = new
URL(TomcatDefaultServlet.this.documentRoot + name);
+ return new Resource() {
+
+ @Override
+ public InputStream streamContent() throws IOException {
+ return url.openStream();
+ }
+ };
+ } catch (MalformedURLException e) {
+ throw new NamingException(e.toString());
+ }
+ }
+ };
proxyDirContext = new ProxyDirContext(new Hashtable(), dirContext);
resources = proxyDirContext;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]