ate         2005/03/25 16:22:53

  Modified:    components/portlet-factory/src/java/org/apache/jetspeed/factory
                        JetspeedPortletInstance.java
  Log:
  Removed waiting for active Threads to complete before destroying the portlet.
  I ran into deadlocks while testing this with J1/Fusion. Unclear why, but 
don't have the time to continue debugging this.
  
  Revision  Changes    Path
  1.3       +9 -51     
jakarta-jetspeed-2/components/portlet-factory/src/java/org/apache/jetspeed/factory/JetspeedPortletInstance.java
  
  Index: JetspeedPortletInstance.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/portlet-factory/src/java/org/apache/jetspeed/factory/JetspeedPortletInstance.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JetspeedPortletInstance.java      23 Mar 2005 22:25:50 -0000      1.2
  +++ JetspeedPortletInstance.java      26 Mar 2005 00:22:53 -0000      1.3
  @@ -39,7 +39,6 @@
   {
     private Portlet portlet;
     private PortletConfig config;
  -  private long threadCount;
     private boolean destroyed;
     
     public JetspeedPortletInstance(Portlet portlet)
  @@ -47,48 +46,21 @@
       this.portlet = portlet;
     }
     
  -  private void enterPortletThread() throws UnavailableException
  +  private void checkAvailable() throws UnavailableException
     {
  -    synchronized(portlet)
  -    {
  -        if ( destroyed )
  -        {
  -            throw new UnavailableException("Portlet 
"+portlet.getClass().getName()+" no longer available");
  -        }
  -        threadCount++;
  -    }
  -  }
  -  
  -  private synchronized void exitPortletThread()
  -  {    
  -    synchronized(portlet)
  -    {
  -      threadCount--;
  -      if ( threadCount == 0 && destroyed )
  +      if ( destroyed )
         {
  -        portlet.notifyAll();
  +          throw new UnavailableException("Portlet 
"+portlet.getClass().getName()+" no longer available");
         }
  -    }
     }
     
     public void destroy()
     {
  -    synchronized(portlet)
  -    {
         if (!destroyed)
         {
           destroyed = true;
  -        if (threadCount > 0)
  -        {
  -          try
  -          {
  -            portlet.wait();
  -          }
  -          catch (InterruptedException e) {}
  -        }
         }
  -    }
  -    portlet.destroy();
  +      portlet.destroy();
     }
     
     public boolean equals(Object obj)
  @@ -114,28 +86,14 @@
     
     public void processAction(ActionRequest request, ActionResponse response) 
throws PortletException, IOException
     {
  -    enterPortletThread();
  -    try
  -    {
  -        portlet.processAction(request, response);
  -    }
  -    finally
  -    {
  -        exitPortletThread();
  -    }
  +    checkAvailable();
  +    portlet.processAction(request, response);
     }
     
     public void render(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
     {
  -    enterPortletThread();
  -    try
  -    {
  -        portlet.render(request, response);
  -    }
  -    finally
  -    {
  -        exitPortletThread();
  -    }
  +    checkAvailable();
  +    portlet.render(request, response);
     }
     
     public String toString()
  
  
  

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

Reply via email to