[portal-commits] JBoss Portal SVN: r13019 - in modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer: portlet and 1 other directory.
portal-commits at lists.jboss.org
portal-commits at lists.jboss.org
Wed Mar 11 15:12:19 EDT 2009
Author: mwringe
Date: 2009-03-11 15:12:19 -0400 (Wed, 11 Mar 2009)
New Revision: 13019
Modified:
modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/parsing/MergedPortletParsingDeployer.java
modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/InstanceDeployer.java
modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/PortletDeployer.java
Log:
Fix the merged parsing deployer to handle the situation where a jboss-portlet.xml file is missing and no appId has been set.
Modified: modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/parsing/MergedPortletParsingDeployer.java
===================================================================
--- modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/parsing/MergedPortletParsingDeployer.java 2009-03-11 10:57:12 UTC (rev 13018)
+++ modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/parsing/MergedPortletParsingDeployer.java 2009-03-11 19:12:19 UTC (rev 13019)
@@ -23,6 +23,7 @@
package org.jboss.portal.deployer.parsing;
import java.io.InputStream;
+import java.util.HashMap;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.DeploymentStages;
@@ -32,6 +33,7 @@
import org.jboss.portal.deployer.PortalEntityResolver;
import org.jboss.portal.deployer.PortalResolverFactory;
import org.jboss.portal.deployer.PortalUnmarshallerFactory;
+import org.jboss.portal.deployer.webapp.WebAppContextDeployer;
import org.jboss.portal.metadata.jboss.app.PortalAppMetaData;
import org.jboss.portal.metadata.jboss.portlet.JBossPortletAppMetaData;
import org.jboss.portal.metadata.jboss.portlet.JBossPortletMetaData;
@@ -57,11 +59,17 @@
public MergedPortletParsingDeployer()
{
setAllInputs(false);
- setInput(JBossPortletAppMetaData.class);
- addInput(PortletApplication10MetaData.class);
+ setInput(PortletApplication10MetaData.class);
+ addInput(JBossPortletAppMetaData.class);
+ addInput(WebAppContextDeployer.PORTLET_APP_CONTEXT_PATH_ATTACHMENT);
+
setOutput(JBossPortletAppMetaData.class);
addOutput(PORTLET_MERGED_ATTACHMENT_NAME);
- this.setStage(DeploymentStages.POST_PARSE);
+
+ // normaly a merged parsing deployer should have a stage
+ // of post_parse but we need to merge information from
+ // the deployed webapplication if applicable for the id.
+ this.setStage(DeploymentStages.INSTALLED);
}
public String getStandardPortletFileLocation()
@@ -75,26 +83,54 @@
}
public void deploy(DeploymentUnit unit) throws DeploymentException
- {
+ {
+ PortletApplication10MetaData portletAppMetaData = unit.getAttachment(PortletApplication10MetaData.class);
JBossPortletAppMetaData jbossAppMetaData = unit.getAttachment(JBossPortletAppMetaData.class);
- PortletApplication10MetaData portletAppMetaData = unit.getAttachment(PortletApplication10MetaData.class);
+ String contextPath = unit.getAttachment(WebAppContextDeployer.PORTLET_APP_CONTEXT_PATH_ATTACHMENT, String.class);
+ PortalAppMetaData appMetaData = unit.getAttachment(PortalAppMetaData.class);
- // use the app-name from the jboss-portal-app.xml file if it exists
- PortalAppMetaData appMetaData = unit.getAttachment(PortalAppMetaData.class);
- if (jbossAppMetaData.getAppId() == null && appMetaData != null && appMetaData.getAppName() != null)
+ if (jbossAppMetaData == null)
{
- jbossAppMetaData.setAppId(appMetaData.getAppName());
+ jbossAppMetaData = createJBossPortletMetaData();
}
-
- try{
+ if (jbossAppMetaData.getAppId() == null)
+ {
+ if (appMetaData != null && appMetaData.getAppName() != null)
+ {
+ jbossAppMetaData.setAppId(appMetaData.getAppName());
+ }
+ else if (contextPath != null)
+ {
+ jbossAppMetaData.setAppId(contextPath);
+ }
+ else
+ {
+ throw new DeploymentException(
+ "Could not determine the app id for the portlet. It could not " +
+ "be determined from jboss-portlet.xml or jboss-portal-app.xml " +
+ "and the context path for the deployment could not be determined");
+ }
+ }
+
+ merge(jbossAppMetaData, portletAppMetaData);
+
+ unit.addAttachment(PORTLET_MERGED_ATTACHMENT_NAME, jbossAppMetaData, JBossPortletAppMetaData.class);
+ }
+
+ protected void merge(JBossPortletAppMetaData jbossAppMetaData, PortletApplication10MetaData portletAppMetaData) throws DeploymentException
+ {
+ try
+ {
+
InputStream stream = this.getClass().getClassLoader().getResourceAsStream(standardPortletFileLocation);
InputSource source = new InputSource(stream);
-
+
SchemaBindingResolver resolver = PortalResolverFactory.getInstance().getSchemaBindingResolver();
Unmarshaller unmarshaller = PortalUnmarshallerFactory.getInstance().getUnmarshaller();
- JBossPortletAppMetaData defaultAppMetaData = (JBossPortletAppMetaData)unmarshaller.unmarshal(source, resolver);
-
+ JBossPortletAppMetaData defaultAppMetaData = (JBossPortletAppMetaData) unmarshaller
+ .unmarshal(source, resolver);
+
if (defaultAppMetaData != null)
{
log.debug("Found standard jboss app meta data");
@@ -105,18 +141,23 @@
for (PortletMetaData portlets : portletAppMetaData.getPortlets().values())
{
String name = portlets.getPortletName();
+ if (jbossAppMetaData.getPortlets() == null)
+ {
+ HashMap jbossPortlets = new HashMap<String, JBossPortletMetaData>();
+ jbossAppMetaData.setPortlets(jbossPortlets);
+ }
JBossPortletMetaData jbossPortletMD = jbossAppMetaData.getPortlets().get(name);
if (jbossPortletMD != null)
{
log.debug("Merging default jboss portlet meta data for " + name);
jbossPortletMD.merge(defaultPortletMetaData);
}
- else
+ else
{
log.debug("Using default jboss portlet meta data for " + name);
- jbossAppMetaData.getPortlets().put(name, (JBossPortletMetaData)defaultPortletMetaData.clone());
+ jbossAppMetaData.getPortlets().put(name, (JBossPortletMetaData) defaultPortletMetaData.clone());
}
- }
+ }
}
}
}
@@ -124,10 +165,16 @@
{
throw new DeploymentException("Cannot deploy portlet application", e);
}
-
- unit.addAttachment(PORTLET_MERGED_ATTACHMENT_NAME, jbossAppMetaData, JBossPortletAppMetaData.class);
-
}
+
+ protected JBossPortletAppMetaData createJBossPortletMetaData()
+ {
+ JBossPortletAppMetaData jbossPortletAppMetaData = new JBossPortletAppMetaData();
+ HashMap portletMap = new HashMap<String, JBossPortletMetaData>();
+ jbossPortletAppMetaData.setPortlets(portletMap);
+ return jbossPortletAppMetaData;
+ }
+
}
Modified: modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/InstanceDeployer.java
===================================================================
--- modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/InstanceDeployer.java 2009-03-11 10:57:12 UTC (rev 13018)
+++ modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/InstanceDeployer.java 2009-03-11 19:12:19 UTC (rev 13019)
@@ -29,6 +29,7 @@
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.portal.deployer.container.InstanceDeployment;
import org.jboss.portal.deployer.parsing.MergedPortletParsingDeployer;
+import org.jboss.portal.deployer.webapp.WebAppContextDeployer;
import org.jboss.portal.metadata.jboss.portlet.JBossPortletAppMetaData;
import org.jboss.portal.metadata.portlet.instances.PortletDeploymentInstancesMetaData;
@@ -56,6 +57,8 @@
// have reference to the portlet before an instance of it can be deployed.
this.addInput(PortletDeployer.PORLET_DEPLOYED);
+ this.addInput(WebAppContextDeployer.PORTLET_APP_CONTEXT_PATH_ATTACHMENT);
+
this.setStage(DeploymentStages.INSTALLED);
}
@@ -70,7 +73,7 @@
{
PortletDeploymentInstancesMetaData deploymentInstancesMetaData = unit.getAttachment(PortletDeploymentInstancesMetaData.class);
JBossPortletAppMetaData appMetaData = unit.getAttachment(MergedPortletParsingDeployer.PORTLET_MERGED_ATTACHMENT_NAME,JBossPortletAppMetaData.class);
-
+
deployment.deployInstances(deploymentInstancesMetaData, appMetaData.getAppId());
}
Modified: modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/PortletDeployer.java
===================================================================
--- modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/PortletDeployer.java 2009-03-11 10:57:12 UTC (rev 13018)
+++ modules/deployer/trunk/deployer/src/main/java/org/jboss/portal/deployer/portlet/PortletDeployer.java 2009-03-11 19:12:19 UTC (rev 13019)
@@ -23,6 +23,7 @@
package org.jboss.portal.deployer.portlet;
import java.util.ArrayList;
+import java.util.HashMap;
import javax.servlet.ServletContext;
@@ -36,7 +37,14 @@
import org.jboss.portal.deployer.parsing.MergedPortletParsingDeployer;
import org.jboss.portal.deployer.webapp.WebAppContextDeployer;
import org.jboss.portal.metadata.jboss.portlet.JBossPortletAppMetaData;
+import org.jboss.portal.metadata.jboss.portlet.JBossPortletMetaData;
import org.jboss.portal.metadata.portlet.PortletApplication10MetaData;
+import org.jboss.portal.metadata.portlet.PortletApplication20MetaData;
+import org.jboss.portal.metadata.portlet.event.EventDefinitionMetaData;
+import org.jboss.portal.metadata.portlet.event.EventDefinitionReferenceMetaData;
+import org.jboss.portal.metadata.portlet.portlet.PortletMetaData;
+import org.jboss.portal.metadata.portlet.portlet.PortletModeMetaData;
+import org.jboss.portal.metadata.portlet.portlet.SupportsMetaData;
import org.jboss.web.WebApplication;
import org.jboss.web.deployers.AbstractWarDeployer;
@@ -78,12 +86,7 @@
String contextPath = unit.getAttachment(WebAppContextDeployer.PORTLET_APP_CONTEXT_PATH_ATTACHMENT, String.class);
ServletContext servletContext = unit.getAttachment(WebAppContextDeployer.PORTLET_APP_SERVLET_CONTEXT_ATTACHMENT, ServletContext.class);
WebApplication webapp = unit.getAttachment(WebApplication.class);
-
- if (jbossPortletMetaData.getAppId() == null)
- {
- jbossPortletMetaData.setAppId(contextPath);
- }
-
+
this.deployment.deployPortlets(servletContext, webapp.getURL(), webapp.getClassLoader(), contextPath, jbossPortletMetaData, portletMetaData);
unit.addAttachment(PORLET_DEPLOYED, "deployed");
More information about the portal-commits
mailing list