blob: f435a4901b989de0ccc7b75026552e78f3e0c531 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1997-2004 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package java.security;
27
28/**
29 * A GuardedObject is an object that is used to protect access to
30 * another object.
31 *
32 * <p>A GuardedObject encapsulates a target object and a Guard object,
33 * such that access to the target object is possible
34 * only if the Guard object allows it.
35 * Once an object is encapsulated by a GuardedObject,
36 * access to that object is controlled by the <code>getObject</code>
37 * method, which invokes the
38 * <code>checkGuard</code> method on the Guard object that is
39 * guarding access. If access is not allowed,
40 * an exception is thrown.
41 *
42 * @see Guard
43 * @see Permission
44 *
45 * @author Roland Schemers
46 * @author Li Gong
47 */
48
49public class GuardedObject implements java.io.Serializable {
50
51 private static final long serialVersionUID = -5240450096227834308L;
52
53 private Object object; // the object we are guarding
54 private Guard guard; // the guard
55
56 /**
57 * Constructs a GuardedObject using the specified object and guard.
58 * If the Guard object is null, then no restrictions will
59 * be placed on who can access the object.
60 *
61 * @param object the object to be guarded.
62 *
63 * @param guard the Guard object that guards access to the object.
64 */
65
66 public GuardedObject(Object object, Guard guard)
67 {
68 this.guard = guard;
69 this.object = object;
70 }
71
72 /**
73 * Retrieves the guarded object, or throws an exception if access
74 * to the guarded object is denied by the guard.
75 *
76 * @return the guarded object.
77 *
78 * @exception SecurityException if access to the guarded object is
79 * denied.
80 */
81 public Object getObject()
82 throws SecurityException
83 {
84 if (guard != null)
85 guard.checkGuard(object);
86
87 return object;
88 }
89
90 /**
91 * Writes this object out to a stream (i.e., serializes it).
92 * We check the guard if there is one.
93 */
94 private void writeObject(java.io.ObjectOutputStream oos)
95 throws java.io.IOException
96 {
97 if (guard != null)
98 guard.checkGuard(object);
99
100 oos.defaultWriteObject();
101 }
102}