diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-06 23:07:45 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-06 23:07:45 +0000 |
commit | 1cc7087d4e377a9a6e2e94170b2ee7749e079a7a (patch) | |
tree | 58a510c6153b3349ed1740e17ae4efa5f1885424 /libjava/java/io | |
parent | 3e6716343e69622f4a0b3a15cf23c93249b4ea2b (diff) | |
download | gcc-1cc7087d4e377a9a6e2e94170b2ee7749e079a7a.tar.gz |
* java/io/FilePermission.java: Reindented.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90201 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/io')
-rw-r--r-- | libjava/java/io/FilePermission.java | 308 |
1 files changed, 146 insertions, 162 deletions
diff --git a/libjava/java/io/FilePermission.java b/libjava/java/io/FilePermission.java index 7d86c292dad..9151bf66964 100644 --- a/libjava/java/io/FilePermission.java +++ b/libjava/java/io/FilePermission.java @@ -46,50 +46,51 @@ public final class FilePermission extends Permission implements Serializable private static final String CURRENT_DIRECTORY = System.getProperty("user.dir"); + private boolean readPerm = false; private boolean writePerm = false; private boolean executePerm = false; private boolean deletePerm = false; private final String actionsString; - + // Checks and caches the actions private void checkPerms() throws IllegalArgumentException { String action; int i = actionsString.indexOf(','); int startI = 0; - while(i != -1) + while (i != -1) { - action = actionsString.substring(startI,i).trim().toLowerCase(); - if(action.equals("read")) + action = actionsString.substring(startI, i).trim().toLowerCase(); + if (action.equals("read")) readPerm = true; - else if(action.equals("write")) + else if (action.equals("write")) writePerm = true; - else if(action.equals("execute")) + else if (action.equals("execute")) executePerm = true; - else if(action.equals("delete")) + else if (action.equals("delete")) deletePerm = true; else throw new IllegalArgumentException("Unknown action: " + action); - startI = i+1; - i = actionsString.indexOf(',',startI); + startI = i + 1; + i = actionsString.indexOf(',', startI); } - + action = actionsString.substring(startI).trim().toLowerCase(); - if(action.equals("read")) + if (action.equals("read")) readPerm = true; - else if(action.equals("write")) + else if (action.equals("write")) writePerm = true; - else if(action.equals("execute")) + else if (action.equals("execute")) executePerm = true; - else if(action.equals("delete")) + 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 @@ -97,11 +98,10 @@ public final class FilePermission extends Permission implements Serializable * @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) { + // FIXME: what to do when the file string is malformed? super(pathExpression); if (pathExpression == null) throw new NullPointerException("pathExpression"); @@ -111,195 +111,179 @@ public final class FilePermission extends Permission implements Serializable checkPerms(); } - /** Get the actions this FilePermission supports. - ** @return the String representing the actions this FilePermission supports. - **/ + /** + * Get the actions this FilePermission supports. + * @return the String representing the actions this FilePermission supports. + */ public String getActions() { return actionsString; } - - /** Get the hash code for this Object.<P> - ** FilePermission's hash code is calculated as the exclusive or of the - ** target - ** String's hash code and the action String's hash code. - ** @specnote Sun did not specify how to calculate the hash code; - ** I made this up. - ** @return the hash code for this Object. - **/ + + /** + * Get the hash code for this Object.<P> + * FilePermission's hash code is calculated as the exclusive or of the + * target + * String's hash code and the action String's hash code. + * @specnote Sun did not specify how to calculate the hash code; + * I made this up. + * @return the hash code for this Object. + */ public int hashCode() { return getName().hashCode() ^ actionsString.hashCode(); } - - /** Check two FilePermissions for semantic equality. - ** Two FilePermissions are exactly equivalent if they have identical path - ** expressions and have exactly the same access permissions. - ** @param o the Object to compare to. - ** @return whether the Objects are semantically equivalent. - **/ + + /** + * Check two FilePermissions for semantic equality. + * Two FilePermissions are exactly equivalent if they have identical path + * expressions and have exactly the same access permissions. + * @param o the Object to compare to. + * @return whether the Objects are semantically equivalent. + */ public boolean equals(Object o) { - if(!(o instanceof FilePermission)) + if (! (o instanceof FilePermission)) return false; - FilePermission p = (FilePermission)o; - + FilePermission p = (FilePermission) o; + String f1 = getName(); String f2 = p.getName(); - /* Compare names, taking into account if they refer to a - * directory and one has a separator and the other does not. - */ - if(f1.length() > 0 && f1.charAt(f1.length() - 1) == File.separatorChar) + // Compare names, taking into account if they refer to a directory + // and one has a separator and the other does not. + if (f1.length() > 0 && f1.charAt(f1.length() - 1) == File.separatorChar) { - if(f2.length() > 0 - && f2.charAt(f2.length() - 1) == File.separatorChar) + if (f2.length() > 0 + && f2.charAt(f2.length() - 1) == File.separatorChar) { - if(!f2.equals(f1)) + if (! f2.equals(f1)) return false; - } - else + } + else { - if(!f2.equals(f1.substring(0,f1.length()-1))) + if (! f2.equals(f1.substring(0, f1.length() - 1))) return false; } - } - else + } + else { - if(f2.length() > 0 - && f2.charAt(f2.length() - 1) == File.separatorChar) + if (f2.length() > 0 + && f2.charAt(f2.length() - 1) == File.separatorChar) { - if(!f1.equals(f2.substring(0,f2.length()-1))) + if (! f1.equals(f2.substring(0, f2.length() - 1))) return false; - } - else + } + else { - if(!f1.equals(f2)) + if (! f1.equals(f2)) return false; } - } - return readPerm == p.readPerm && writePerm == p.writePerm && executePerm == p.executePerm && deletePerm == p.deletePerm; + } + return (readPerm == p.readPerm + && writePerm == p.writePerm + && executePerm == p.executePerm + && deletePerm == p.deletePerm); } - - /** Check to see if this permission implies another. - ** Permission A implies permission B if these things are all true: - ** <OL> - ** <LI>A and B are both FilePermissions.</LI> - ** <LI>All possible files in B are included in A - ** (possibly more are in A).</LI> - ** <LI>All actions B supports, A also supports.</LI> - ** </OL> - ** @param p the Permission to compare against. - ** @return whether this Permission implies p - **/ + + /** + * Check to see if this permission implies another. + * Permission A implies permission B if these things are all true: + * <OL> + * <LI>A and B are both FilePermissions.</LI> + * <LI>All possible files in B are included in A + * (possibly more are in A).</LI> + * <LI>All actions B supports, A also supports.</LI> + * </OL> + * @param p the Permission to compare against. + * @return whether this Permission implies p + */ public boolean implies(Permission p) { FilePermission fp; - - if(!(p instanceof FilePermission)) + + if (! (p instanceof FilePermission)) return false; - - fp = (FilePermission)p; - + + fp = (FilePermission) p; + String f1 = getName(); String f2 = fp.getName(); - - if(f1.charAt(0) != File.separatorChar) - { - f1 = CURRENT_DIRECTORY + f1; - } - if(f2.charAt(0) != File.separatorChar) - { - f2 = CURRENT_DIRECTORY + f2; - } - + + if (f1.charAt(0) != File.separatorChar) + f1 = CURRENT_DIRECTORY + f1; + if (f2.charAt(0) != File.separatorChar) + f2 = CURRENT_DIRECTORY + f2; + String sub1; - - switch(f1.charAt(f1.length() - 1)) + + switch (f1.charAt(f1.length() - 1)) { - case '*': - sub1 = f1.substring(0,f1.length() - 1); // chop off "*" - if(f2.length() <= sub1.length()) - { - /* If it's smaller, there is no way it could be part of this - * directory. - * If it's the same (or length - 1), it could be the same - * directory but - * specifies access to the directory rather than the files in it. - */ - return false; - } - else if(f2.charAt(sub1.length() - 1) == File.separatorChar) - { - /* Make sure the part before the "/" is the same */ - if(!f2.substring(0,sub1.length()).equals(sub1)) - return false; - /* Make sure there are no subdirectories specified - underneath this one */ - if(f2.substring(sub1.length()+1).indexOf(File.separatorChar) - != -1) - return false; - } - else - { - /* Obviously not equal: f2 is either not a directory or is not - * the same directory (its name continues further than we want) - */ - return false; - } - break; - case '-': - sub1 = f1.substring(0,f1.length() - 2); // chop off "/-" - if(f2.length() < sub1.length()) - { - /* If it's smaller, there is no way it could be part of - * this directory. */ + case '*': + sub1 = f1.substring(0, f1.length() - 1); // chop off "*" + if (f2.length() <= sub1.length()) + { + // If it's smaller, there is no way it could be part of + // this directory. If it's the same (or length - 1), it + // could be the same directory but specifies access to + // the directory rather than the files in it. + return false; + } + else if (f2.charAt(sub1.length() - 1) == File.separatorChar) + { + // Make sure the part before the "/" is the same. + if (! f2.substring(0, sub1.length()).equals(sub1)) return false; - } - else if(f2.length() > sub1.length() && f2.charAt(sub1.length()) - != File.separatorChar) - { + // Make sure there are no subdirectories specified + // underneath this one. + if (f2.substring(sub1.length() + 1).indexOf(File.separatorChar) + != -1) return false; - - } - else if(!f2.substring(0,sub1.length()).equals(sub1)) + } + else + { + // Obviously not equal: f2 is either not a directory or + // is not the same directory (its name continues further + // than we want). + return false; + } + break; + case '-': + // Chop off "/-". + sub1 = f1.substring(0, f1.length() - 2); + if (f2.length() < sub1.length()) + { + // If it's smaller, there is no way it could be part of + // this directory. return false; - break; -/* Looks redundant with default case and won't compile anyway - arenn - case File.separatorChar: - if(f2.charAt(f2.length()) == File.separatorChar) { - if(!f2.equals(f1)) + } + else if (f2.length() > sub1.length() + && f2.charAt(sub1.length()) != File.separatorChar) return false; - } else { - if(!f2.equals(f1.substring(0,f1.length()-1))) + else if (! f2.substring(0, sub1.length()).equals(sub1)) return false; + break; + + default: + if (f2.charAt(f2.length() - 1) == File.separatorChar) + { + if (! f1.equals(f2.substring(0, f2.length() - 1))) + return false; + } + else if (!f1.equals(f2)) + return false; + break; } - break; -*/ - default: - if(f2.charAt(f2.length() - 1) == File.separatorChar) - { - if(!f1.equals(f2.substring(0,f2.length() - 1))) - return false; - } - else - { - if(!f1.equals(f2)) - return false; - } - break; - } - - if(readPerm && !fp.readPerm) + + if (readPerm && ! fp.readPerm) return false; - if(writePerm && !fp.writePerm) + if (writePerm && ! fp.writePerm) return false; - if(executePerm && !fp.executePerm) + if (executePerm && ! fp.executePerm) return false; - if(deletePerm && !fp.deletePerm) + if (deletePerm && ! fp.deletePerm) return false; return true; } -} // class FilePermission - +} |