You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2009/04/16 16:09:37 UTC

svn commit: r765643 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/ components/jetspeed-portal/src/mai...

Author: ate
Date: Thu Apr 16 14:09:37 2009
New Revision: 765643

URL: http://svn.apache.org/viewvc?rev=765643&view=rev
Log:
Completing JS2-938: Create flyweight PortletWindow instances for each request, the handle to access and store all portlet interaction data and drop the PortletEntityImpl usage
See: http://issues.apache.org/jira/browse/JS2-938

The task remaining was providing a new solution for the previously used PortletWindowCache, specifically with respect to caching PortletDefinitions
This now is implemented by leveraging the OJB cache itself (backed by a ehcache) as a shared/global (readonly) cache, both for PortletApplication and PortletDefinition instances.

As instances retrieved through this cache are shared, they should only be used for readonly purposes, like as for the PortletWindow.
To distinguise between the readonly and writing use-cases, I've added additional registry methods for retrieving a PortletApplication or PortletDefinition with a extra boolean parameter fromCache.
This way, current API usages will still (like before) retrieve fresh instances directly from the database, but with these new methods the much more optimal cache based retrieval is now possible.
For common usages, like the flyweight PortletWindows but also simple read checks I've already updated the current API usages where applicable.
Possibly other usages might be reviewed if they also could leverage the more optimal cache based retrieval methods.

Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/PortletApplicationAvailableHeathCheckValidator.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPageAction.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletPlacementContextImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/MultiSourceUserInfoManagerImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/UserInfoManagerImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PersistenceBrokerPortletRegistry.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PortletApplicationProxyImpl.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletregistry/PortletRegistry.java
    portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/portlet/PortletObjectProxy.java

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/PortletApplicationAvailableHeathCheckValidator.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/PortletApplicationAvailableHeathCheckValidator.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/PortletApplicationAvailableHeathCheckValidator.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/healthcheck/validators/PortletApplicationAvailableHeathCheckValidator.java Thu Apr 16 14:09:37 2009
@@ -95,7 +95,7 @@
                     messages.append(LINE_SEPARATOR);
                 }
                 messages.append(paName + ": ");
