History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/security/AllPermission.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/security/AllPermission.java+237−0
@@ -0,0 +1,237 @@
1+/*
2+ * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+package java.security;
27+
28+import java.security.*;
29+import java.util.Enumeration;
30+import java.util.Hashtable;
31+import java.util.StringTokenizer;
32+import sun.security.util.SecurityConstants;
33+
34+/**
35+ * The AllPermission is a permission that implies all other permissions.
36+ * <p>
37+ * <b>Note:</b> Granting AllPermission should be done with extreme care,
38+ * as it implies all other permissions. Thus, it grants code the ability
39+ * to run with security
40+ * disabled. Extreme caution should be taken before granting such
41+ * a permission to code. This permission should be used only during testing,
42+ * or in extremely rare cases where an application or applet is
43+ * completely trusted and adding the necessary permissions to the policy
44+ * is prohibitively cumbersome.
45+ *
46+ * @see java.security.Permission
47+ * @see java.security.AccessController
48+ * @see java.security.Permissions
49+ * @see java.security.PermissionCollection
50+ * @see java.lang.SecurityManager
51+ *
52+ *
53+ * @author Roland Schemers
54+ *
55+ * @serial exclude
56+ */
57+
58+public final class AllPermission extends Permission {
59+
60+ private static final long serialVersionUID = -2916474571451318075L;
61+
62+ /**
63+ * Creates a new AllPermission object.
64+ */
65+
66+ public AllPermission()
67+ {
68+ super("<all permissions>");
69+ }
70+
71+
72+ /**
73+ * Creates a new AllPermission object. This
74+ * constructor exists for use by the <code>Policy</code> object
75+ * to instantiate new Permission objects.
76+ *
77+ * @param name ignored
78+ * @param actions ignored.
79+ */
80+ public AllPermission(String name, String actions)
81+ {
82+ this();
83+ }
84+
85+ /**
86+ * Checks if the specified permission is "implied" by
87+ * this object. This method always returns true.
88+ *
89+ * @param p the permission to check against.
90+ *
91+ * @return return
92+ */
93+ public boolean implies(Permission p) {
94+ return true;
95+ }
96+
97+ /**
98+ * Checks two AllPermission objects for equality. Two AllPermission
99+ * objects are always equal.
100+ *
101+ * @param obj the object we are testing for equality with this object.
102+ * @return true if <i>obj</i> is an AllPermission, false otherwise.
103+ */
104+ public boolean equals(Object obj) {
105+ return (obj instanceof AllPermission);
106+ }
107+
108+ /**
109+ * Returns the hash code value for this object.
110+ *
111+ * @return a hash code value for this object.
112+ */
113+
114+ public int hashCode() {
115+ return 1;
116+ }
117+
118+ /**
119+ * Returns the canonical string representation of the actions.
120+ *
121+ * @return the actions.
122+ */
123+ public String getActions()
124+ {
125+ return "<all actions>";
126+ }
127+
128+ /**
129+ * Returns a new PermissionCollection object for storing AllPermission
130+ * objects.
131+ * <p>
132+ *
133+ * @return a new PermissionCollection object suitable for
134+ * storing AllPermissions.
135+ */
136+
137+ public PermissionCollection newPermissionCollection() {
138+ return new AllPermissionCollection();
139+ }
140+
141+}
142+
143+/**
144+ * A AllPermissionCollection stores a collection
145+ * of AllPermission permissions. AllPermission objects
146+ * must be stored in a manner that allows them to be inserted in any
147+ * order, but enable the implies function to evaluate the implies
148+ * method in an efficient (and consistent) manner.
149+ *
150+ * @see java.security.Permission
151+ * @see java.security.Permissions
152+ *
153+ *
154+ * @author Roland Schemers
155+ *
156+ * @serial include
157+ */
158+
159+final class AllPermissionCollection
160+extends PermissionCollection
161+implements java.io.Serializable
162+{
163+
164+ // use serialVersionUID from JDK 1.2.2 for interoperability
165+ private static final long serialVersionUID = -4023755556366636806L;
166+
167+ private boolean all_allowed; // true if any all permissions have been added
168+
169+ /**
170+ * Create an empty AllPermissions object.
171+ *
172+ */
173+
174+ public AllPermissionCollection() {
175+ all_allowed = false;
176+ }
177+
178+ /**
179+ * Adds a permission to the AllPermissions. The key for the hash is
180+ * permission.path.
181+ *
182+ * @param permission the Permission object to add.
183+ *
184+ * @exception IllegalArgumentException - if the permission is not a
185+ * AllPermission
186+ *
187+ * @exception SecurityException - if this AllPermissionCollection object
188+ * has been marked readonly
189+ */
190+
191+ public void add(Permission permission)
192+ {
193+ if (! (permission instanceof AllPermission))
194+ throw new IllegalArgumentException("invalid permission: "+
195+ permission);
196+ if (isReadOnly())
197+ throw new SecurityException("attempt to add a Permission to a readonly PermissionCollection");
198+
199+ all_allowed = true; // No sync; staleness OK
200+ }
201+
202+ /**
203+ * Check and see if this set of permissions implies the permissions
204+ * expressed in "permission".
205+ *
206+ * @param p the Permission object to compare
207+ *
208+ * @return always returns true.
209+ */
210+
211+ public boolean implies(Permission permission)
212+ {
213+ return all_allowed; // No sync; staleness OK
214+ }
215+
216+ /**
217+ * Returns an enumeration of all the AllPermission objects in the
218+ * container.
219+ *
220+ * @return an enumeration of all the AllPermission objects.
221+ */
222+ public Enumeration<Permission> elements()
223+ {
224+ return new Enumeration<Permission>() {
225+ private boolean hasMore = all_allowed;
226+
227+ public boolean hasMoreElements() {
228+ return hasMore;
229+ }
230+
231+ public Permission nextElement() {
232+ hasMore = false;
233+ return SecurityConstants.ALL_PERMISSION;
234+ }
235+ };
236+ }
237+}