Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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