String key = EjbAnnotationMetaDataDeployer.EJB_ANNOTATED_ATTACHMENT_NAME;
JBossMetaData annotatedMetaData = unit.getAttachment(key, JBossMetaData.class);
if (ejbJarMetaData == null && metaData == null && annotatedMetaData == null)
return;
JBossMetaData specMetaData = new JBoss50MetaData();
if (ejbJarMetaData != null)
{
specMetaData.merge(null, ejbJarMetaData);
if (annotatedMetaData != null)
{
JBossMetaData specMerged = new JBoss50MetaData();
specMerged.merge(specMetaData, annotatedMetaData);
specMetaData = specMerged;
}
}
else
specMetaData = annotatedMetaData;
// Create a merged view
JBossMetaData mergedMetaData = new JBoss50MetaData();
mergedMetaData.merge(metaData, specMetaData);
// Incorporate any ear level overrides
DeploymentUnit topUnit = unit.getTopLevel();
if (topUnit != null && topUnit.getAttachment(JBossAppMetaData.class) != null)
{
JBossAppMetaData earMetaData = topUnit.getAttachment(JBossAppMetaData.class);
// Security domain
String securityDomain = earMetaData.getSecurityDomain();
if (securityDomain != null && mergedMetaData.getSecurityDomain() == null)
mergedMetaData.setSecurityDomain(securityDomain);
//Security Roles
SecurityRolesMetaData earSecurityRolesMetaData = earMetaData.getSecurityRoles();
if (earSecurityRolesMetaData != null)
{
JBossAssemblyDescriptorMetaData jadmd = mergedMetaData.getAssemblyDescriptor();
if (jadmd == null)
{
jadmd = new JBossAssemblyDescriptorMetaData();
mergedMetaData.setAssemblyDescriptor(jadmd);
}
SecurityRolesMetaData mergedSecurityRolesMetaData = jadmd.getSecurityRoles();
if (mergedSecurityRolesMetaData == null)
jadmd.setSecurityRoles(earSecurityRolesMetaData);