1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.security.spi.impl;
18
19 import java.util.Iterator;
20 import java.util.LinkedList;
21 import java.util.List;
22
23 import org.apache.jetspeed.security.RolePrincipal;
24 import org.apache.jetspeed.security.SecurityException;
25 import org.apache.jetspeed.security.impl.RolePrincipalImpl;
26 import org.apache.jetspeed.security.om.InternalRolePrincipal;
27 import org.apache.jetspeed.security.om.impl.InternalRolePrincipalImpl;
28 import org.apache.jetspeed.security.spi.RoleSecurityHandler;
29 import org.apache.jetspeed.security.spi.SecurityAccess;
30
31 /***
32 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler
33 * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
34 * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
35 */
36 public class DefaultRoleSecurityHandler implements RoleSecurityHandler
37 {
38
39 /*** Common queries. */
40 private SecurityAccess commonQueries = null;
41
42 /***
43 * <p>
44 * Constructor providing access to the common queries.
45 * </p>
46 */
47 public DefaultRoleSecurityHandler(SecurityAccess commonQueries)
48 {
49 this.commonQueries = commonQueries;
50 }
51
52 /***
53 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#getRolePrincipal(java.lang.String)
54 */
55 public RolePrincipal getRolePrincipal(String roleFullPathName)
56 {
57 RolePrincipal rolePrincipal = null;
58 InternalRolePrincipal internalRole = commonQueries
59 .getInternalRolePrincipal(RolePrincipalImpl
60 .getFullPathFromPrincipalName(roleFullPathName));
61 if (null != internalRole)
62 {
63 rolePrincipal = new RolePrincipalImpl(RolePrincipalImpl
64 .getPrincipalNameFromFullPath(internalRole.getFullPath()));
65 }
66 return rolePrincipal;
67 }
68
69 /***
70 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#setRolePrincipal(org.apache.jetspeed.security.RolePrincipal)
71 */
72 public void setRolePrincipal(RolePrincipal rolePrincipal)
73 throws SecurityException
74 {
75 String fullPath = rolePrincipal.getFullPath();
76 InternalRolePrincipal internalRole = commonQueries.getInternalRolePrincipal(fullPath);
77 if ( null == internalRole )
78 {
79 internalRole = new InternalRolePrincipalImpl(fullPath);
80 internalRole.setEnabled(rolePrincipal.isEnabled());
81 commonQueries.setInternalRolePrincipal(internalRole, false);
82 }
83 else if ( !internalRole.isMappingOnly() )
84 {
85 if ( internalRole.isEnabled() != rolePrincipal.isEnabled() )
86 {
87 internalRole.setEnabled(rolePrincipal.isEnabled());
88 commonQueries.setInternalRolePrincipal(internalRole, false);
89 }
90 }
91 else
92 {
93
94 }
95 }
96
97 /***
98 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#removeRolePrincipal(org.apache.jetspeed.security.RolePrincipal)
99 */
100 public void removeRolePrincipal(RolePrincipal rolePrincipal)
101 throws SecurityException
102 {
103 InternalRolePrincipal internalRole = commonQueries
104 .getInternalRolePrincipal(rolePrincipal.getFullPath());
105 if (null != internalRole)
106 {
107 commonQueries.removeInternalRolePrincipal(internalRole);
108 }
109 }
110
111 /***
112 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#getRolePrincipals(java.lang.String)
113 */
114 public List getRolePrincipals(String filter)
115 {
116 List rolePrincipals = new LinkedList();
117 Iterator result = commonQueries.getInternalRolePrincipals(filter);
118 while (result.hasNext())
119 {
120 InternalRolePrincipal internalRole = (InternalRolePrincipal) result
121 .next();
122 String path = internalRole.getFullPath();
123 if (path == null)
124 {
125 continue;
126 }
127 rolePrincipals.add(new RolePrincipalImpl(RolePrincipalImpl
128 .getPrincipalNameFromFullPath(internalRole.getFullPath())));
129 }
130 return rolePrincipals;
131 }
132
133 }