Author: taylor
Date: Sun Jun 10 18:46:18 2007
New Revision: 545987
URL: http://svn.apache.org/viewvc?view=rev&rev=545987
Log:
https://issues.apache.org/jira/browse/JS2-711
-- looking into using INTERNAL portlet application type for layouts since we
are having troubles with the class loader and JSP in local portlet apps
-- patch from Mohan to support configurations of JSP or VM
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/JetspeedEngine.java
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/MutablePortletApplication.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/deployment.xml
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/JetspeedEngine.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/JetspeedEngine.java?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
---
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/JetspeedEngine.java
(original)
+++
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/JetspeedEngine.java
Sun Jun 10 18:46:18 2007
@@ -34,6 +34,7 @@
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.request.RequestContextComponent;
import org.apache.jetspeed.statistics.PortalStatistics;
+import org.apache.jetspeed.tools.pamanager.PortletApplicationManagement;
import org.apache.ojb.broker.util.ClassHelper;
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
@@ -123,6 +124,11 @@
// silenty ignore, its not configured
// TODO: statistics as an AOP advice
}
+ // TODO: complete this work for JSP
(https://issues.apache.org/jira/browse/JS2-711)
+ // I think config.getServletName is incorrect, need to fix this
and change this name to jetspeed-layouts:: when looking up in registry
+ // but not when dispatching, still trying to figure that out
+ //PortletApplicationManagement pam =
(PortletApplicationManagement)componentManager.getComponent("PAM");
+ //pam.startInternalApplication(config.getServletName());
}
catch (Throwable e)
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
---
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
(original)
+++
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
Sun Jun 10 18:46:18 2007
@@ -73,7 +73,7 @@
protected int descriptorChangeMonitorInterval =
DEFAULT_DESCRIPTOR_CHANGE_MONITOR_INTERVAL;
protected DescriptorChangeMonitor monitor;
protected boolean started;
-
+ protected String appRoot;
protected NodeManager nodeManager;
/**
@@ -82,7 +82,7 @@
public PortletApplicationManager(PortletFactory portletFactory,
PortletRegistry registry,
PortletEntityAccessComponent entityAccess,
PortletWindowAccessor windowAccess,
PermissionManager permissionManager, SearchEngine searchEngine,
- RoleManager roleManager, List permissionRoles, NodeManager nodeManager)
+ RoleManager roleManager, List permissionRoles, NodeManager
nodeManager, String appRoot)
{
this.portletFactory = portletFactory;
this.registry = registry;
@@ -93,6 +93,7 @@
this.roleManager = roleManager;
this.permissionRoles = permissionRoles;
this.nodeManager = nodeManager;
+ this.appRoot = appRoot;
}
public void start()
@@ -161,9 +162,19 @@
throws RegistryException
{
checkStarted();
- startPA(contextName, warStruct, paClassLoader, true);
+ startPA(contextName, warStruct, paClassLoader,
MutablePortletApplication.LOCAL);
}
+ public void startInternalApplication(String contextName) throws
RegistryException
+ {
+ checkStarted();
+ File webinf = new File (appRoot);
+ ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
+ DirectoryHelper dir = new DirectoryHelper(webinf);
+ startPA(contextName, dir, contextClassLoader,
MutablePortletApplication.INTERNAL);
+ // startInternal(contextName, warStruct, paClassLoader, true);
+ }
+
public void startPortletApplication(String contextName,
FileSystemHelper warStruct,
ClassLoader paClassLoader)
throws RegistryException
@@ -173,7 +184,7 @@
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
try
{
- startPA(contextName, warStruct, paClassLoader, false);
+ startPA(contextName, warStruct, paClassLoader,
MutablePortletApplication.WEBAPP);
}
finally
{
@@ -184,7 +195,7 @@
public void stopLocalPortletApplication(String contextName)
throws RegistryException
{
- stopPA(contextName, true);
+ stopPA(contextName, MutablePortletApplication.LOCAL);
}
public void stopPortletApplication(String contextName)
@@ -194,7 +205,7 @@
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
try
{
- stopPA(contextName, false);
+ stopPA(contextName, MutablePortletApplication.WEBAPP);
}
finally
{
@@ -245,11 +256,6 @@
}
}
- protected int getApplicationType(boolean local)
- {
- return local ? MutablePortletApplication.LOCAL :
MutablePortletApplication.WEBAPP;
- }
-
protected void checkValidContextName(String contextName, boolean local)
throws RegistryException
{
@@ -272,7 +278,7 @@
}
protected MutablePortletApplication
registerPortletApplication(PortletApplicationWar paWar,
- MutablePortletApplication oldPA, boolean local, ClassLoader
paClassLoader)
+ MutablePortletApplication oldPA, int paType, ClassLoader
paClassLoader)
throws RegistryException
{
if (oldPA != null)
@@ -289,25 +295,22 @@
{
log.info("Loading portlet.xml...." + paName);
pa = paWar.createPortletApp(paClassLoader);
-
- if (local)
- {
-
pa.setApplicationType(MutablePortletApplication.LOCAL);
- }
- else
- {
-
pa.setApplicationType(MutablePortletApplication.WEBAPP);
- }
+ pa.setApplicationType(paType);
// load the web.xml
log.info("Loading web.xml...." + paName);
MutableWebApplication wa = paWar.createWebApp();
paWar.validate();
- if (local)
+ if (paType == MutablePortletApplication.LOCAL)
{
wa.setContextRoot("<portal>");
}
+ else if (paType == MutablePortletApplication.INTERNAL)
+ {
+ // TODO: this is screwing up the PSML as its set all over the
place to "jetspeed-layouts", not good
+ wa.setContextRoot("/" + paName);
+ }
pa.setWebApplicationDefinition(wa);
@@ -390,7 +393,7 @@
{
try
{
- unregisterPortletApplication(pa, local);
+ unregisterPortletApplication(pa,
(paType == MutablePortletApplication.LOCAL));
}
catch (Exception re)
{
@@ -403,14 +406,14 @@
}
protected void startPA(String contextName, FileSystemHelper warStruct,
- ClassLoader paClassLoader, boolean local)
+ ClassLoader paClassLoader, int paType)
throws RegistryException
{
- startPA(contextName, warStruct, paClassLoader, local, 0);
+ startPA(contextName, warStruct, paClassLoader, paType, 0);
}
protected void startPA(String contextName, FileSystemHelper warStruct,
- ClassLoader paClassLoader, boolean local, long checksum)
+ ClassLoader paClassLoader, int paType, long checksum)
throws RegistryException
{
PortletApplicationWar paWar = null;
@@ -443,16 +446,9 @@
if (pa != null)
{
- if ( pa.getApplicationType() != getApplicationType(local) )
+ if ( pa.getApplicationType() != paType )
{
- if ( local )
- {
- throw new RegistryException("Cannot start local
portlet application "+contextName+": it is not a local application");
- }
- else
- {
- throw new RegistryException("Cannot start portlet
application "+contextName+": it is a local application");
- }
+ throw new RegistryException("Cannot start portlet
application "+contextName+": as Application Types don't match: " +
pa.getApplicationType() + " != " + paType);
}
DescriptorChangeMonitor changeMonitor = this.monitor;
if (!monitored && changeMonitor != null)
@@ -469,7 +465,7 @@
// new
try
{
- pa = registerPortletApplication(paWar, pa, local,
paClassLoader);
+ pa = registerPortletApplication(paWar, pa, paType,
paClassLoader);
}
catch (Exception e)
{
@@ -521,7 +517,7 @@
}
}
if (deploy)
- pa = registerPortletApplication(paWar, pa, local,
paClassLoader);
+ pa = registerPortletApplication(paWar, pa, paType,
paClassLoader);
else
if (reregister)
{
@@ -550,7 +546,7 @@
DescriptorChangeMonitor changeMonitor = this.monitor;
if (!monitored && changeMonitor != null)
{
- changeMonitor.monitor(contextName,paClassLoader, local,
warStruct.getRootDirectory(), checksum);
+ changeMonitor.monitor(contextName,paClassLoader, paType,
warStruct.getRootDirectory(), checksum);
}
}
finally
@@ -569,7 +565,7 @@
}
}
- protected void stopPA(String contextName, boolean local)
+ protected void stopPA(String contextName, int paType)
throws RegistryException
{
MutablePortletApplication pa = null;
@@ -582,16 +578,9 @@
{
// ignore errors during portal shutdown
}
- if (pa != null && pa.getApplicationType() !=
getApplicationType(local) )
+ if (pa != null && pa.getApplicationType() != paType)
{
- if ( local )
- {
- throw new RegistryException("Cannot stop local portlet
application "+contextName+": it is not a local application");
- }
- else
- {
- throw new RegistryException("Cannot stop portlet application
"+contextName+": it is a local application");
- }
+ throw new RegistryException("Cannot stop portlet application
"+contextName+": as Application Types don't match: " + pa.getApplicationType()
+ " != " + paType);
}
DescriptorChangeMonitor monitor = this.monitor;
if ( monitor != null )
@@ -737,7 +726,7 @@
{
private String contextName;
private ClassLoader paClassLoader;
- private boolean local;
+ private int paType;
private File paDir;
private File[] descriptors;
private long descriptorModificationTime;
@@ -753,11 +742,11 @@
this.contextName = contextName;
}
- public DescriptorChangeMonitorInfo(String contextName, ClassLoader
paClassLoader, boolean local, File paDir, long checksum)
+ public DescriptorChangeMonitorInfo(String contextName, ClassLoader
paClassLoader, int paType, File paDir, long checksum)
{
this.contextName = contextName;
this.paClassLoader = paClassLoader;
- this.local = local;
+ this.paType = paType;
this.paDir = paDir.isAbsolute() ? paDir :
paDir.getAbsoluteFile();
this.checksum = checksum;
@@ -780,9 +769,9 @@
return paClassLoader;
}
- public boolean isLocal()
+ public int getPortletApplicationType()
{
- return local;
+ return paType;
}
public File getPADir()
@@ -876,9 +865,9 @@
monitorInfos.clear();
}
- public synchronized void monitor(String contextName, ClassLoader
paClassLoader, boolean local, File paDir, long checksum)
+ public synchronized void monitor(String contextName, ClassLoader
paClassLoader, int paType, File paDir, long checksum)
{
- monitorInfos.add(new DescriptorChangeMonitorInfo(contextName,
paClassLoader, local, paDir, checksum));
+ monitorInfos.add(new DescriptorChangeMonitorInfo(contextName,
paClassLoader, paType, paDir, checksum));
}
public synchronized void remove(String contextName)
@@ -924,7 +913,7 @@
try
{
pam.startPA(monitorInfo.getContextName(), new
DirectoryHelper(monitorInfo.getPADir()),
-
monitorInfo.getPAClassLoader(), monitorInfo.isLocal(),
monitorInfo.getChecksum());
+
monitorInfo.getPAClassLoader(), monitorInfo.getPortletApplicationType(),
monitorInfo.getChecksum());
}
catch (Exception e)
{
Modified:
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/MutablePortletApplication.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/MutablePortletApplication.java?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
---
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/MutablePortletApplication.java
(original)
+++
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/MutablePortletApplication.java
Sun Jun 10 18:46:18 2007
@@ -139,7 +139,13 @@
* stored in Jetspeed managed portlet application space.
*/
public static final int LOCAL = 1;
-
+
+ /**
+ * Marks this application as a INTERNAL portlet application,
+ * stored in Jetspeed managed portlet application space.
+ */
+ public static final int INTERNAL = 2;
+
/**
* Adds a Jetspeed component service to the collection of component
services allowed for this application.
*
Modified:
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
---
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
(original)
+++
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
Sun Jun 10 18:46:18 2007
@@ -34,6 +34,7 @@
void startPortletApplication(String contextName, FileSystemHelper warStruct,
ClassLoader paClassLoader) throws RegistryException;
void stopPortletApplication(String contextName) throws RegistryException;
void startLocalPortletApplication(String contextName, FileSystemHelper
warStruct, ClassLoader paClassLoader) throws RegistryException;
+ void startInternalApplication(String contextName) throws RegistryException;
void stopLocalPortletApplication(String contextName) throws
RegistryException;
public void unregisterPortletApplication(String paName) throws
RegistryException;
}
Modified:
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
---
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
(original)
+++
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
Sun Jun 10 18:46:18 2007
@@ -17,7 +17,9 @@
package org.apache.jetspeed.portlets.layout;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
import java.util.StringTokenizer;
import javax.portlet.ActionRequest;
@@ -84,6 +86,14 @@
protected PortletWindowAccessor windowAccess;
protected TemplateLocator decorationLocator;
+ //B: mk
+ private Map layoutTemplateProperties = new HashMap();
+ public static final String DEFAULT_TEMPLATE_EXT = ".vm";
+ public static final String TEMPLATE_EXTENSION_KEY = "template.extension";
+ public static final String DEFAULT_TEMPLATE_TYPE = "velocity";
+ public static final String TEMPLATE_TYPE_KEY = "template.type";
+
+ //E: mk
public void init( PortletConfig config ) throws PortletException
{
super.init(config);
@@ -118,7 +128,6 @@
templateLocator = (TemplateLocator)
getPortletContext().getAttribute("TemplateLocator");
decorationLocator = (TemplateLocator)
getPortletContext().getAttribute("DecorationLocator");
-
}
public void doHelp( RenderRequest request, RenderResponse response )
throws PortletException, IOException
@@ -146,9 +155,10 @@
}
- // TODO: Need to retreive layout.properties instead of
- // hard-coding ".vm"
- absHelpPage = jpt.getTemplate(helpPage + "/" +
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE + "-help.vm",
+ //Mohan: closed task
+ Configuration props = getConfiguration(request, helpPage);
+ String ext = (String) props.getString(TEMPLATE_EXTENSION_KEY);
+ absHelpPage = jpt.getTemplate(helpPage + "/" +
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE + "-help" + ext,
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE).getAppRelativePath();
log.debug("Path to help page for LayoutPortlet " +
absHelpPage);
request.setAttribute(PARAM_VIEW_PAGE, absHelpPage);
@@ -227,9 +237,13 @@
viewPage = "columns";
}
}
- // TODO: Need to retrieve layout.properties instead of
- // hard-coding ".vm"
- absViewPage = jpt.getTemplate(viewPage + "/" +
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE + ".vm",
+
+ //Mohan: closed task
+ Configuration props = getConfiguration(request, viewPage);
+ String ext = (String) props.getString(TEMPLATE_EXTENSION_KEY);
+
+
+ absViewPage = jpt.getTemplate(viewPage + "/" +
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE + ext,
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE).getAppRelativePath();
log.debug("Path to view page for LayoutPortlet " +
absViewPage);
request.setAttribute(PARAM_VIEW_PAGE, absViewPage);
@@ -585,4 +599,101 @@
throw e;
}
}
+
+ /**
+ * Gets the configuration (layout.properties) object for the decoration.
+ * @param name Name of the Decoration.
+ * @return <code>java.util.Properties</code> representing the configuration
+ * object.
+ */
+ protected Configuration getConfiguration( RenderRequest request, String
name )
+ {
+ Configuration props = null;
+ JetspeedPowerTool jpt = null;
+ String templatePropertiesPath = null;
+ String key = name;
+ try
+ {
+ jpt = getJetspeedPowerTool(request);
+ templatePropertiesPath = jpt.getTemplate(name + "/" +
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE + ".properties",
+ JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE).getAbsolutePath();
+ }
+ catch (PortletException e)
+ {
+ log.warn("Could not acquire JetspeedPowerTool from request",e);
+ }
+ catch (TemplateLocatorException e)
+ {
+ log.warn("Could not find templatePorpertiesPath",e);
+ }
+ catch (Exception e)
+ {
+ log.warn("Could not determine Layout template properties file",e);
+ }
+ // if no path then set name to "default"
+ if (null == templatePropertiesPath)
+ {
+ key = "default";
+ }
+ else
+ {
+ key = templatePropertiesPath;
+ }
+ props = (Configuration)this.layoutTemplateProperties.get(key);
+
+ if ( props != null )
+ {
+ return props;
+ }
+ if (log.isDebugEnabled()){
+ log.debug(
+ "Template descriptor path:<" + templatePropertiesPath + ">"
+ );
+ }
+
+ // load Decoration.CONFIG_FILE_NAME (layout.properties)
+ try
+ {
+ props = new PropertiesConfiguration(templatePropertiesPath);
+ if (log.isDebugEnabled())
+ log.debug("Successfully read in: <" + templatePropertiesPath +
"> ");
+ }
+ catch (Exception e)
+ {
+ props = new PropertiesConfiguration();
+ log.warn( "Could not locate the " + templatePropertiesPath + "
file for layout template \"" + name + "\". This layout template may not
exist.",e );
+ props.setProperty( "id", name );
+ props.setProperty( TEMPLATE_TYPE_KEY, DEFAULT_TEMPLATE_TYPE );
+ props.setProperty( TEMPLATE_EXTENSION_KEY, DEFAULT_TEMPLATE_EXT);
+ }
+ finally
+ {
+ String templateIdPropVal = (String) props.getProperty( "id" );
+ String templateNamePropVal = (String) props.getProperty(
TEMPLATE_TYPE_KEY );
+ String templateExtPropVal = (String)
props.getProperty(TEMPLATE_EXTENSION_KEY);
+
+ if ( templateIdPropVal == null )
+ {
+ templateIdPropVal = name;
+ props.setProperty( "id", templateIdPropVal );
+ }
+
+ if ( templateNamePropVal == null )
+ {
+ props.setProperty( TEMPLATE_TYPE_KEY, DEFAULT_TEMPLATE_TYPE );
+ }
+ if ( templateExtPropVal == null )
+ {
+ props.setProperty( TEMPLATE_EXTENSION_KEY,
DEFAULT_TEMPLATE_EXT );
+ }
+ }
+
+ this.layoutTemplateProperties.put(key, props);
+ if (log.isDebugEnabled())
+ {
+ log.debug("Template layout.properties extension is:<" +
props.getString(TEMPLATE_EXTENSION_KEY));
+ }
+ return props;
+ }
+
}
Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/deployment.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/deployment.xml?view=diff&rev=545987&r1=545986&r2=545987
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/deployment.xml
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/deployment.xml Sun Jun
10 18:46:18 2007
@@ -54,12 +54,19 @@
</constructor-arg>
<constructor-arg><ref
bean="org.apache.jetspeed.cluster.NodeManager"/></constructor-arg>
+ <!-- application root -->
+ <constructor-arg>
+ <value>${applicationRoot}</value>
+ </constructor-arg>
+
+
<!-- optional configuration for automatic creation of not yet existing
roles as defined in the deployed web.xml:
<property name="autoCreateRoles"><value>true</value></property>
-->
<!-- optional descriptor change monitor check interval in seconds (0:
disabled, default: 10):
<property
name="descriptorChangeMonitorInterval"><value>10</value></property>
-->
+
</bean>
<!-- Portlet Application and Decorator deployment event listeners -->
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]