package org.gatein.integration.jboss.as7.deployment; import org.jboss.as.ee.structure.DeploymentType; import org.jboss.as.ee.structure.DeploymentTypeMarker; import org.jboss.as.server.deployment.DeploymentPhaseContext; import org.jboss.as.server.deployment.DeploymentUnit; import org.jboss.as.server.deployment.DeploymentUnitProcessingException; import org.jboss.as.server.deployment.DeploymentUnitProcessor; import org.jboss.as.web.deployment.WarMetaData; import org.jboss.metadata.web.spec.CookieConfigMetaData; import org.jboss.metadata.web.spec.SessionConfigMetaData; import org.jboss.metadata.web.spec.WebMetaData; /** * This deployment processor adds to the sharedWarMetaData for all web (war) applications. For example it's used to set the * cookie path to "/" of the session-config. * * @author <a href="mailto:nscavell@redhat.com">Nick Scavelli</a> */ public class GateInWarStructureDeploymentProcessor implements DeploymentUnitProcessor { @Override public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!DeploymentTypeMarker.isType(DeploymentType.WAR, deploymentUnit)) { return; } final WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); if (warMetaData == null) { return; } final WebMetaData sharedWebMetaData = warMetaData.getSharedWebMetaData(); if (sharedWebMetaData == null) { return; } // Set cookie-path to "/" for all web applications SessionConfigMetaData sessionConfig = sharedWebMetaData.getSessionConfig(); if (sessionConfig == null) { sessionConfig = new SessionConfigMetaData(); warMetaData.getWebMetaData().setSessionConfig(sessionConfig); } CookieConfigMetaData cookieConfig = sessionConfig.getCookieConfig(); if (cookieConfig == null) { cookieConfig = new CookieConfigMetaData(); sessionConfig.setCookieConfig(cookieConfig); } cookieConfig.setPath("/"); } @Override public void undeploy(DeploymentUnit context) { } }