Author: ehillenius Date: Mon Jul 30 10:21:38 2007 New Revision: 561052 URL: http://svn.apache.org/viewvc?view=rev&rev=561052 Log: WICKET-786
Modified: wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/AbstractRoleAuthorizationStrategy.java wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AnnotationsRoleAuthorizationStrategy.java wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AuthorizeAction.java Modified: wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/AbstractRoleAuthorizationStrategy.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/AbstractRoleAuthorizationStrategy.java?view=diff&rev=561052&r1=561051&r2=561052 ============================================================================== --- wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/AbstractRoleAuthorizationStrategy.java (original) +++ wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/AbstractRoleAuthorizationStrategy.java Mon Jul 30 10:21:38 2007 @@ -55,11 +55,35 @@ { if (roles.isEmpty()) { - return true; + return true; } else { return roleCheckingStrategy.hasAnyRole(roles); } + } + + /** + * Conducts a check to see if the roles object is empty. Since the roles + * object does not contain any null values and will always hold an empty + * string, an extra test is required beyond roles.isEmpty(). + * + * @param roles + * the Roles object to test + * @return true if the object holds no real roles + */ + protected final boolean isEmpty(Roles roles) + { + if (roles.isEmpty()) + { + return true; + } + + if (roles.size() == 1) + { + return "".equals(roles.iterator().next()); + } + + return false; } } Modified: wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AnnotationsRoleAuthorizationStrategy.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AnnotationsRoleAuthorizationStrategy.java?view=diff&rev=561052&r1=561051&r2=561052 ============================================================================== --- wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AnnotationsRoleAuthorizationStrategy.java (original) +++ wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AnnotationsRoleAuthorizationStrategy.java Mon Jul 30 10:21:38 2007 @@ -83,7 +83,7 @@ public boolean isActionAuthorized(final Component component, final Action action) { // Get component's class - final Class< ? extends Component> componentClass = component.getClass(); + final Class<? extends Component> componentClass = component.getClass(); // Check for a single action if (!check(action, componentClass.getAnnotation(AuthorizeAction.class))) @@ -122,7 +122,13 @@ { if (action.getName().equals(authorizeActionAnnotation.action())) { - if (!hasAny(new Roles(authorizeActionAnnotation.roles()))) + if (hasAny(new Roles(authorizeActionAnnotation.deny()))) + { + return false; + } + + Roles roles = new Roles(authorizeActionAnnotation.roles()); + if (!(isEmpty(roles) || hasAny(roles))) { return false; } Modified: wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AuthorizeAction.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AuthorizeAction.java?view=diff&rev=561052&r1=561051&r2=561052 ============================================================================== --- wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AuthorizeAction.java (original) +++ wicket/trunk/jdk-1.5/wicket-auth-roles/src/main/java/org/apache/wicket/authorization/strategies/role/annotations/AuthorizeAction.java Mon Jul 30 10:21:38 2007 @@ -61,4 +61,12 @@ * (annotations do not allow null default values) */ String[] roles() default ""; + + /** + * The roles to deny for this action. + * + * @return the roles to deny for this action. The default is an empty string + * (annotations do not allow null default values) + */ + String[] deny() default ""; }