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 internalRole.isEnabled(), internalRole.isMappingOnly());
66 }
67 return rolePrincipal;
68 }
69
70 /***
71 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#setRolePrincipal(org.apache.jetspeed.security.RolePrincipal)
72 */
73 public void setRolePrincipal(RolePrincipal rolePrincipal)
74 throws SecurityException
75 {
76 String fullPath = rolePrincipal.getFullPath();
77 InternalRolePrincipal internalRole = commonQueries.getInternalRolePrincipal(fullPath);
78 if ( null == internalRole )
79 {
80 internalRole = new InternalRolePrincipalImpl(fullPath);
81 internalRole.setEnabled(rolePrincipal.isEnabled());
82 commonQueries.setInternalRolePrincipal(internalRole, false);
83 }
84 else if ( !internalRole.isMappingOnly() )
85 {
86 if ( internalRole.isEnabled() != rolePrincipal.isEnabled() )
87 {
88 internalRole.setEnabled(rolePrincipal.isEnabled());
89 commonQueries.setInternalRolePrincipal(internalRole, false);
90 }
91 }
92 else
93 {
94
95 }
96 }
97
98 /***
99 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#removeRolePrincipal(org.apache.jetspeed.security.RolePrincipal)
100 */
101 public void removeRolePrincipal(RolePrincipal rolePrincipal)
102 throws SecurityException
103 {
104 InternalRolePrincipal internalRole = commonQueries
105 .getInternalRolePrincipal(rolePrincipal.getFullPath());
106 if (null != internalRole)
107 {
108 commonQueries.removeInternalRolePrincipal(internalRole);
109 }
110 }
111
112 /***
113 * @see org.apache.jetspeed.security.spi.RoleSecurityHandler#getRolePrincipals(java.lang.String)
114 */
115 public List getRolePrincipals(String filter)
116 {
117 List rolePrincipals = new LinkedList();
118 Iterator result = commonQueries.getInternalRolePrincipals(filter);
119 while (result.hasNext())
120 {
121 InternalRolePrincipal internalRole = (InternalRolePrincipal) result
122 .next();
123 String path = internalRole.getFullPath();
124 if (path == null)
125 {
126 continue;
127 }
128 rolePrincipals.add(new RolePrincipalImpl(RolePrincipalImpl
129 .getPrincipalNameFromFullPath(internalRole.getFullPath())));
130 }
131 return rolePrincipals;
132 }
133
134 }