001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /**
019: * @author Alexey V. Varlamov
020: * @version $Revision$
021: */package java.security;
022:
023: import java.io.Serializable;
024: import java.util.ArrayList;
025: import java.util.Enumeration;
026: import java.util.List;
027:
028: /**
029: * Abstract superclass of classes which are collections of Permission objects.
030: *
031: */
032: public abstract class PermissionCollection implements Serializable {
033:
034: /**
035: * @com.intel.drl.spec_ref
036: */
037: private static final long serialVersionUID = -6727011328946861783L;
038:
039: /**
040: * @com.intel.drl.spec_ref
041: */
042: private boolean readOnly; // = false;
043:
044: /**
045: * Adds the argument to the collection.
046: *
047: *
048: * @param permission
049: * java.security.Permission the permission to add to the
050: * collection.
051: * @exception IllegalStateException
052: * if the collection is read only.
053: */
054: public abstract void add(Permission permission);
055:
056: /**
057: * Answers an enumeration of the permissions in the receiver.
058: *
059: *
060: * @return Enumeration the permissions in the receiver.
061: */
062: public abstract Enumeration<Permission> elements();
063:
064: /**
065: * Indicates whether the argument permission is implied by the permissions
066: * contained in the receiver.
067: *
068: *
069: * @return boolean <code>true</code> if the argument permission is implied
070: * by the permissions in the receiver, and <code>false</code> if
071: * it is not.
072: * @param permission
073: * java.security.Permission the permission to check
074: */
075: public abstract boolean implies(Permission permission);
076:
077: /**
078: * Indicates whether new permissions can be added to the receiver.
079: *
080: *
081: * @return boolean <code>true</code> if the receiver is read only
082: * <code>false</code> if new elements can still be added to the
083: * receiver.
084: */
085: public boolean isReadOnly() {
086: return readOnly;
087: }
088:
089: /**
090: * Marks the receiver as read only, so that no new permissions can be added
091: * to it.
092: *
093: */
094: public void setReadOnly() {
095: readOnly = true;
096: }
097:
098: /**
099: * Answers a string containing a concise, human-readable description of the
100: * receiver.
101: *
102: *
103: * @return a printable representation for the receiver.
104: */
105: public String toString() {
106: List elist = new ArrayList(100);
107: Enumeration elenum = elements();
108: String super Str = super .toString();
109: int totalLength = super Str.length() + 5;
110: if (elenum != null) {
111: while (elenum.hasMoreElements()) {
112: String el = elenum.nextElement().toString();
113: totalLength += el.length();
114: elist.add(el);
115: }
116: }
117: int esize = elist.size();
118: totalLength += esize * 4;
119: //FIXME StringBuffer --> StringBuilder
120: StringBuffer result = new StringBuffer(totalLength).append(
121: super Str).append(" ("); //$NON-NLS-1$
122: for (int i = 0; i < esize; i++) {
123: result.append("\n ").append(elist.get(i).toString()); //$NON-NLS-1$
124: }
125: return result.append("\n)\n").toString(); //$NON-NLS-1$
126: }
127: }
|