diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 2000-05-19 17:55:34 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-05-19 17:55:34 +0000 |
commit | 6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef (patch) | |
tree | 88cf0d32aea197ea8e8198e1206b04c820308615 /libjava/java/security/PermissionCollection.java | |
parent | 021c89ed68c151c45021fccf1bb5338ee817314c (diff) | |
download | gcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.zip gcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.tar.gz gcc-6c80c45e3010bfe992b41dd8800d2c4b65e0d5ef.tar.bz2 |
Jumbo patch:
* Imported beans and serialization
* Updated IA-64 port
* Miscellaneous bug fixes
From-SVN: r34028
Diffstat (limited to 'libjava/java/security/PermissionCollection.java')
-rw-r--r-- | libjava/java/security/PermissionCollection.java | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/libjava/java/security/PermissionCollection.java b/libjava/java/security/PermissionCollection.java new file mode 100644 index 0000000..08a9c49 --- /dev/null +++ b/libjava/java/security/PermissionCollection.java @@ -0,0 +1,207 @@ +/* PermissionCollection.java -- A collection of permission objects + Copyright (C) 1998 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ + + +package java.security; + +import java.io.Serializable; +import java.util.Enumeration; + +/** + * This class models a group of Java permissions. It has convenient + * methods for determining whether or not a given permission is implied + * by any of the permissions in this collection. + * <p> + * Some care must be taken in storing permissions. First, a collection of + * the appropriate type must be created. This is done by calling the + * <code>newPermissionCollection</code> method on an object of the + * permission class you wish to add to the collection. If this method + * returns <code>null</code>, any type of <code>PermissionCollection</code> + * can be used to store permissions of that type. However, if a + * <code>PermissionCollection</code> collection object is returned, that + * type must be used. + * <p> + * The <code>PermissionCollection</code>'s returned + * by the <code>newPermissionCollection</code> instance in a subclass of + * <code>Permission</code> is a homogeneous collection. It only will + * hold permissions of one specified type - instances of the class that + * created it. Not all <code>PermissionCollection</code> subclasses + * have to hold permissions of only one type however. For example, + * the <code>Permissions</code> class holds permissions of many types. + * <p> + * Since the <code>newPermissionCollection</code> in <code>Permission</code> + * itself returns <code>null</code>, by default a permission can be stored + * in any type of collection unless it overrides that method to create its + * own collection type. + * + * @version 0.0 + * + * @author Aaron M. Renn (arenn@urbanophile.com) + */ +public abstract class PermissionCollection extends Object implements Serializable +{ + +/*************************************************************************/ + +/* + * Class Variables + */ + +public static final String linesep = null; + +static +{ + String linesep = System.getProperty("line.separator"); + if (linesep == null); + linesep = "\n"; +} + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * Indicates whether or not this collection is read only. + */ +private boolean readOnly; + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * This method initializes a new instance of <code>PermissionCollection</code>. + * This is provided only as a default constructor and does nothing in this + * class. + */ +public +PermissionCollection() +{ + ; +} + +/*************************************************************************/ + +/* + * Instance Methods + */ + +/** + * This method tests whether or not this <code>PermissionCollection</code> + * object is read only. + * + * @return <code>true</code> if this collection is read only, <code>false</code> otherwise + */ +public boolean +isReadOnly() +{ + return(readOnly); +} + +/*************************************************************************/ + +/** + * This method sets this <code>PermissionCollection</code> object to be + * read only. No further permissions can be added to it after calling this + * method. + */ +public void +setReadOnly() +{ + readOnly = true; +} + +/*************************************************************************/ + +/** + * This method adds a new <code>Permission</code> object to the collection. + * + * @param perm The <code>Permission</code> to add. + * + * @exception SecurityException If the collection is marked read only. + * @exception IllegalArgumentException If a permission of the specified type cannot be added + */ +public abstract void +add(Permission perm) throws SecurityException, IllegalArgumentException; + +/*************************************************************************/ + +/** + * This method returns an <code>Enumeration</code> of all the objects in + * this collection. + * + * @return An <code>Enumeration</code> of this collection's objects. + */ +public abstract Enumeration +elements(); + +/*************************************************************************/ + +/** + * This method tests whether the specified <code>Permission</code> object is + * implied by this collection of <code>Permission</code> objects. + * + * @param perm The <code>Permission</code> object to test. + * + * @return <code>true</code> if the specified <code>Permission</code> is implied by this collection, <code>false</code> otherwise. + */ +public abstract boolean +implies(Permission perm); + +/*************************************************************************/ + +/** + * This method returns a <code>String</code> representation of this + * collection. It will print the class name and has code in the same + * manner as <code>Object.toString()</code> then print a listing of all + * the <code>Permission</code> objects contained. + * + * @return A <code>String</code> representing this object. + */ +public String +toString() +{ + StringBuffer sb = new StringBuffer(""); + + sb.append(super.toString() + " (" + linesep); + Enumeration e = elements(); + while (e.hasMoreElements()) + { + Object obj = e.nextElement(); + if (obj instanceof Permission) + sb.append(((Permission)obj).toString() + linesep); + } + + sb.append(")" + linesep); + return(sb.toString()); +} + +} // class PermissionCollection + |