edu.internet2.middleware.grouper.privs
Class CachingNamingResolver

java.lang.Object
  extended by edu.internet2.middleware.grouper.privs.NamingResolverDecorator
      extended by edu.internet2.middleware.grouper.privs.CachingNamingResolver
All Implemented Interfaces:
NamingResolver

public class CachingNamingResolver
extends NamingResolverDecorator

Decorator that provides caching for NamingResolver.

Since:
1.2.1
Version:
$Id: CachingNamingResolver.java,v 1.12 2009-09-21 06:14:26 mchyzer Exp $
Author:
blair christensen.

Field Summary
static java.lang.String CACHE_HASPRIV
           
 
Constructor Summary
CachingNamingResolver(NamingResolver resolver)
           
 
Method Summary
 GrouperSession getGrouperSession()
          get a reference to the session
 CacheStats getStats(java.lang.String cache)
           
 void grantPrivilege(Stem stem, edu.internet2.middleware.subject.Subject subject, Privilege privilege, java.lang.String uuid)
          Grant privilege to subject on group.
 boolean hasPrivilege(Stem stem, edu.internet2.middleware.subject.Subject subject, Privilege privilege)
          Check whether subject has privilege on group.
 java.util.Set<Stem> postHqlFilterStems(java.util.Set<Stem> stems, edu.internet2.middleware.subject.Subject subject, java.util.Set<Privilege> privInSet)
          after HQL is run, filter stems.
 void privilegeCopy(Stem stem1, Stem stem2, Privilege priv)
          Copies privileges for subjects that have the specified privilege on stem1 to stem2.
 void privilegeCopy(edu.internet2.middleware.subject.Subject subj1, edu.internet2.middleware.subject.Subject subj2, Privilege priv)
          Copies privileges of type priv on any subject for the given Subject subj1 to the given Subject subj2.
 void revokeAllPrivilegesForSubject(edu.internet2.middleware.subject.Subject subject)
          Revoke all naming privileges that this subject has.
 void revokePrivilege(Stem stem, Privilege privilege)
          Revoke privilege from all subjects on group.
 void revokePrivilege(Stem stem, edu.internet2.middleware.subject.Subject subject, Privilege privilege)
          Revoke privilege from subject on group.
 void stop()
          clean up resources, session is stopped
 
Methods inherited from class edu.internet2.middleware.grouper.privs.NamingResolverDecorator
getDecoratedResolver, getPrivileges, getStemsWhereSubjectHasPrivilege, getSubjectsWithPrivilege, hqlFilterStemsWhereClause
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CACHE_HASPRIV

public static final java.lang.String CACHE_HASPRIV
Constructor Detail

CachingNamingResolver

public CachingNamingResolver(NamingResolver resolver)
Parameters:
resolver -
Since:
1.2.1
Method Detail

getGrouperSession

public GrouperSession getGrouperSession()
Description copied from interface: NamingResolver
get a reference to the session

Specified by:
getGrouperSession in interface NamingResolver
Overrides:
getGrouperSession in class NamingResolverDecorator
Returns:
the session
See Also:
NamingResolver.getGrouperSession()

getStats

public CacheStats getStats(java.lang.String cache)
Parameters:
cache -
Returns:
ehcache statistics for cache.
Since:
1.2.1

grantPrivilege

public void grantPrivilege(Stem stem,
                           edu.internet2.middleware.subject.Subject subject,
                           Privilege privilege,
                           java.lang.String uuid)
                    throws java.lang.IllegalArgumentException,
                           UnableToPerformException
Description copied from interface: NamingResolver
Grant privilege to subject on group.

Specified by:
grantPrivilege in interface NamingResolver
Overrides:
grantPrivilege in class NamingResolverDecorator
uuid - if known or null
Throws:
java.lang.IllegalArgumentException - if any parameter is null.
UnableToPerformException - if the privilege could not be granted.
Since:
1.2.1
See Also:
NamingResolver.grantPrivilege(Stem, Subject, Privilege, String)

hasPrivilege

public boolean hasPrivilege(Stem stem,
                            edu.internet2.middleware.subject.Subject subject,
                            Privilege privilege)
                     throws java.lang.IllegalArgumentException
Description copied from interface: NamingResolver
Check whether subject has privilege on group.

Specified by:
hasPrivilege in interface NamingResolver
Overrides:
hasPrivilege in class NamingResolverDecorator
Returns:
if has privilege
Throws:
java.lang.IllegalArgumentException - if any parameter is null.
Since:
1.2.1
See Also:
NamingResolver.hasPrivilege(Stem, Subject, Privilege)

