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]

Reply via email to