More error checking
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 12 Jun 2009 16:45:34 +0000 (16:45 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 12 Jun 2009 16:45:34 +0000 (16:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@784188 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/naming/resources/BaseDirContext.java
java/org/apache/naming/resources/LocalStrings.properties

index 6258618..3b6f9d0 100644 (file)
@@ -202,12 +202,20 @@ public abstract class BaseDirContext implements DirContext {
             if (kv.length != 2 || kv[0].length() == 0 || kv[1].length() == 0)
                 throw new IllegalArgumentException(
                         sm.getString("resources.invalidAliasMapping", kvp));
-            
+
+            File aliasLoc = new File(kv[1]);
+            if (!aliasLoc.exists()) {
+                throw new IllegalArgumentException(
+                        sm.getString("resources.invalidAliasNotExist", kv[1]));
+            }
             BaseDirContext context;
-            if (kv[1].endsWith(".war") && !(new File(kv[1]).isDirectory())) {
+            if (kv[1].endsWith(".war") && !(aliasLoc.isDirectory())) {
                 context = new WARDirContext();
-            } else {
+            } else if (aliasLoc.isDirectory()) {
                 context = new FileDirContext();
+            } else {
+                throw new IllegalArgumentException(
+                        sm.getString("resources.invalidAliasFile", kv[1]));
             }
             context.setDocBase(kv[1]);
             addAlias(kv[0], context);
index 51aceeb..a586441 100644 (file)
@@ -30,6 +30,8 @@ resources.bindFailed=Bind failed: {0}
 resources.unbindFailed=Unbind failed: {0}
 resources.invalidAliasPath=The alias path ''{0}'' must start with ''/''
 resources.invalidAliasMapping=The alias mapping ''{0}'' is not valid
+resources.invalidAliasNotExist=The alias location ''{0}'' does not exist
+resources.invalidAliasFile=The alias location ''{0}'' points to a file that is not a WAR file
 standardResources.alreadyStarted=Resources has already been started
 standardResources.directory=File base {0} is not a directory
 standardResources.exists=File base {0} does not exist