revokePrivilege

public void revokePrivilege(Stem stem,
                            Privilege privilege)
                     throws java.lang.IllegalArgumentException,
                            UnableToPerformException
Description copied from interface: NamingResolver
Revoke privilege from all subjects on group.

Specified by:
revokePrivilege in interface NamingResolver
Overrides:
revokePrivilege in class NamingResolverDecorator
Throws:
java.lang.IllegalArgumentException - if any parameter is null.
UnableToPerformException - if the privilege could not be revoked.
Since:
1.2.1
See Also:
NamingResolver.revokePrivilege(Stem, Privilege)

revokePrivilege

public void revokePrivilege(Stem stem,
                            edu.internet2.middleware.subject.Subject subject,
                            Privilege privilege)
                     throws java.lang.IllegalArgumentException,
                            UnableToPerformException
Description copied from interface: NamingResolver
Revoke privilege from subject on group.

Specified by:
revokePrivilege in interface NamingResolver
Overrides:
revokePrivilege in class NamingResolverDecorator
Throws:
java.lang.IllegalArgumentException - if any parameter is null.
UnableToPerformException - if the privilege could not be revoked.
Since:
1.2.1
See Also:
NamingResolver.revokePrivilege(Stem, Subject, Privilege)

privilegeCopy

public void privilegeCopy(Stem stem1,
                          Stem stem2,
                          Privilege priv)
                   throws java.lang.IllegalArgumentException,
                          UnableToPerformException
Description copied from interface: NamingResolver
Copies privileges for subjects that have the specified privilege on stem1 to stem2.

Specified by:
privilegeCopy in interface NamingResolver
Overrides:
privilegeCopy in class NamingResolverDecorator
Throws:
java.lang.IllegalArgumentException
UnableToPerformException
See Also:
NamingResolver.privilegeCopy(edu.internet2.middleware.grouper.Stem, edu.internet2.middleware.grouper.Stem, edu.internet2.middleware.grouper.privs.Privilege)

privilegeCopy

public void privilegeCopy(edu.internet2.middleware.subject.Subject subj1,
                          edu.internet2.middleware.subject.Subject subj2,
                          Privilege priv)
                   throws java.lang.IllegalArgumentException,
                          UnableToPerformException
Description copied from interface: NamingResolver
Copies privileges of type priv on any subject for the given Subject subj1 to the given Subject subj2. For instance, if subj1 has STEM privilege to Stem x, this method will result with subj2 having STEM privilege to Stem x.

Specified by:
privilegeCopy in interface NamingResolver
Overrides:
privilegeCopy in class NamingResolverDecorator
Throws:
java.lang.IllegalArgumentException
UnableToPerformException
See Also:
NamingResolver.privilegeCopy(edu.internet2.middleware.subject.Subject, edu.internet2.middleware.subject.Subject, edu.internet2.middleware.grouper.privs.Privilege)

postHqlFilterStems

public java.util.Set<Stem> postHqlFilterStems(java.util.Set<Stem> stems,
                                              edu.internet2.middleware.subject.Subject subject,
                                              java.util.Set<Privilege> privInSet)
Description copied from interface: NamingResolver
after HQL is run, filter stems. If you are filtering in HQL, then dont filter here

Specified by:
postHqlFilterStems in interface NamingResolver
Overrides:
postHqlFilterStems in class NamingResolverDecorator
subject - which needs view access to the groups
privInSet - find a privilege which is in this set (e.g. for view, send all access privs). There are pre-canned sets in NamingPrivilege
Returns:
the set of filtered groups
See Also:
NamingResolver.postHqlFilterStems(java.util.Set, edu.internet2.middleware.subject.Subject, java.util.Set)

stop

public void stop()
Description copied from interface: NamingResolver
clean up resources, session is stopped

Specified by:
stop in interface NamingResolver
Overrides:
stop in class NamingResolverDecorator
See Also:
NamingResolver.stop()

revokeAllPrivilegesForSubject

public void revokeAllPrivilegesForSubject(edu.internet2.middleware.subject.Subject subject)
Description copied from interface: NamingResolver
Revoke all naming privileges that this subject has.

Specified by:
revokeAllPrivilegesForSubject in interface NamingResolver
Overrides:
revokeAllPrivilegesForSubject in class NamingResolverDecorator
See Also:
NamingResolver.revokeAllPrivilegesForSubject(edu.internet2.middleware.subject.Subject)