Source code: gov/lanl/RAD/PolicyEvaluatorAdminImpl.java
1 /*--- formatted by Jindent 2.1, (www.c-lab.de/~jindent) ---*/
2
3 // Intellectual Properties Notice
4
5 /**
6 * ***********************************
7 * Copyright Notice
8 * Copyright (c) 1999,2000,2001 Regents of the University of California. All rights reserved.
9 *
10 * DISCLAIMER
11 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
12 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
14 * SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
18 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
19 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
20 * DAMAGE.
21 * ************************************
22 */
23 package gov.lanl.RAD;
24
25 import gov.lanl.Utility.ResourceNameTranslate;
26 import org.omg.DfResourceAccessDecision.*;
27
28 import java.util.Enumeration;
29 import java.util.Hashtable;
30 //import java.util.Vector;
31 import java.util.ArrayList;
32
33 /**
34 * <p>
35 * <ul>
36 * <li> <b>Java Interface Class</b> org.omg.DfResourceAccessDecision.PolicyEvaluatorAdmin
37 * <li> <b>Source File</b> gov/lanl/RAD.POlicyEvaluatorAdminImpl.java
38 *
39 * This implementation stores the policies and resource_names in Hashtables and is not persistent
40 *
41 * <li> <b>IDL Source File</b> DfResourceAccessDecision.idl
42 * <li> <b>IDL Absolute Name</b> ::DfResourceAccessDecision::PolicyEvaluatorAdmin
43 * <li> <b>Repository Identifier</b> IDL:omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin:1.0
44 * </ul>
45 * <b>IDL definition:</b>
46 * <pre>
47 * #pragma prefix "omg.org/DfResourceAccessDecision"
48 * interface PolicyEvaluatorAdmin {
49 * void set_policies(
50 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
51 * in ::DfResourceAccessDecision::ResourceName resource_name
52 * )
53 * raises(
54 * ::DfResourceAccessDecision::InvalidResourceName,
55 * ::DfResourceAccessDecision::ResourceNameNotFound,
56 * ::DfResourceAccessDecision::InvalidPolicyNameList
57 * );
58 * void add_policies(
59 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
60 * in ::DfResourceAccessDecision::ResourceName resource_name
61 * )
62 * raises(
63 * ::DfResourceAccessDecision::InvalidResourceName,
64 * ::DfResourceAccessDecision::ResourceNameNotFound,
65 * ::DfResourceAccessDecision::InvalidPolicyNameList
66 * );
67 * void delete_policies(
68 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
69 * in ::DfResourceAccessDecision::ResourceName resource_name
70 * )
71 * raises(
72 * ::DfResourceAccessDecision::InvalidResourceName,
73 * ::DfResourceAccessDecision::ResourceNameNotFound,
74 * ::DfResourceAccessDecision::InvalidPolicyNameList,
75 * ::DfResourceAccessDecision::NoAssociation
76 * );
77 * ::DfResourceAccessDecision::PolicyNameList list_policies();
78 * ::DfResourceAccessDecision::PolicyName set_default_policy(
79 * in ::DfResourceAccessDecision::PolicyName policy_names
80 * )
81 * raises(
82 * ::DfResourceAccessDecision::InvalidPolicy
83 * );
84 * };
85 * </pre>
86 * </p>
87 */
88 public class PolicyEvaluatorAdminImpl extends PolicyEvaluatorAdminPOA {
89 Hashtable domains = new Hashtable();
90 private static org.apache.log4j.Logger cat =
91 org.apache.log4j.Logger.getLogger(PolicyEvaluatorAdminImpl.class.getName());
92 private String defaultPolicy;
93
94 /**
95 * Construct a persistently named object.
96 */
97 public PolicyEvaluatorAdminImpl(java.lang.String name) {
98
99 // super(name);
100 }
101
102
103 /**
104 * <p>
105 * Operation: <b>::DfResourceAccessDecision::PolicyEvaluatorAdmin::set_policies</b>.
106 * <pre>
107 * #pragma prefix "omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin"
108 * void set_policies(
109 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
110 * in ::DfResourceAccessDecision::ResourceName resource_name
111 * )
112 * raises(
113 * ::DfResourceAccessDecision::InvalidResourceName,
114 * ::DfResourceAccessDecision::ResourceNameNotFound,
115 * ::DfResourceAccessDecision::InvalidPolicyNameList
116 * );
117 * </pre>
118 * </p>
119 */
120 public void set_policies(java.lang.String[] policy_names, ResourceName resource_name)
121 throws InvalidResourceName,
122 ResourceNameNotFound,
123 InvalidPolicyNameList {
124
125 String domain = resource_name.resource_naming_authority;
126 String resourceName = null;
127 try {
128 resourceName = ResourceNameTranslate.toString(resource_name.resource_name_component_list);
129 } catch (Exception e) {
130 throw new InvalidResourceName(new ExceptionData((short) 0, resourceName));
131 }
132 Hashtable resource = new Hashtable();
133 ArrayList list = new ArrayList();
134 for (int i = 0; i < policy_names.length; i++) {
135 list.add(policy_names[i]);
136 }
137 resource.put(resourceName, list);
138 domains.put(domain, resource);
139 // IMPLEMENT: Operation
140 }
141
142 /**
143 * <p>
144 * Operation: <b>::DfResourceAccessDecision::PolicyEvaluatorAdmin::add_policies</b>.
145 * <pre>
146 * #pragma prefix "omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin"
147 * void add_policies(
148 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
149 * in ::DfResourceAccessDecision::ResourceName resource_name
150 * )
151 * raises(
152 * ::DfResourceAccessDecision::InvalidResourceName,
153 * ::DfResourceAccessDecision::ResourceNameNotFound,
154 * ::DfResourceAccessDecision::InvalidPolicyNameList
155 * );
156 * </pre>
157 * </p>
158 */
159 public void add_policies(String[] policy_names, ResourceName resource_name)
160 throws InvalidResourceName,
161 ResourceNameNotFound,
162 InvalidPolicyNameList {
163 String domain = resource_name.resource_naming_authority;
164 String resourceName = null;
165 try {
166 resourceName = ResourceNameTranslate.toString(resource_name.resource_name_component_list);
167 } catch (Exception e) {
168 throw new InvalidResourceName(new ExceptionData((short) 0, resourceName));
169 }
170 if (resourceName == null || resourceName.equals("")) throw new ResourceNameNotFound();
171 Hashtable resource = (Hashtable) domains.get(domain);
172 String[] names = null;
173 ArrayList list = null;
174 if (resource == null) resource = new Hashtable();
175
176 // add policies to the original list
177 list = (ArrayList) resource.get(resourceName);
178 if (list != null) list = new ArrayList();
179 for (int i = 0; i < policy_names.length; i++)
180 list.add(policy_names[i]);
181
182
183 resource.put(resourceName, list);
184 domains.put(domain, resource);
185 // IMPLEMENT: Operation
186 }
187
188 /**
189 * <p>
190 * Operation: <b>::DfResourceAccessDecision::PolicyEvaluatorAdmin::delete_policies</b>.
191 * <pre>
192 * #pragma prefix "omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin"
193 * void delete_policies(
194 * in ::DfResourceAccessDecision::PolicyNameList policy_names,
195 * in ::DfResourceAccessDecision::ResourceName resource_name
196 * )
197 * raises(
198 * ::DfResourceAccessDecision::InvalidResourceName,
199 * ::DfResourceAccessDecision::ResourceNameNotFound,
200 * ::DfResourceAccessDecision::InvalidPolicyNameList,
201 * ::DfResourceAccessDecision::NoAssociation
202 * );
203 * </pre>
204 * </p>
205 */
206 public void delete_policies(String[] policy_names, ResourceName resource_name)
207 throws InvalidResourceName,
208 ResourceNameNotFound,
209 InvalidPolicyNameList,
210 NoAssociation {
211 String domain = resource_name.resource_naming_authority;
212 String resourceName = null;
213 try {
214 resourceName = ResourceNameTranslate.toString(resource_name.resource_name_component_list);
215 } catch (Exception e) {
216 throw new InvalidResourceName(new ExceptionData((short) 1, resourceName));
217 }
218
219
220 Hashtable resource = (Hashtable) domains.get(domain);
221
222 ArrayList list = null;
223 if (resource == null) {
224 throw new ResourceNameNotFound(new ExceptionData((short) 1, resourceName));
225 } else {
226 // remove policies from the original list
227 list = (ArrayList) resource.get(resourceName);
228 if (list == null) throw new InvalidPolicyNameList();
229 for (int i = 0; i < policy_names.length; i++) {
230 int j = list.indexOf(policy_names[i]);
231 if (j > 0) list.remove(j);
232
233 }
234
235 }
236 resource.put(resourceName, list);
237 domains.put(domain, resource);
238 // IMPLEMENT: Operation
239 }
240
241 /**
242 * <p>
243 * Operation: <b>::DfResourceAccessDecision::PolicyEvaluatorAdmin::list_policies</b>.
244 * <pre>
245 * #pragma prefix "omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin"
246 * ::DfResourceAccessDecision::PolicyNameList list_policies();
247 * </pre>
248 * </p>
249 */
250 public String[] list_policies(int seq_max, int iter_max, PolicyNameListIteratorHolder policyname_iter) {
251
252 ArrayList policies = new ArrayList();
253 for (Enumeration values = domains.elements(); values.hasMoreElements();) {
254 Hashtable h = (Hashtable) values.nextElement();
255 for (Enumeration pol = h.elements(); pol.hasMoreElements();) {
256 ArrayList list = (ArrayList) pol.nextElement();
257 policies.addAll(list);
258
259 }
260
261 }
262 String[] list = new String[0];
263 return (String[]) policies.toArray(list);
264
265
266 //return list;
267 }
268
269 /**
270 * <p>
271 * Operation: <b>::DfResourceAccessDecision::PolicyEvaluatorAdmin::set_default_policy</b>.
272 * <pre>
273 * #pragma prefix "omg.org/DfResourceAccessDecision/PolicyEvaluatorAdmin"
274 * ::DfResourceAccessDecision::PolicyName set_default_policy(
275 * in ::DfResourceAccessDecision::PolicyName policy_names
276 * )
277 * raises(
278 * ::DfResourceAccessDecision::InvalidPolicy
279 * );
280 * </pre>
281 * </p>
282 */
283 public java.lang.String set_default_policy(String policy_name)
284 throws InvalidPolicy {
285
286 // IMPLEMENT: Operation
287 defaultPolicy = policy_name;
288 return defaultPolicy;
289 }
290
291 }
292
293
294 /*--- formatting done in "Telemed Convention" style on 04-01-2000 ---*/
295