Author: funkman Date: Sat Sep 15 10:42:01 2007 New Revision: 575945 URL: http://svn.apache.org/viewvc?rev=575945&view=rev Log: undo 575332 (alias support) due to 2 vetos
Modified: tomcat/tc6.0.x/trunk/java/org/apache/naming/resources/FileDirContext.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/java/org/apache/naming/resources/FileDirContext.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/naming/resources/FileDirContext.java?rev=575945&r1=575944&r2=575945&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/naming/resources/FileDirContext.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/naming/resources/FileDirContext.java Sat Sep 15 10:42:01 2007 @@ -108,17 +108,6 @@ protected boolean allowLinking = false; - /** - * Aliases - */ - protected String aliases; - - - /** - * Aliases in decoded form. - */ - protected Alias[] pathAliases; - // ------------------------------------------------------------- Properties @@ -134,22 +123,22 @@ */ public void setDocBase(String docBase) { - // Validate the format of the proposed document root - if (docBase == null) - throw new IllegalArgumentException - (sm.getString("resources.null")); + // Validate the format of the proposed document root + if (docBase == null) + throw new IllegalArgumentException + (sm.getString("resources.null")); - // Calculate a File object referencing this document base directory - base = new File(docBase); + // Calculate a File object referencing this document base directory + base = new File(docBase); try { base = base.getCanonicalFile(); } catch (IOException e) { // Ignore } - // Validate that the document base is an existing directory - if (!base.exists() || !base.isDirectory() || !base.canRead()) - throw new IllegalArgumentException + // Validate that the document base is an existing directory + if (!base.exists() || !base.isDirectory() || !base.canRead()) + throw new IllegalArgumentException (sm.getString("fileResources.base", docBase)); this.absoluteBase = base.getAbsolutePath(); super.setDocBase(docBase); @@ -188,69 +177,18 @@ return allowLinking; } - /** - * Get the alias string in use. - */ - public String getAliases(String aliases) { - return aliases; - } + + // --------------------------------------------------------- Public Methods /** - * Set files system aliases. Aliases are of the form - * <pre>prefix=path,prefix2=path2</pre> - * For example: - * <pre> - * /images/=/tmp/images/, - * /pdf/=/usr/local/data/pdfs/ - * </pre> + * Release any resources allocated for this directory context. */ - public void setAliases(String aliases) { - this.aliases = aliases; - - pathAliases = null; - if (this.aliases!=null) { - this.aliases = this.aliases.trim(); - } - if (this.aliases==null||this.aliases.length()==0) { - this.aliases=null; - return; - } - - String[] split1 = this.aliases.split(","); - ArrayList aliasList = new ArrayList(); - for (int i=0; split1!=null && i<split1.length; i++) { - String[] kvp = split1[i].split("="); - if (kvp!=null&&kvp.length==2) { - kvp[0] = kvp[0].trim(); - kvp[1] = kvp[1].trim(); - - if (kvp[0].length()>0 && kvp[1].length()>0) { - Alias alias = new Alias(); - alias.prefix=kvp[0]; - alias.basePath= new File(kvp[1]); - alias.absPath=alias.basePath.getAbsolutePath(); - aliasList.add(alias); - } - } - } - - if (aliasList.size()>0) { - pathAliases = new Alias[aliasList.size()]; - for (int i=0; i<aliasList.size(); i++) { - pathAliases[i] = (Alias)aliasList.get(i); - } - } else { - this.aliases=null; - } + public void release() { + super.release(); } - // --------------------------------------------------------- Public Methods - - - - // -------------------------------------------------------- Context Methods @@ -335,20 +273,7 @@ throw new NamingException (sm.getString("resources.notFound", oldName)); - File baseDir = base; - String absoluteBaseDir = absoluteBase; - - if (pathAliases!=null) { - for (int i=0; i<pathAliases.length; i++) { - if (newName.startsWith(pathAliases[i].prefix)) { - baseDir = pathAliases[i].basePath; - newName = newName.substring(pathAliases[i].prefix.length()); - break; - } - } - } - - File newFile = new File(baseDir, newName); + File newFile = new File(base, newName); file.renameTo(newFile); @@ -570,19 +495,8 @@ throws NamingException { // Note: No custom attributes allowed - File baseDir = base; - - if (pathAliases!=null) { - for (int i=0; i<pathAliases.length; i++) { - if (name.startsWith(pathAliases[i].prefix)) { - baseDir = pathAliases[i].basePath; - name = name.substring(pathAliases[i].prefix.length()); - break; - } - } - } - File file = new File(baseDir, name); + File file = new File(base, name); if (file.exists()) throw new NameAlreadyBoundException (sm.getString("resources.alreadyBound", name)); @@ -616,19 +530,7 @@ // Note: No custom attributes allowed // Check obj type - File baseDir = base; - - if (pathAliases!=null) { - for (int i=0; i<pathAliases.length; i++) { - if (name.startsWith(pathAliases[i].prefix)) { - baseDir = pathAliases[i].basePath; - name = name.substring(pathAliases[i].prefix.length()); - break; - } - } - } - - File file = new File(baseDir, name); + File file = new File(base, name); InputStream is = null; if (obj instanceof Resource) { @@ -699,19 +601,7 @@ public DirContext createSubcontext(String name, Attributes attrs) throws NamingException { - File baseDir = base; - - if (pathAliases!=null) { - for (int i=0; i<pathAliases.length; i++) { - if (name.startsWith(pathAliases[i].prefix)) { - baseDir = pathAliases[i].basePath; - name = name.substring(pathAliases[i].prefix.length()); - break; - } - } - } - - File file = new File(baseDir, name); + File file = new File(base, name); if (file.exists()) throw new NameAlreadyBoundException (sm.getString("resources.alreadyBound", name)); @@ -875,46 +765,46 @@ */ protected String normalize(String path) { - String normalized = path; - - // Normalize the slashes and add leading slash if necessary - if (File.separatorChar == '\\' && normalized.indexOf('\\') >= 0) - normalized = normalized.replace('\\', '/'); - if (!normalized.startsWith("/")) - normalized = "/" + normalized; - - // Resolve occurrences of "//" in the normalized path - while (true) { - int index = normalized.indexOf("//"); - if (index < 0) - break; - normalized = normalized.substring(0, index) + - normalized.substring(index + 1); - } - - // Resolve occurrences of "/./" in the normalized path - while (true) { - int index = normalized.indexOf("/./"); - if (index < 0) - break; - normalized = normalized.substring(0, index) + - normalized.substring(index + 2); - } + String normalized = path; - // Resolve occurrences of "/../" in the normalized path - while (true) { - int index = normalized.indexOf("/../"); - if (index < 0) - break; - if (index == 0) - return (null); // Trying to go outside our context - int index2 = normalized.lastIndexOf('/', index - 1); - normalized = normalized.substring(0, index2) + - normalized.substring(index + 3); - } + // Normalize the slashes and add leading slash if necessary + if (File.separatorChar == '\\' && normalized.indexOf('\\') >= 0) + normalized = normalized.replace('\\', '/'); + if (!normalized.startsWith("/")) + normalized = "/" + normalized; + + // Resolve occurrences of "//" in the normalized path + while (true) { + int index = normalized.indexOf("//"); + if (index < 0) + break; + normalized = normalized.substring(0, index) + + normalized.substring(index + 1); + } + + // Resolve occurrences of "/./" in the normalized path + while (true) { + int index = normalized.indexOf("/./"); + if (index < 0) + break; + normalized = normalized.substring(0, index) + + normalized.substring(index + 2); + } + + // Resolve occurrences of "/../" in the normalized path + while (true) { + int index = normalized.indexOf("/../"); + if (index < 0) + break; + if (index == 0) + return (null); // Trying to go outside our context + int index2 = normalized.lastIndexOf('/', index - 1); + normalized = normalized.substring(0, index2) + + normalized.substring(index + 3); + } - // Return the normalized path that we have completed - return (normalized); + // Return the normalized path that we have completed + return (normalized); } @@ -928,27 +818,12 @@ */ protected File file(String name) { - File baseDir = base; - String absoluteBaseDir = absoluteBase; - - if (pathAliases!=null) { - for (int i=0; i<pathAliases.length; i++) { - if (name.startsWith(pathAliases[i].prefix)) { - baseDir = pathAliases[i].basePath; - absoluteBaseDir = pathAliases[i].absPath; - name = name.substring(pathAliases[i].prefix.length()); - break; - } - } - } - - File file = new File(baseDir, name); - + File file = new File(base, name); if (file.exists() && file.canRead()) { - if (allowLinking) - return file; - + if (allowLinking) + return file; + // Check that this file belongs to our root path String canPath = null; try { @@ -959,7 +834,7 @@ return null; // Check to see if going outside of the web application root - if (!canPath.startsWith(absoluteBaseDir)) { + if (!canPath.startsWith(absoluteBase)) { return null; } @@ -971,14 +846,14 @@ String absPath = normalize(fileAbsPath); if (canPath != null) canPath = normalize(canPath); - if ((absoluteBaseDir.length() < absPath.length()) - && (absoluteBaseDir.length() < canPath.length())) { - absPath = absPath.substring(absoluteBaseDir.length() + 1); + if ((absoluteBase.length() < absPath.length()) + && (absoluteBase.length() < canPath.length())) { + absPath = absPath.substring(absoluteBase.length() + 1); if ((canPath == null) || (absPath == null)) return null; if (absPath.equals("")) absPath = "/"; - canPath = canPath.substring(absoluteBaseDir.length() + 1); + canPath = canPath.substring(absoluteBase.length() + 1); if (canPath.equals("")) canPath = "/"; if (!canPath.equals(absPath)) @@ -1230,10 +1105,10 @@ return super.getResourceType(); } - + /** * Get canonical path. - * + * * @return String the file's canonical path */ public String getCanonicalPath() { @@ -1246,15 +1121,10 @@ } return canonicalPath; } - + } - protected class Alias { - String prefix; - File basePath; - String absPath; - } } Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=575945&r1=575944&r2=575945&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sat Sep 15 10:42:01 2007 @@ -97,9 +97,6 @@ In the APR connector, start accepting connections after fully starting the connector, to prevent possible exceptions due to non initialized fields. (remm) </fix> - <add> - Allow for aliases in FileDirContext. (funkman) - </add> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]