[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