FilePermission.java (usingPerms): Removed.
authorMark Wielaard <mark@klomp.org>
Sun, 27 Jun 2004 19:42:19 +0000 (19:42 +0000)
committerMark Wielaard <mark@gcc.gnu.org>
Sun, 27 Jun 2004 19:42:19 +0000 (19:42 +0000)
       * java/io/FilePermission.java (usingPerms): Removed.
       (actionsString): Made final.
       (cachePerms): Renamed to checkPerms.
       (checkPerms): Renamed from cachePerms. Call trim() and toLowerCase()
       on action String.
       (FilePermission): Check arguments, call checkPerms().
       (equals): Remove cachePerms() call.
       (implies): Likewise.

From-SVN: r83743

libjava/ChangeLog
libjava/java/io/FilePermission.java

index ae95f7b034a34065d60c75c0a1a7418a83bf4f3c..5f4565cb24ccd2355ddadf27276f914aad0ed3e5 100644 (file)
@@ -1,3 +1,14 @@
+2004-06-27 Mark Wielaard  <mark@klomp.org>
+
+       * java/io/FilePermission.java (usingPerms): Removed.
+       (actionsString): Made final.
+       (cachePerms): Renamed to checkPerms.
+       (checkPerms): Renamed from cachePerms. Call trim() and toLowerCase()
+       on action String.
+       (FilePermission): Check arguments, call checkPerms().
+       (equals): Remove cachePerms() call.
+       (implies): Likewise.
+
 2004-06-27  Mark Wielaard  <mark@klomp.org>
 
        * gnu/java/net/protocol/http/Connection.java (userAgent): New static
index c34a2ecf9b2b8ed4b7cd5f3df9047d049878efcd..7d86c292dad82c61db93679269d73b934feff97d 100644 (file)
@@ -1,5 +1,5 @@
 /* java.lang.FilePermission
-   Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -46,23 +46,21 @@ public final class FilePermission extends Permission implements Serializable
 
   private static final String CURRENT_DIRECTORY = 
     System.getProperty("user.dir");
-  private boolean usingPerms = false;
   private boolean readPerm = false;
   private boolean writePerm = false;
   private boolean executePerm = false;
   private boolean deletePerm = false;
-  private String actionsString;
+  private final String actionsString;
   
-  private void cachePerms() 
+  // Checks and caches the actions
+  private void checkPerms() throws IllegalArgumentException
   {
-    // While race conditions could occur, they don't matter at all.
-    
     String action;
     int i = actionsString.indexOf(',');
     int startI = 0;
     while(i != -1) 
       {
-        action = actionsString.substring(startI,i);
+        action = actionsString.substring(startI,i).trim().toLowerCase();
         if(action.equals("read"))
           readPerm = true;
         else if(action.equals("write"))
@@ -71,12 +69,14 @@ public final class FilePermission extends Permission implements Serializable
           executePerm = true;
         else if(action.equals("delete"))
           deletePerm = true;
+       else
+         throw new IllegalArgumentException("Unknown action: " + action);
       
         startI = i+1;
         i = actionsString.indexOf(',',startI);
       }
     
-    action = actionsString.substring(startI);
+    action = actionsString.substring(startI).trim().toLowerCase();
     if(action.equals("read"))
       readPerm = true;
     else if(action.equals("write"))
@@ -85,19 +85,30 @@ public final class FilePermission extends Permission implements Serializable
       executePerm = true;
     else if(action.equals("delete"))
       deletePerm = true;
+    else
+      throw new IllegalArgumentException("Unknown action: " + action);
   }
   
-  /** Create a new FilePermission.
-   ** @param pathExpression an expression specifying the paths this
-   **        permission represents.
-   ** @param actionsString a comma-separated list of the actions this
-   **        permission represents.
-   ** FIXME: what to do when the file string is malformed?
-   **/
+  /*
+   * Create a new FilePermission.
+   *
+   * @param pathExpression an expression specifying the paths this
+   *        permission represents.
+   * @param actionsString a comma-separated list of the actions this
+   *        permission represents. The actions must be "read", "write",
+   *        "execute" and/or "delete".
+   *
+   * FIXME: what to do when the file string is malformed?
+   */
   public FilePermission(String pathExpression, String actionsString) 
   {
     super(pathExpression);
+    if (pathExpression == null)
+      throw new NullPointerException("pathExpression");
+    if (actionsString == null)
+      throw new IllegalArgumentException("actionsString");
     this.actionsString = actionsString;
+    checkPerms();
   }
   
   /** Get the actions this FilePermission supports.
@@ -132,10 +143,6 @@ public final class FilePermission extends Permission implements Serializable
     if(!(o instanceof FilePermission))
       return false;
     FilePermission p = (FilePermission)o;
-    if(!usingPerms)
-      cachePerms();
-    if(!p.usingPerms)
-      p.cachePerms();
     
     String f1 = getName();
     String f2 = p.getName();
@@ -283,11 +290,6 @@ public final class FilePermission extends Permission implements Serializable
          break;
       }
     
-    if(!usingPerms)
-      cachePerms();
-    if(!fp.usingPerms)
-      fp.cachePerms();
-    
     if(readPerm && !fp.readPerm)
       return false;
     if(writePerm && !fp.writePerm)