-                PortletApplication pa = portletRegistry.getPortletApplication(paName);
+                PortletApplication pa = portletRegistry.getPortletApplication(paName, true);
                 boolean thisPAStatus = portletFactory.isPortletApplicationRegistered(pa);
                 if (thisPAStatus)
                 {

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPageAction.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPageAction.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPageAction.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPageAction.java Thu Apr 16 14:09:37 2009
@@ -249,7 +249,7 @@
             String portletName = frag.getName();
             if ( portletName != null && portletName.length() > 0 )
             {
-                PortletDefinition portletDef = registry.getPortletDefinitionByUniqueName( portletName );
+                PortletDefinition portletDef = registry.getPortletDefinitionByUniqueName( portletName, true );
                 
                 if ( portletDef != null && portletIcons != null )
                 {

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java Thu Apr 16 14:09:37 2009
@@ -211,7 +211,7 @@
         if (found == false)
             return null;
         
-        return registry.getPortletDefinitionByUniqueName(name);
+        return registry.getPortletDefinitionByUniqueName(name, true);
     }
     
     public int compare(Object obj1, Object obj2)

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletPlacementContextImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletPlacementContextImpl.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletPlacementContextImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/layout/impl/PortletPlacementContextImpl.java Thu Apr 16 14:09:37 2009
@@ -811,7 +811,7 @@
     			if ( layoutName != null )
     			{
     				// logic below is copied from org.apache.jetspeed.portlets.MultiColumnPortlet
-    				portletDef = registry.getPortletDefinitionByUniqueName( layoutName );
+    				portletDef = registry.getPortletDefinitionByUniqueName( layoutName, true );
                     if ( portletDef != null )
                     {
                         InitParam sizesParam = portletDef.getInitParam( "sizes" );

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/JetspeedRequestContext.java Thu Apr 16 14:09:37 2009
@@ -655,7 +655,7 @@
     private PortletWindow createPortletWindow(ContentFragment fragment)
     {
         PortletWindow window = null;
-        PortletDefinition pd = rcc.getPortletRegistry().getPortletDefinitionByUniqueName(fragment.getName());
+        PortletDefinition pd = rcc.getPortletRegistry().getPortletDefinitionByUniqueName(fragment.getName(), true);
         if (pd != null)
         {
             window = new PortletWindowImpl(this, fragment, pd);

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/MultiSourceUserInfoManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/MultiSourceUserInfoManagerImpl.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/MultiSourceUserInfoManagerImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/MultiSourceUserInfoManagerImpl.java Thu Apr 16 14:09:37 2009
@@ -61,7 +61,7 @@
         {
             Map userInfoMap = new HashMap();
             Subject subject = context.getSubject();
-            PortletApplication pa = portletRegistry.getPortletApplication(appName);
+            PortletApplication pa = portletRegistry.getPortletApplication(appName, true);
             if (null == pa)
             {
                 log.debug(PortletRequest.USER_INFO + " is set to null");

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/UserInfoManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/UserInfoManagerImpl.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/UserInfoManagerImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/userinfo/impl/UserInfoManagerImpl.java Thu Apr 16 14:09:37 2009
@@ -118,7 +118,7 @@
             return null;
         }
 
-        PortletApplication pa = registry.getPortletApplication(appName);
+        PortletApplication pa = registry.getPortletApplication(appName, true);
         if (null == pa)
         {
             log.debug(PortletRequest.USER_INFO + " is set to null");

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PersistenceBrokerPortletRegistry.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PersistenceBrokerPortletRegistry.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PersistenceBrokerPortletRegistry.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PersistenceBrokerPortletRegistry.java Thu Apr 16 14:09:37 2009
@@ -18,32 +18,19 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
-import java.util.Map;
 
+import org.apache.jetspeed.cache.CacheElement;
 import org.apache.jetspeed.cache.JetspeedCache;
 import org.apache.jetspeed.cache.JetspeedCacheEventListener;
 import org.apache.jetspeed.components.dao.InitablePersistenceBrokerDaoSupport;
 import org.apache.jetspeed.components.portletpreferences.PortletPreferencesProvider;
 import org.apache.jetspeed.om.common.Support;
-import org.apache.jetspeed.om.portlet.ContainerRuntimeOption;
-import org.apache.jetspeed.om.portlet.Description;
-import org.apache.jetspeed.om.portlet.DisplayName;
-import org.apache.jetspeed.om.portlet.EventDefinitionReference;
-import org.apache.jetspeed.om.portlet.InitParam;
-import org.apache.jetspeed.om.portlet.Language;
-import org.apache.jetspeed.om.portlet.LocalizedField;
 import org.apache.jetspeed.om.portlet.PortletApplication;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
-import org.apache.jetspeed.om.portlet.Preferences;
-import org.apache.jetspeed.om.portlet.SecurityRoleRef;
-import org.apache.jetspeed.om.portlet.Supports;
 import org.apache.jetspeed.om.portlet.impl.PortletApplicationDefinitionImpl;
 import org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl;
-import org.apache.jetspeed.om.portlet.impl.PreferencesImpl;
 import org.apache.ojb.broker.query.Criteria;
 import org.apache.ojb.broker.query.QueryFactory;
 import org.springframework.dao.DataAccessException;
@@ -103,6 +90,7 @@
         this.preferenceService = preferenceService;
     }
     
+    @SuppressWarnings("unchecked")
     public Collection<PortletDefinition> getAllPortletDefinitions()
     {
         Criteria c = new Criteria();
@@ -114,6 +102,23 @@
 
     public PortletApplication getPortletApplication(String name)
     {
+        return getPortletApplication(name, false);
+    }
+    
+    public PortletApplication getPortletApplication(String name, boolean fromCache)
+    {
+        if (fromCache)
+        {
+            CacheElement cacheElement = applicationNameCache.get(name);
+            if (cacheElement != null)
+            {
+                cacheElement = applicationOidCache.get(((RegistryCacheObjectWrapper)cacheElement.getContent()).getId());
+                if (cacheElement != null)
+                {
+                    return (PortletApplication)cacheElement.getContent();
+                }
+            }
+        }
         Criteria c = new Criteria();
         c.addEqualTo("name", name);
         PortletApplication app = (PortletApplication) getPersistenceBrokerTemplate().getObjectByQuery(
@@ -122,6 +127,7 @@
         return app;
     }
 
+    @SuppressWarnings("unchecked")
     public Collection<PortletApplication> getPortletApplications()
     {
         Criteria c = new Criteria();
@@ -130,9 +136,26 @@
         postLoadColl(list);
         return list;
     }
-
+    
     public PortletDefinition getPortletDefinitionByUniqueName( String name )
     {
+        return getPortletDefinitionByUniqueName(name, false);
+    }
+
+    public PortletDefinition getPortletDefinitionByUniqueName( String name, boolean fromCache )
+    {
+        if (fromCache)
+        {
+            CacheElement cacheElement = portletNameCache.get(name);
+            if (cacheElement != null)
+            {
+                cacheElement = portletOidCache.get(((RegistryCacheObjectWrapper)cacheElement.getContent()).getId());
+                if (cacheElement != null)
+                {
+                    return (PortletDefinition)cacheElement.getContent();
+                }
+            }
+        }
         String appName = PortletRegistryHelper.parseAppName(name);
         String portletName = PortletRegistryHelper.parsePortletName(name);
 
@@ -153,7 +176,7 @@
 
     public boolean portletApplicationExists( String name )
     {
-        return getPortletApplication(name) != null;
+        return getPortletApplication(name, true) != null;
     }
     
     public boolean portletDefinitionExists( String portletName, PortletApplication app )
@@ -238,7 +261,7 @@
         try
         {
             getPersistenceBrokerTemplate().store(portlet);
-            ((PortletDefinition)portlet).storeChildren();
+            portlet.storeChildren();
         }
         catch (DataAccessException e)
         {
@@ -272,12 +295,12 @@
         {
             //System.out.println("%%% portlet remote removed " + key);            
             RegistryPortletCache.cacheRemoveQuiet((String)key, (RegistryCacheObjectWrapper)element);
-            PortletDefinition pd = this.getPortletDefinitionByUniqueName((String)key);
-            if (listeners != null)
+            if (listeners != null && !listeners.isEmpty())
             {
+                PortletDefinition pd = this.getPortletDefinitionByUniqueName((String)key);
                 for (int ix=0; ix < listeners.size(); ix++)
                 {
-                    RegistryEventListener listener = (RegistryEventListener)listeners.get(ix);
+                    RegistryEventListener listener = listeners.get(ix);
                     listener.portletRemoved(pd);
                 }        
             }           
@@ -286,12 +309,12 @@
         {
             //System.out.println("%%% PA remote removed " + key);
             RegistryApplicationCache.cacheRemoveQuiet((String) key, (RegistryCacheObjectWrapper)element);
-            PortletApplication pa = this.getPortletApplication((String)key);
-            if (listeners != null)
+            if (listeners != null && !listeners.isEmpty())
             {
+                PortletApplication pa = this.getPortletApplication((String)key);
                 for (int ix=0; ix < listeners.size(); ix++)
                 {
-                    RegistryEventListener listener = (RegistryEventListener)listeners.get(ix);
+                    RegistryEventListener listener = listeners.get(ix);
                     listener.applicationRemoved(pa);
                 }        
             }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PortletApplicationProxyImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PortletApplicationProxyImpl.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PortletApplicationProxyImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletregistry/PortletApplicationProxyImpl.java Thu Apr 16 14:09:37 2009
@@ -85,7 +85,7 @@
             {
                 if (app == null)
                 {
-                    app = registry.getPortletApplication(name);
+                    app = registry.getPortletApplication(name, true);
                 }
                 return m.invoke(app, args);
             }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletregistry/PortletRegistry.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletregistry/PortletRegistry.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletregistry/PortletRegistry.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletregistry/PortletRegistry.java Thu Apr 16 14:09:37 2009
@@ -37,14 +37,33 @@
     Collection<PortletDefinition> getAllPortletDefinitions();
 
     /**
-     * Retreives a PortletApplication by it's unique name.  We use
-     * PortletApplicationComposite interface which extends the PortletApplication
+     * Retrieves a PortletApplication by it's unique name.  We use
+     * PortletApplication interface which extends the Pluto PortletApplicationDefinition
      * and adds additional functionallity to it.
-     * @param id 
-     * @return PortletApplicationComposite
+     * <br/>
+     * This method will always retrieve a fresh instance from the database, bypassing
+     * internal cache and therefore should be used when expecting to perform a write operation.
+     * @param name 
+     * @return PortletApplication
      */
     PortletApplication getPortletApplication( String name );
 
+    /**
+     * Retreives a PortletApplication by it's unique name.  We use
+     * PortletApplication interface which extends the Pluto PortletApplicationDefinition
+     * and adds additional functionallity to it.
+     * <br/>
+     * This method will optionally try to retrieve a <em>shared</em> instance from an internal
+     * cache first. If not found it will retrieve a fresh instance from the database (which
+     * will also store the instance in the cache for future access).
+     * <br/>
+     * Because the returned instance might be shared it should only be used for readonly purposes.
+     * @param name
+     * @param fromCache when true first try to retrieve a shared instance from cache
+     * @return PortletApplication
+     */
+    PortletApplication getPortletApplication( String name, boolean fromCache );
+
     Collection<PortletApplication> getPortletApplications();
 
     /**
@@ -56,19 +75,34 @@
      * <br/>
      * <strong>EXAMPLE: </strong> com.myapp.portletApp1::weather-portlet
      * <br/>
-     * This methos automatically calls {@link getStoreableInstance(PortletDefinitionComposite portlet)}
-     * on the returned <code>PortletEntityInstance</code> 
+     * This method will always retrieve a fresh instance from the database, bypassing
+     * internal cache and therefore should be used when expecting to perform a write operation.
      * @param name portlets unique name.  
      * @return Portlet that matches the unique name 
-     * @throws java.lang.IllegalStateException If <code>PortletDefinitionComposite != null</code> AND
-     *  <code>PortletDefinitionComposite.getPortletApplicationDefinition() ==  null</code>.
-     * The reason for this is that every PortletDefinition is required to
-     * have a parent PortletApplicationDefinition
-     * 
      */
     PortletDefinition getPortletDefinitionByUniqueName( String name );
 
     /**
+     * unique name is a string formed by the combination of a portlet's
+     * unique within it's parent application plus the parent application's
+     * unique name within the portlet container using ":" as a delimiter. 
+     * <br/>
+     * <strong>FORMAT: </strong> <i>application name</i>::<i>portlet name</i>
+     * <br/>
+     * <strong>EXAMPLE: </strong> com.myapp.portletApp1::weather-portlet
+     * <br/>
+     * This method will optionally try to retrieve a <em>shared</em> instance from an internal
+     * cache first. If not found it will retrieve a fresh instance from the database (which
+     * will also store the instance in the cache for future access).
+     * <br/>
+     * Because the returned instance might be shared it should only be used for readonly purposes.
+     * @param name portlets unique name.  
+     * @param fromCache when true first try to retrieve a shared instance from cache
+     * @return Portlet that matches the unique name 
+     */
+    PortletDefinition getPortletDefinitionByUniqueName( String name, boolean fromCache );
+
+    /**
      * Checks whether or not a portlet application with this name has all ready
      * been registered to the container.
      * @param name portlet application name to check for.

Modified: portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/portlet/PortletObjectProxy.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/portlet/PortletObjectProxy.java?rev=765643&r1=765642&r2=765643&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/portlet/PortletObjectProxy.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/portlet/PortletObjectProxy.java Thu Apr 16 14:09:37 2009
@@ -316,7 +316,7 @@
         PortletFactory portletFactory = (PortletFactory) Jetspeed.getComponentManager().getComponent("portletFactory");
         ServletContext portalAppContext = ((ServletConfig) Jetspeed.getComponentManager().getComponent("ServletConfig")).getServletContext();
         
-        PortletDefinition portletDef = registry.getPortletDefinitionByUniqueName(this.customConfigModePortletUniqueName);
+        PortletDefinition portletDef = registry.getPortletDefinitionByUniqueName(this.customConfigModePortletUniqueName, true);
         PortletApplication portletApp = portletDef.getApplication();
         ServletContext portletAppContext = portalAppContext.getContext(portletApp.getContextPath());
         



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org