]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
6af23e53ccedc8793b2ab393686fe0c5157689a4
[tmp/jakarta-migration.git] /
1 /**
2  *  This document is a part of the source code and related artifacts
3  *  for CollectionSpace, an open source collections management system
4  *  for museums and related institutions:
5
6  *  http://www.collectionspace.org
7  *  http://wiki.collectionspace.org
8
9  *  Copyright 2009 University of California at Berkeley
10
11  *  Licensed under the Educational Community License (ECL), Version 2.0.
12  *  You may not use this file except in compliance with this License.
13
14  *  You may obtain a copy of the ECL 2.0 License at
15
16  *  https://source.collectionspace.org/collection-space/LICENSE.txt
17
18  *  Unless required by applicable law or agreed to in writing, software
19  *  distributed under the License is distributed on an "AS IS" BASIS,
20  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  *  See the License for the specific language governing permissions and
22  *  limitations under the License.
23  */
24 package org.collectionspace.services.authorization.storage;
25
26 import java.util.List;
27 import org.collectionspace.services.authorization.PermissionRole;
28 import org.collectionspace.services.authorization.PermissionRoleRel;
29 import org.collectionspace.services.authorization.PermissionValue;
30 import org.collectionspace.services.authorization.RoleValue;
31 import org.collectionspace.services.authorization.SubjectType;
32 import org.collectionspace.services.common.context.ServiceContext;
33 import org.collectionspace.services.common.context.ServiceContextProperties;
34
35 /**
36  *
37  * @author 
38  */
39 public class PermissionRoleUtil {
40
41     static SubjectType getRelationSubject(ServiceContext ctx) {
42         Object o = ctx.getProperty(ServiceContextProperties.SUBJECT);
43         if (o == null) {
44             throw new IllegalArgumentException(ServiceContextProperties.SUBJECT
45                     + " property is missing in context "
46                     + ctx.toString());
47         }
48         return (SubjectType) o;
49     }
50
51     static SubjectType getRelationSubject(ServiceContext ctx, PermissionRole pr) {
52         SubjectType subject = pr.getSubject();
53         if (subject == null) {
54             //it is not required to give subject as URI determines the subject
55             subject = getRelationSubject(ctx);
56         }
57         return subject;
58     }
59
60     /**
61      * buildPermissionRoleRel builds persistent relationship entities from given
62      * permissionrole
63      * @param pr permissionrole
64      * @param subject
65      * @param prrl persistent entities built are inserted into this list
66      */
67     static public void buildPermissionRoleRel(PermissionRole pr, SubjectType subject, List<PermissionRoleRel> prrl) {
68
69         if (subject.equals(SubjectType.ROLE)) {
70             //FIXME: potential index out of bounds exception...negative test needed
71             PermissionValue pv = pr.getPermissions().get(0);
72             for (RoleValue rv : pr.getRoles()) {
73                 PermissionRoleRel prr = buildPermissonRoleRel(pv, rv);
74                 prrl.add(prr);
75             }
76         } else if (SubjectType.PERMISSION.equals(subject)) {
77             //FIXME: potential index out of bounds exception...negative test needed
78             RoleValue rv = pr.getRoles().get(0);
79             for (PermissionValue pv : pr.getPermissions()) {
80                 PermissionRoleRel prr = buildPermissonRoleRel(pv, rv);
81                 prrl.add(prr);
82             }
83         }
84     }
85     
86     static private PermissionRoleRel buildPermissonRoleRel(PermissionValue pv, RoleValue rv) {
87         PermissionRoleRel prr = new PermissionRoleRel();
88         prr.setPermissionId(pv.getPermissionId());
89         prr.setPermissionResource(pv.getResourceName());
90         prr.setRoleId(rv.getRoleId());
91         prr.setRoleName(rv.getRoleName());
92         return prr;
93     }
94 }