[jboss-cvs] JBossAS SVN: r66931 - in projects/metadata/trunk/src/main/java/org/jboss/metadata: web/jboss and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 9 12:49:40 EST 2007
Author: scott.stark at jboss.org
Date: 2007-11-09 12:49:40 -0500 (Fri, 09 Nov 2007)
New Revision: 66931
Modified:
projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
Log:
Add RunAsIdentityMetaData getRunAsIdentity(String ejbName) to ejb metadata.
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java 2007-11-09 17:41:52 UTC (rev 66930)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java 2007-11-09 17:49:40 UTC (rev 66931)
@@ -21,6 +21,10 @@
*/
package org.jboss.metadata.ejb.jboss;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
@@ -32,7 +36,13 @@
import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
import org.jboss.metadata.ejb.spec.InterceptorsMetaData;
import org.jboss.metadata.ejb.spec.RelationsMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.javaee.jboss.RunAsIdentityMetaData;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptionGroup;
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
/**
* JBossMetaData.
@@ -105,7 +115,9 @@
/** The interceptors */
private InterceptorsMetaData interceptors;
-
+ /** */
+ private Map<String, RunAsIdentityMetaData> runAsIdentity = new HashMap<String, RunAsIdentityMetaData>();
+
/**
* Create a new JBossMetaData.
*/
@@ -569,6 +581,39 @@
this.assemblyDescriptor = assemblyDescriptor;
}
+ /**
+ * Access the RunAsIdentity associated with the given servlet
+ * @param ejbName - the servlet-name from the web.xml
+ * @return RunAsIdentity for the servet if one exists, null otherwise
+ */
+ @XmlTransient
+ public RunAsIdentityMetaData getRunAsIdentity(String ejbName)
+ {
+ RunAsIdentityMetaData identity = runAsIdentity.get(ejbName);
+ if (identity == null)
+ {
+ JBossEnterpriseBeanMetaData ejb = this.getEnterpriseBean(ejbName);
+ if (ejb != null)
+ {
+ // Check for a ejb-jar.xml run-as only specification
+ synchronized (runAsIdentity)
+ {
+ SecurityIdentityMetaData si = ejb.getSecurityIdentity();
+ if(si != null)
+ {
+ RunAsMetaData runAs = si.getRunAs();
+ if (runAs != null)
+ {
+ String roleName = runAs.getRoleName();
+ identity = new RunAsIdentityMetaData(roleName, null);
+ runAsIdentity.put(ejbName, identity);
+ }
+ }
+ }
+ }
+ }
+ return identity;
+ }
/**
* Merge the contents of override with original into this.
@@ -652,6 +697,42 @@
boolean isEJB3x = (original == null || original.isEJB3x());
enterpriseBeans.merge(jbeans, beans, "ejb-jar.xml", "jboss.xml", !isEJB3x);
+
+ // Update run-as indentity for a run-as-principal
+ if(enterpriseBeans != null)
+ {
+ for(JBossEnterpriseBeanMetaData ejb : enterpriseBeans)
+ {
+ String ejbName = ejb.getEjbName();
+ SecurityIdentityMetaData si = ejb.getSecurityIdentity();
+ String principalName = si != null ? si.getRunAsPrincipal() : null;
+ // Get the run-as primary role
+ String ejbXmlRunAs = null;
+ if(si != null && si.getRunAs() != null)
+ ejbXmlRunAs = si.getRunAs().getRoleName();
+ if (principalName != null)
+ {
+ // Update the run-as indentity to use the principal name
+ if (ejbXmlRunAs == null)
+ {
+ throw new IllegalStateException("run-as-principal: " + principalName + " found in jboss.xml but there was no run-as in ejb-jar.xml");
+ }
+ // See if there are any additional roles for this principal
+ Set<String> extraRoles = null;
+ if(getAssemblyDescriptor() != null)
+ {
+ extraRoles = getAssemblyDescriptor().getSecurityRoleNamesByPrincipal(principalName);
+ }
+ RunAsIdentityMetaData runAsId = new RunAsIdentityMetaData(ejbXmlRunAs, principalName, extraRoles);
+ runAsIdentity.put(ejbName, runAsId);
+ }
+ else if (ejbXmlRunAs != null)
+ {
+ RunAsIdentityMetaData runAsId = new RunAsIdentityMetaData(ejbXmlRunAs, null);
+ runAsIdentity.put(ejbName, runAsId);
+ }
+ }
+ }
}
/**
Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java 2007-11-09 17:41:52 UTC (rev 66930)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java 2007-11-09 17:49:40 UTC (rev 66931)
@@ -882,7 +882,7 @@
/**
*
- * @return servlet/run-as <String servlet-name, SecurityRoleMetaData>
+ * @return servlet/run-as <String servlet-name, RunAsIdentityMetaData>
*/
public Map<String, RunAsIdentityMetaData> getRunAsIdentity()
{
More information about the jboss-cvs-commits
mailing list