Revision: 676 http://openutils.svn.sourceforge.net/openutils/?rev=676&view=rev Author: fcarone Date: 2008-02-21 06:52:50 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Get all rules from the given object Modified Paths: -------------- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 14:46:24 UTC (rev 675) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/services/impl/SecurityRuleManagerImpl.java 2008-02-21 14:52:50 UTC (rev 676) @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.hibernate.Filter; @@ -20,6 +21,7 @@ */ public class SecurityRuleManagerImpl implements SecurityRuleManager { + private SecurityRuleDAO securityRuleDAO; /** @@ -119,4 +121,27 @@ } return rules; } + + /** + * {@inheritDoc} + */ + public List<SecurityRule> getRulesForRoles(Object entity, List<String> roles) + { + return findAllRules(entity, roles); + } + + @SuppressWarnings("unchecked") + private List<SecurityRule> findAllRules(Object object, List<String> roles) + { + List<SecurityRule> result = new ArrayList<SecurityRule>(); + + Class objectClass = object.getClass(); + while (!objectClass.isAssignableFrom(Object.class)) + { + result.addAll(getRulesForRoles(StringUtils.substringBefore(objectClass.getName(), "$$"), roles)); + + objectClass = objectClass.getSuperclass(); + } + return result; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |