[jboss-cvs] JBossAS SVN: r57534 - branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Oct 10 10:44:36 EDT 2006


Author: anil.saldhana at jboss.com
Date: 2006-10-10 10:44:34 -0400 (Tue, 10 Oct 2006)
New Revision: 57534

Added:
   branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/SecurityRoleMetaData.java
Modified:
   branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/AssemblyDescriptor.java
   branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBean.java
   branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
Log:
EJBTHREE-734:Take care of Run-As Principal specified in jboss.xml when the RunAs annotation is present while ejb-jar.xml is absent

Modified: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/AssemblyDescriptor.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/AssemblyDescriptor.java	2006-10-10 14:41:29 UTC (rev 57533)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/AssemblyDescriptor.java	2006-10-10 14:44:34 UTC (rev 57534)
@@ -20,13 +20,18 @@
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */ 
 package org.jboss.ejb3.metamodel;
-
+ 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.jboss.logging.Logger;
-
+ 
 import org.jboss.metamodel.descriptor.SecurityRole;
 
 /**
@@ -34,6 +39,7 @@
  * schema
  *
  * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ * @author Anil.Saldhana at jboss.org
  * @version <tt>$Revision$</tt>
  */
 public class AssemblyDescriptor
@@ -41,6 +47,8 @@
    private static final Logger log = Logger.getLogger(AssemblyDescriptor.class);
 
    private List securityRoles = new ArrayList();
+   
+   private Map<String, SecurityRoleMetaData> securityRoleMetaData = new HashMap();
 
    private List methodPermissions = new ArrayList();
 
@@ -167,6 +175,24 @@
    {
       containerTransactions.add(containerTransaction);
    }
+   
+   public void addSecurityRoleMetaData(SecurityRoleMetaData srm)
+   {
+      this.securityRoleMetaData.put(srm.getRoleName(), srm);
+   }
+   
+   public Set getSecurityRolesGivenPrincipal(String userName)
+   {
+      HashSet roleNames = new HashSet();
+      Iterator it = securityRoleMetaData.values().iterator();
+      while (it.hasNext())
+      {
+         SecurityRoleMetaData srMetaData = (SecurityRoleMetaData) it.next();
+         if (srMetaData.getPrincipals().contains(userName))
+            roleNames.add(srMetaData.getRoleName());
+      }
+      return roleNames;
+   }
 
    public String toString()
    {

Modified: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBean.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBean.java	2006-10-10 14:41:29 UTC (rev 57533)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBean.java	2006-10-10 14:44:34 UTC (rev 57534)
@@ -30,11 +30,9 @@
 
 import org.jboss.metamodel.descriptor.EnvironmentRefGroup;
 import org.jboss.metamodel.descriptor.InjectionTarget;
-import org.jboss.metamodel.descriptor.MessageDestinationRef;
-import org.jboss.metamodel.descriptor.PersistenceUnitRef;
+import org.jboss.metamodel.descriptor.MessageDestinationRef; 
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
-import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.PersistenceContextRef;
+import org.jboss.metamodel.descriptor.ResourceRef; 
 
 /**
  * Represents an EJB element of the ejb-jar.xml deployment descriptor for the
@@ -185,8 +183,15 @@
 
    public void setRunAsPrincipal(String principal)
    {
-      if (securityIdentity != null)
-         securityIdentity.setRunAsPrincipal(principal);
+      /**
+       * A case where the RunAs is defined in annotations and the 
+       * RunAsPrincipal is specified in jboss.xml
+       */
+      if (securityIdentity == null)
+      {
+         securityIdentity = new SecurityIdentity();
+      }
+      securityIdentity.setRunAsPrincipal(principal);
    }
 
    public void setCallByValue(boolean callByValue)

Modified: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2006-10-10 14:41:29 UTC (rev 57533)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2006-10-10 14:44:34 UTC (rev 57534)
@@ -22,7 +22,7 @@
 package org.jboss.ejb3.metamodel;
 
 import java.io.IOException;
-import java.net.URL;
+import java.net.URL; 
 
 import javax.management.ObjectName;
 
@@ -39,20 +39,19 @@
 
 import org.jboss.metamodel.descriptor.DDObjectFactory;
 import org.jboss.metamodel.descriptor.EjbLocalRef;
-import org.jboss.metamodel.descriptor.EjbRef;
-import org.jboss.metamodel.descriptor.EnvEntry;
+import org.jboss.metamodel.descriptor.EjbRef; 
 import org.jboss.metamodel.descriptor.InjectionTarget;
 import org.jboss.metamodel.descriptor.JndiRef;
 import org.jboss.metamodel.descriptor.MessageDestinationRef;
 import org.jboss.metamodel.descriptor.NameValuePair;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
-import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.SecurityRole;
+import org.jboss.metamodel.descriptor.ResourceRef; 
 
 /**
  * Represents the jboss.xml deployment descriptor for the 2.1 schema
  *
  * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ * @author Anil.Saldhana at jboss.com
  * @version <tt>$Revision$</tt>
  */
 public class JBossDDObjectFactory extends DDObjectFactory
@@ -283,6 +282,10 @@
       {
          child = new MessageDestination();
       }
+      if (localName.equals("security-role"))
+      { 
+         child = new SecurityRoleMetaData(); 
+      }
 
       return child;
    }
@@ -431,7 +434,13 @@
       parent.addMessageDestination(destination);
    }
    
+   public void addChild(AssemblyDescriptor parent, SecurityRoleMetaData srm,
+         UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addSecurityRoleMetaData(srm);
+   }
    
+   
    /**
     * Called when parsing character is complete.
     */
@@ -662,8 +671,7 @@
     */
    public void addChild(EnterpriseBeans parent, EnterpriseBeans ejbs,
                         UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-
+   { 
    }
 
    /**
@@ -1099,6 +1107,22 @@
       }
    }
    
+   /**
+    * Called when a child element with simple content is read for DD.
+    */
+   public void setValue(SecurityRoleMetaData srm, UnmarshallingContext navigator,
+                        String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("role-name"))
+      {
+         srm.setRoleName(getValue(localName, value));
+      }
+      else if (localName.equals("principal-name"))
+      {
+         srm.addPrincipalName(getValue(localName, value));
+      } 
+   }
+   
    protected String getValue(String name, String value)
    {
       if (value.startsWith("${") && value.endsWith("}"))
@@ -1119,6 +1143,5 @@
       }
       
       return value;
-   }
-
+   } 
 }

Added: branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/SecurityRoleMetaData.java
===================================================================
--- branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/SecurityRoleMetaData.java	2006-10-10 14:41:29 UTC (rev 57533)
+++ branches/JEE5_TCK/ejb3/src/main/org/jboss/ejb3/metamodel/SecurityRoleMetaData.java	2006-10-10 14:44:34 UTC (rev 57534)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb3.metamodel;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The meta data object for the security-role-mapping element.
+ *
+ * The security-role-mapping element maps the user principal
+ * to a different principal on the server. It can for example
+ * be used to map a run-as-principal to more than one role.
+ * 
+ *   <security-role>
+       <role-name>Employee</role-name>
+       <principal-name>javajoe</principal-name>
+       <principal-name>j2ee</principal-name>
+     </security-role>
+ *
+ * @author Anil.Saldhana at jboss.org
+ * @version $Revision: 37459 $
+ */
+public class SecurityRoleMetaData 
+{
+   private String roleName;
+   private Set principals;
+
+   public SecurityRoleMetaData()
+   { 
+      this.principals = new HashSet();
+   }
+   public SecurityRoleMetaData(String roleName)
+   {
+      this.roleName = roleName;
+      this.principals = new HashSet();
+   }
+
+   public void addPrincipalName(String principalName)
+   {
+      principals.add(principalName);
+   }
+
+   public void addPrincipalNames(Set principalNames)
+   {
+      principals.addAll(principalNames);
+   }
+
+   public void setRoleName(String rol)
+   {
+      this.roleName = rol;
+   }
+   
+   public String getRoleName()
+   {
+      return roleName;
+   }
+
+   public Set getPrincipals()
+   {
+      return principals;
+   }
+}




More information about the jboss-cvs-commits mailing list