morciuch    2002/10/03 11:21:59

  Modified:    src/java/org/apache/jetspeed/services/persistence
                        JetspeedPortalPersistenceService.java
  Log:
  This patch minimizes object creation of PortletInstances by doing per-request 
caching on PortletInstance within the current HttpRequest.  PortletInstance's are 
keyed as "portlet_instance:<portlet id>".
  
  Bug fixed:
  This also fixed a bug I was experiencing when minimizing/restoring portlets.
  After either of these actions I was required to refresh the screen to see the 
expected effect, basically causing the portlet to re-read its state from the profile.  
I attributed this to too many instances of the same portlet instances floating around 
and being out of sync.
  
  Patch by Scott Weaver
  
  Revision  Changes    Path
  1.2       +17 -2     
jakarta-jetspeed/src/java/org/apache/jetspeed/services/persistence/JetspeedPortalPersistenceService.java
  
  Index: JetspeedPortalPersistenceService.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/persistence/JetspeedPortalPersistenceService.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JetspeedPortalPersistenceService.java     1 Jul 2002 04:30:24 -0000       1.1
  +++ JetspeedPortalPersistenceService.java     3 Oct 2002 18:21:59 -0000       1.2
  @@ -121,7 +121,22 @@
        */
       public PortletInstance getInstance(Portlet portlet, RunData data)
       {
  -         return new JetspeedPortletInstance(portlet, data);
  +             String attrKey = "portlet_instance:"+portlet.getID();
  +     // optimize portlet instance retreival by saving it to the request
  +     // this also guarantees the PortletInstance object is the same
  +     // object for the entire life of the request
  +     PortletInstance instance = (PortletInstance) 
data.getRequest().getAttribute(attrKey);
  +     if(instance != null)
  +     {
  +             return instance;
  +     }
  +     else
  +     {
  +             instance=  new JetspeedPortletInstance(portlet, data);
  +             data.getRequest().setAttribute(attrKey, instance);
  +             return instance;
  +     }
  +
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to