[jboss-cvs] JBossAS SVN: r86683 - projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 2 13:37:53 EDT 2009


Author: mmoyses
Date: 2009-04-02 13:37:53 -0400 (Thu, 02 Apr 2009)
New Revision: 86683

Modified:
   projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimpleGroup.java
   projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java
Log:
SECURITY-404: system property allows SimplePrincipal.equals to compare only instances of SimplePrincipal

Modified: projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimpleGroup.java
===================================================================
--- projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimpleGroup.java	2009-04-02 17:11:17 UTC (rev 86682)
+++ projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimpleGroup.java	2009-04-02 17:37:53 UTC (rev 86683)
@@ -21,7 +21,9 @@
 */
 package org.jboss.security;
 
+import java.security.AccessController;
 import java.security.Principal;
+import java.security.PrivilegedAction;
 import java.security.acl.Group;
 import java.util.Collection;
 import java.util.Collections;
@@ -44,6 +46,8 @@
    private static final long serialVersionUID = 6051859639378507247L;
    
    private HashMap members;
+   
+   private static final String OVERRIDE_EQUALS_BEHAVIOR = "org.jboss.security.simpleprincipal.equals.override";
 
     public SimpleGroup(String groupName)
     {
@@ -101,6 +105,26 @@
                 }
             }
         }
+        if ("true".equals(AccessController.doPrivileged(new PrivilegedAction()
+        {
+           public Object run()
+           {
+              return System.getProperty(OVERRIDE_EQUALS_BEHAVIOR, "false");
+           }
+        })))
+        {
+           if (isMember == false)
+           {
+              for (Iterator iterator = members.keySet().iterator(); iterator.hasNext();)
+              {
+                 Principal p = (Principal) iterator.next();
+                 if (member instanceof SimplePrincipal)
+                    isMember = p.getName() == null ? member.getName() == null : p.getName().equals(member.getName());
+                 if (isMember)
+                    break;
+              }
+           }
+        }
         return isMember;
     }
 
@@ -146,4 +170,4 @@
         clone.members = (HashMap)this.members.clone();   
       return clone;  
    } 
-}
\ No newline at end of file
+}

Modified: projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java
===================================================================
--- projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java	2009-04-02 17:11:17 UTC (rev 86682)
+++ projects/security/security-jboss-sx/branches/Branch_2_0/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java	2009-04-02 17:37:53 UTC (rev 86683)
@@ -22,7 +22,9 @@
 package org.jboss.security;
 
 import java.io.Serializable;
+import java.security.AccessController;
 import java.security.Principal;
+import java.security.PrivilegedAction;
 
 /**
  * A simple String based implementation of Principal. Typically a SimplePrincipal is created given a userID which is
@@ -35,6 +37,7 @@
 {
    private static final long serialVersionUID = 7701951188631723261L;
    private final String name;
+   private static final String OVERRIDE_EQUALS_BEHAVIOR = "org.jboss.security.simpleprincipal.equals.override";
 
    public SimplePrincipal(String name)
    {
@@ -42,8 +45,9 @@
    }
 
    /**
-    * Compare this SimplePrincipal's name against another Principal
-    * 
+    * Compare this SimplePrincipal's name against another Principal. If system property
+    * org.jboss.security.simpleprincipal.equals.override is set to true will only
+    * compare instances of SimplePrincipals.
     * @return true if name equals another.getName();
     */
    @Override
@@ -51,6 +55,17 @@
    {
       if (!(another instanceof Principal))
          return false;
+      if ("true".equals(AccessController.doPrivileged(new PrivilegedAction()
+      {
+         public Object run()
+         {
+            return System.getProperty(OVERRIDE_EQUALS_BEHAVIOR, "false");
+         }
+      })))
+      {
+         if (!(another instanceof SimplePrincipal))
+            return false;
+      }
       String anotherName = ((Principal) another).getName();
       boolean equals = false;
       if (name == null)




More information about the jboss-cvs-commits mailing list