cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
glenn 01/06/22 13:18:24 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: Add support for JndiPermission Revision ChangesPath 1.12 +8 -7 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- DirContextURLConnection.java 2001/06/03 19:52:00 1.11 +++ DirContextURLConnection.java 2001/06/22 20:18:24 1.12 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.11 2001/06/03 19:52:00 remm Exp $ - * $Revision: 1.11 $ - * $Date: 2001/06/03 19:52:00 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.12 2001/06/22 20:18:24 glenn Exp $ + * $Revision: 1.12 $ + * $Date: 2001/06/22 20:18:24 $ * * * @@ -68,7 +68,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.FileNotFoundException; -import java.io.FilePermission; import java.security.Permission; import java.util.Date; import java.util.Enumeration; @@ -79,6 +78,7 @@ import javax.naming.directory.DirContext; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; +import org.apache.naming.JndiPermission; import org.apache.naming.resources.Resource; import org.apache.naming.resources.ResourceAttributes; @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ */ public class DirContextURLConnection extends URLConnection { @@ -105,8 +105,9 @@ if (context == null) throw new IllegalArgumentException ("Directory context can't be null"); -if (System.getSecurityManager() != null) -this.permission = new FilePermission(url.toString(), "read"); +if (System.getSecurityManager() != null) { +this.permission = new JndiPermission(url.toString()); + } this.context = context; }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/06/03 12:52:00 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Possible workaround for the perf problem reported by Jon : don't create a FilePermission is there is no security manager defined. Revision ChangesPath 1.11 +6 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- DirContextURLConnection.java 2001/05/11 18:24:33 1.10 +++ DirContextURLConnection.java 2001/06/03 19:52:00 1.11 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.10 2001/05/11 18:24:33 remm Exp $ - * $Revision: 1.10 $ - * $Date: 2001/05/11 18:24:33 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.11 2001/06/03 19:52:00 remm Exp $ + * $Revision: 1.11 $ + * $Date: 2001/06/03 19:52:00 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ */ public class DirContextURLConnection extends URLConnection { @@ -105,7 +105,8 @@ if (context == null) throw new IllegalArgumentException ("Directory context can't be null"); -this.permission = new FilePermission(url.toString(), "read"); +if (System.getSecurityManager() != null) +this.permission = new FilePermission(url.toString(), "read"); this.context = context; }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/05/11 11:24:41 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Revert the commit on URL connection. Revision ChangesPath 1.10 +4 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- DirContextURLConnection.java 2001/05/11 18:20:34 1.9 +++ DirContextURLConnection.java 2001/05/11 18:24:33 1.10 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.9 2001/05/11 18:20:34 remm Exp $ - * $Revision: 1.9 $ - * $Date: 2001/05/11 18:20:34 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.10 2001/05/11 18:24:33 remm Exp $ + * $Revision: 1.10 $ + * $Date: 2001/05/11 18:24:33 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ */ public class DirContextURLConnection extends URLConnection { @@ -199,7 +199,6 @@ collection = (DirContext) object; } catch (NamingException e) { // Object not found -throw new IOException("Resource not found"); } connected = true;
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/05/11 11:20:42 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - The resource existence check was incorrect when using a URL, which was breaking reloading in some cases. Revision ChangesPath 1.9 +5 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DirContextURLConnection.java 2001/04/27 19:21:04 1.8 +++ DirContextURLConnection.java 2001/05/11 18:20:34 1.9 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.8 2001/04/27 19:21:04 remm Exp $ - * $Revision: 1.8 $ - * $Date: 2001/04/27 19:21:04 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.9 2001/05/11 18:20:34 remm Exp $ + * $Revision: 1.9 $ + * $Date: 2001/05/11 18:20:34 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class DirContextURLConnection extends URLConnection { @@ -199,6 +199,7 @@ collection = (DirContext) object; } catch (NamingException e) { // Object not found +throw new IOException("Resource not found"); } connected = true;
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/04/27 12:21:05 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Some NPE could happen when calling getLastModified() or getHeaderField(). Revision ChangesPath 1.8 +15 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DirContextURLConnection.java 2001/04/25 04:15:38 1.7 +++ DirContextURLConnection.java 2001/04/27 19:21:04 1.8 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.7 2001/04/25 04:15:38 glenn Exp $ - * $Revision: 1.7 $ - * $Date: 2001/04/25 04:15:38 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.8 2001/04/27 19:21:04 remm Exp $ + * $Revision: 1.8 $ + * $Date: 2001/04/27 19:21:04 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public class DirContextURLConnection extends URLConnection { @@ -236,6 +236,7 @@ * Return the last modified date. */ public long getLastModified() { + if (!connected) { // Try to connect (silently) try { @@ -243,6 +244,10 @@ } catch (IOException e) { } } + +if (attributes == null) +return 0; + Attribute lastModified = attributes.get(ResourceAttributes.LAST_MODIFIED); if (lastModified != null) { @@ -252,6 +257,7 @@ } catch (Exception e) { } } + return 0; } @@ -260,6 +266,7 @@ * Returns the name of the specified header field. */ public String getHeaderField(String name) { + if (!connected) { // Try to connect (silently) try { @@ -268,12 +275,16 @@ } } +if (attributes == null) +return (null); + Attribute attribute = attributes.get(name); try { return attribute.get().toString(); } catch (Exception e) { // Shouldn't happen, unless the attribute has no value } + return (null); }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
glenn 01/04/24 21:15:39 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: Java SecurityManager implementation changes --- Changed the naming convention for JNDI DirContextURL to "jndi:/hostname/webappname/" and "jar:jndi:/hostname/webappname/...". This works better with java.io.FilePermission. Modified how permissions are granted to the codeBase for a web application so that different permissions can be granted. Permissions assigned to the root of a web application apply to JSP pages. Different permissions can be assigned to the /WEB-INF/classes/ directory, the /WEB-INF/lib/ directory, or even to individual jar files in /WEB-INF/lib/. This allows much finer control of permissions granted within a web application. Fixed Jasper so that it uses the correct codeBase for a web application, it had been using the work dir instead of the context dir for getting permissions from the policy file. Added more default read FilePermissions for classes loaded from within a web application so that getResources() works. Added: "jndi:/hostname/webappname/-" "jar:jndi:/hostname/webappname/WEB-INF/lib/-" "file:/realcontextpath/-" Revision ChangesPath 1.7 +7 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DirContextURLConnection.java 2001/04/06 19:31:59 1.6 +++ DirContextURLConnection.java 2001/04/25 04:15:38 1.7 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.6 2001/04/06 19:31:59 remm Exp $ - * $Revision: 1.6 $ - * $Date: 2001/04/06 19:31:59 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.7 2001/04/25 04:15:38 glenn Exp $ + * $Revision: 1.7 $ + * $Date: 2001/04/25 04:15:38 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]";>Remy Maucherat - * @version $Revision: 1.6 $ + * @version $Revision: 1.7 $ */ public class DirContextURLConnection extends URLConnection { @@ -179,11 +179,12 @@ String hostName = proxyDirContext.getHostName(); String contextName = proxyDirContext.getContextName(); if (hostName != null) { -if (!url.getHost().equalsIgnoreCase(hostName)) +if (!path.startsWith("/" + hostName + "/")) return; +path = path.substring(hostName.length()+ 1); } if (contextName != null) { -if (!path.startsWith(contextName)) { +if (!path.startsWith(contextName + "/")) { return; } else { path = path.substring(contextName.length());
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java ProxyDirContext.java
remm01/04/06 12:32:03 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java ProxyDirContext.java Log: - Fix for bug 1219. It makes the URLs generated more unique, to avoid confusing the JDK's JAR URL cache. Revision ChangesPath 1.6 +25 -7 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DirContextURLConnection.java 2001/03/31 14:06:31 1.5 +++ DirContextURLConnection.java 2001/04/06 19:31:59 1.6 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.5 2001/03/31 14:06:31 glenn Exp $ - * $Revision: 1.5 $ - * $Date: 2001/03/31 14:06:31 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.6 2001/04/06 19:31:59 remm Exp $ + * $Revision: 1.6 $ + * $Date: 2001/04/06 19:31:59 $ * * * @@ -91,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]">Remy Maucherat - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class DirContextURLConnection extends URLConnection { @@ -105,7 +105,7 @@ if (context == null) throw new IllegalArgumentException ("Directory context can't be null"); -this.permission = new FilePermission(url.toString(),"read"); +this.permission = new FilePermission(url.toString(), "read"); this.context = context; } @@ -172,8 +172,26 @@ try { date = System.currentTimeMillis(); -object = context.lookup(getURL().getFile()); -attributes = context.getAttributes(getURL().getFile()); +String path = getURL().getFile(); +if (context instanceof ProxyDirContext) { +ProxyDirContext proxyDirContext = +(ProxyDirContext) context; +String hostName = proxyDirContext.getHostName(); +String contextName = proxyDirContext.getContextName(); +if (hostName != null) { +if (!url.getHost().equalsIgnoreCase(hostName)) +return; +} +if (contextName != null) { +if (!path.startsWith(contextName)) { +return; +} else { +path = path.substring(contextName.length()); +} +} +} +object = context.lookup(path); +attributes = context.getAttributes(path); if (object instanceof Resource) resource = (Resource) object; if (object instanceof DirContext) 1.3 +49 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java Index: ProxyDirContext.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ProxyDirContext.java 2001/02/05 05:10:00 1.2 +++ ProxyDirContext.java 2001/04/06 19:32:00 1.3 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v 1.2 2001/02/05 05:10:00 remm Exp $ - * $Revision: 1.2 $ - * $Date: 2001/02/05 05:10:00 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v 1.3 2001/04/06 19:32:00 remm Exp $ + * $Revision: 1.3 $ + * $Date: 2001/04/06 19:32:00 $ * * * @@ -84,7 +84,7 @@ * Proxy Directory Context implementation. * * @author Remy Maucherat - * @version $Revision: 1.2 $ $Date: 2001/02/05 05:10:00 $ + * @version $Revision: 1.3 $ $Date: 2001/04/06 19:32:00 $ */ public class ProxyDirContext implements DirContext { @@ -93,6 +93,10 @@ // -- Constants +public static final String CONTEXT = "context"; +public static
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
glenn 01/03/31 06:06:31 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: Implement getPermission so that a FilePermission used to enforce security instead of the default AllPermission Revision ChangesPath 1.5 +22 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DirContextURLConnection.java 2001/03/21 19:51:48 1.4 +++ DirContextURLConnection.java 2001/03/31 14:06:31 1.5 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.4 2001/03/21 19:51:48 remm Exp $ - * $Revision: 1.4 $ - * $Date: 2001/03/21 19:51:48 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.5 2001/03/31 14:06:31 glenn Exp $ + * $Revision: 1.5 $ + * $Date: 2001/03/31 14:06:31 $ * * * @@ -68,6 +68,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.FileNotFoundException; +import java.io.FilePermission; +import java.security.Permission; import java.util.Date; import java.util.Enumeration; import java.util.Vector; @@ -89,7 +91,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]">Remy Maucherat - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class DirContextURLConnection extends URLConnection { @@ -103,6 +105,7 @@ if (context == null) throw new IllegalArgumentException ("Directory context can't be null"); +this.permission = new FilePermission(url.toString(),"read"); this.context = context; } @@ -146,6 +149,12 @@ protected long date; +/** + * Permission + */ +protected Permission permission; + + // - Properties @@ -314,6 +323,15 @@ } +/** + * Get the Permission for this URL + */ +public Permission getPermission() { + +return permission; +} + + // - Public Methods
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/03/21 11:51:55 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Throw an IllegalArgumentException if the context specified is null. Revision ChangesPath 1.4 +7 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DirContextURLConnection.java 2001/03/16 05:47:51 1.3 +++ DirContextURLConnection.java 2001/03/21 19:51:48 1.4 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.3 2001/03/16 05:47:51 remm Exp $ - * $Revision: 1.3 $ - * $Date: 2001/03/16 05:47:51 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.4 2001/03/21 19:51:48 remm Exp $ + * $Revision: 1.4 $ + * $Date: 2001/03/21 19:51:48 $ * * * @@ -89,7 +89,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]">Remy Maucherat - * @version $Revision: 1.3 $ + * @version $Revision: 1.4 $ */ public class DirContextURLConnection extends URLConnection { @@ -100,6 +100,9 @@ public DirContextURLConnection(DirContext context, URL url) { super(url); +if (context == null) +throw new IllegalArgumentException +("Directory context can't be null"); this.context = context; }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/03/15 21:47:52 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Add a new list call which returns an enumeration of names of the children of a collection. Since that call isn't part of the URLConnection methods, the URL connection returned by getResource(path).openConnection() needs to be typecast. Revision ChangesPath 1.3 +46 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DirContextURLConnection.java 2001/01/26 01:04:25 1.2 +++ DirContextURLConnection.java 2001/03/16 05:47:51 1.3 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.2 2001/01/26 01:04:25 remm Exp $ - * $Revision: 1.2 $ - * $Date: 2001/01/26 01:04:25 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.3 2001/03/16 05:47:51 remm Exp $ + * $Revision: 1.3 $ + * $Date: 2001/03/16 05:47:51 $ * * * @@ -69,7 +69,11 @@ import java.io.InputStream; import java.io.FileNotFoundException; import java.util.Date; +import java.util.Enumeration; +import java.util.Vector; import javax.naming.NamingException; +import javax.naming.NamingEnumeration; +import javax.naming.NameClassPair; import javax.naming.directory.DirContext; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; @@ -85,7 +89,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]">Remy Maucherat - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public class DirContextURLConnection extends URLConnection { @@ -303,6 +307,44 @@ } return (resource.streamContent()); + +} + + +// - Public Methods + + +/** + * List children of this collection. The names given are relative to this + * URI's path. The full uri of the children is then : path + "/" + name. + */ +public Enumeration list() +throws IOException { + +if (!connected) { +connect(); +} + +if ((resource == null) && (collection == null)) { +throw new FileNotFoundException(); +} + +Vector result = new Vector(); + +if (collection != null) { +try { +NamingEnumeration enum = context.list(getURL().getFile()); +while (enum.hasMoreElements()) { +NameClassPair ncp = (NameClassPair) enum.nextElement(); +result.addElement(ncp.getName()); +} +} catch (NamingException e) { +// Unexpected exception +throw new FileNotFoundException(); +} +} + +return result.elements(); }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLConnection.java
remm01/01/25 17:04:25 Modified:catalina/src/share/org/apache/naming/resources DirContextURLConnection.java Log: - Last modified hadling looked broken. It should be fixed (and it should be more efficient). Thanks to Justyna for reporting (and debugging) the problem. Revision ChangesPath 1.2 +22 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java Index: DirContextURLConnection.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DirContextURLConnection.java 2001/01/23 03:41:28 1.1 +++ DirContextURLConnection.java 2001/01/26 01:04:25 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.1 2001/01/23 03:41:28 remm Exp $ - * $Revision: 1.1 $ - * $Date: 2001/01/23 03:41:28 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLConnection.java,v 1.2 2001/01/26 01:04:25 remm Exp $ + * $Revision: 1.2 $ + * $Date: 2001/01/26 01:04:25 $ * * * @@ -68,6 +68,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.FileNotFoundException; +import java.util.Date; import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.Attribute; @@ -84,7 +85,7 @@ * content is directly returned. * * @author mailto:[EMAIL PROTECTED]">Remy Maucherat - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class DirContextURLConnection extends URLConnection { @@ -200,7 +201,23 @@ * Return the last modified date. */ public long getLastModified() { -return getHeaderFieldDate(ResourceAttributes.LAST_MODIFIED, 0); +if (!connected) { +// Try to connect (silently) +try { +connect(); +} catch (IOException e) { +} +} +Attribute lastModified = +attributes.get(ResourceAttributes.LAST_MODIFIED); +if (lastModified != null) { +try { +Date lmDate = (Date) lastModified.get(); +return lmDate.getTime(); +} catch (Exception e) { +} +} +return 0; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]