[jboss-cvs] JBossAS SVN: r86543 - branches/JBPAPP_4_3_0_GA_CP04_JBPAPP-1841/security/src/main/org/jboss/security.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 31 13:57:31 EDT 2009


Author: mmoyses
Date: 2009-03-31 13:57:31 -0400 (Tue, 31 Mar 2009)
New Revision: 86543

Modified:
   branches/JBPAPP_4_3_0_GA_CP04_JBPAPP-1841/security/src/main/org/jboss/security/SimplePrincipal.java
Log:
JBPAPP-1846: modified equals method to compare only instances of SimplePrincipal when system property org.jboss.security.simpleprincipal.equals.override=true

Modified: branches/JBPAPP_4_3_0_GA_CP04_JBPAPP-1841/security/src/main/org/jboss/security/SimplePrincipal.java
===================================================================
--- branches/JBPAPP_4_3_0_GA_CP04_JBPAPP-1841/security/src/main/org/jboss/security/SimplePrincipal.java	2009-03-31 17:37:40 UTC (rev 86542)
+++ branches/JBPAPP_4_3_0_GA_CP04_JBPAPP-1841/security/src/main/org/jboss/security/SimplePrincipal.java	2009-03-31 17:57:31 UTC (rev 86543)
@@ -21,7 +21,9 @@
  */
 package org.jboss.security;
 
+import java.security.AccessController;
 import java.security.Principal;
+import java.security.PrivilegedAction;
 
 /**
  * A simple String based implementation of Principal. Typically a
@@ -35,6 +37,7 @@
 {
    static final long serialVersionUID = 7701951188631723261L;
    private String name;
+   private static final String OVERRIDE_EQUALS_BEHAVIOR = "org.jboss.security.simpleprincipal.equals.override";
 
    public SimplePrincipal(String name)
    {
@@ -42,13 +45,26 @@
    }
 
    /**
-    * 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();
-    */
+    **/
    public boolean equals(Object another)
    {
       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