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 "";
 }


Reply via email to