View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software 
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License.
16   */
17  
18  package javax.jdo.spi;
19  
20  /**
21   * The <code>JDOPermission</code> class is for operations that are reserved for 
22   * JDO implementations and should not be called by other code.  A
23   * <code>JDOPermission</code> is a <em>named permission</em> and has no
24   * actions.  There are two names currently defined.  Each named permission
25   * has a corresponding public static final field which contains an instance
26   * of the named permission.
27   * <P>
28   * The following table
29   * provides a summary description of what each named permission allows,
30   * and discusses the risks of granting code the permission.
31   * <P>
32   *
33   * <table border=1 cellpadding=5>
34   * <tr>
35   * <th>Permission Target Name</th>
36   * <th>What the Permission Allows</th>
37   * <th>Risks of Allowing this Permission</th>
38   * </tr>
39   *
40   * <tr>
41   *   <td><code>setStateManager</code></td>
42   *   <td>This allows setting the <code>StateManager</code> for an instance of 
43   *   <code>PersistenceCapable</code>. The <code>StateManager</code>
44   *   has unlimited access to get and set persistent and transactional fields of
45   *   the <code>PersistenceCapable</code> instance.</td>
46   *   <td>This is dangerous in that information (possibly confidential) 
47   *   normally unavailable would be accessible to malicious code.</td>
48   * </tr>
49   *
50   * <tr>
51   *   <td><code>getMetadata</code></td>
52   *   <td>This allows getting metadata for any <code>PersistenceCapable</code> 
53   *   class that has registered with <code>JDOImplHelper</code>.</td>
54   *   <td>This is dangerous in that metadata information (possibly confidential) 
55   *   normally unavailable would be accessible to malicious code.</td>
56   * </tr>
57   *
58   * <tr>
59   *   <td><code>manageMetadata</code></td>
60   *   <td>This allows managing metadata for any <code>PersistenceCapable</code> 
61   *   class that has registered with <code>JDOImplHelper</code>.</td>
62   *   <td>This is dangerous in that metadata information (possibly confidential) 
63   *   normally unavailable would be manageable (modifiable) by malicious code.
64   *   </td>
65   * </tr>
66   *
67   * <tr>
68   *   <td><code>closePersistenceManagerFactory</code></td>
69   *   <td>This allows closing a <code>PersistenceManagerFactory</code>,
70   *       thereby releasing resources.</td> 
71   *   <td>This is dangerous in that resources bound to the
72   *       <code>PersistenceManagerFactory</code> would be releaseable by
73   *       malicious code.</td>  
74   * </tr>
75   *
76   * </table>
77   *
78   * @see java.security.Permission
79   * @see java.security.BasicPermission
80   * @see javax.jdo.spi.JDOImplHelper
81   * @see javax.jdo.spi.PersistenceCapable
82   * @version 1.0.2
83   */
84  public final
85  class JDOPermission extends java.security.BasicPermission {
86      
87      /**
88       * Constructs a <code>JDOPermission</code> with the specified name.
89       *
90       * @param name the name of the <code>JDOPermission</code>
91       */
92      public JDOPermission(String name) {
93          super(name);
94      }
95  
96      /**
97       * Constructs a <code>JDOPermission</code> with the specified name and 
98       * actions.  The actions should be <code>null</code>; they are ignored. 
99       * This constructor exists for use by the <code>Policy</code> object
100      * to instantiate new <code>Permission</code> objects.
101      *
102      * @param name the name of the <code>JDOPermission</code>
103      * @param actions should be <code>null</code>.
104      */
105     public JDOPermission(String name, String actions) {
106         super(name, actions);
107     }
108 
109     /** An instance of <code>JDOPermission</code> to be used for
110      * <code>getMetadata</code> permission checking.
111      */
112     public final static JDOPermission GET_METADATA = 
113         new JDOPermission("getMetadata"); // NOI18N
114     
115     /** An instance of <code>JDOPermission</code> to be used for
116      * <code>manageMetadata</code> permission checking.
117      * @since 1.0.2
118      */
119     public final static JDOPermission MANAGE_METADATA = 
120         new JDOPermission("manageMetadata"); // NOI18N
121     
122     /** An instance of <code>JDOPermission</code> to be used for
123      * <code>setStateManager</code> permission checking.
124      */
125     public final static JDOPermission SET_STATE_MANAGER = 
126         new JDOPermission("setStateManager"); // NOI18N
127     
128     /** An instance of <code>JDOPermission</code> to be used for
129      * <code>closePersistenceManagerFactory</code> permission checking.
130      * @since 1.0.1
131      */
132     public final static JDOPermission CLOSE_PERSISTENCE_MANAGER_FACTORY = 
133         new JDOPermission("closePersistenceManagerFactory"); // NOI18N
134     
135 }