public void deploy(final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { return; // Nothing we can do without WarMetaData } final ResourceRoot deploymentRoot = deploymentUnit.getAttachment(org.jboss.as.server.deployment.Attachments.DEPLOYMENT_ROOT); if (deploymentRoot == null) { return; // We don't have a root to work with } final DeploymentUnit parent = deploymentUnit.getParent(); if (parent == null || !DeploymentTypeMarker.isType(DeploymentType.EAR, parent)) { return; // Only care if this war is nested in an EAR } final EarMetaData earMetaData = parent.getAttachment(Attachments.EAR_METADATA); if (earMetaData == null) { return; // Nothing to see here } final ModulesMetaData modulesMetaData = earMetaData.getModules(); if (modulesMetaData != null) for (ModuleMetaData moduleMetaData : modulesMetaData) { if (Web.equals(moduleMetaData.getType()) && moduleMetaData.getFileName().equals(deploymentRoot.getRootName())) { String contextRoot = WebModuleMetaData.class.cast(moduleMetaData.getValue()).getContextRoot(); if (contextRoot == null && (warMetaData.getJBossWebMetaData() == null || warMetaData.getJBossWebMetaData().getContextRoot() == null)) { contextRoot = "/" + parent.getName().substring(0, parent.getName().length() - 4) + "/" + deploymentUnit.getName().substring(0, deploymentUnit.getName().length() - 4); } if (contextRoot != null) { JBossWebMetaData jBossWebMetaData = warMetaData.getJBossWebMetaData(); if (jBossWebMetaData == null) { jBossWebMetaData = new JBoss70WebMetaData(); warMetaData.setJBossWebMetaData(jBossWebMetaData); } jBossWebMetaData.setContextRoot(contextRoot); } return; } } }
/** * Gets the JBossWebMetaData from the WarMetaData attached to the provided deployment unit, if * any. * * @param unit * @return the JBossWebMetaData or null if either that or the parent WarMetaData are not found. */ public static JBossWebMetaData getJBossWebMetaData(final DeploymentUnit unit) { final WarMetaData warMetaData = getOptionalAttachment(unit, WarMetaData.ATTACHMENT_KEY); JBossWebMetaData result = null; if (warMetaData != null) { result = warMetaData.getMergedJBossWebMetaData(); if (result == null) { result = warMetaData.getJBossWebMetaData(); } } else { result = getOptionalAttachment(unit, WSAttachmentKeys.JBOSSWEB_METADATA_KEY); } return result; }