Author: giacomo Date: Sun Nov 7 09:05:24 2004 New Revision: 56853 Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java Log: migrated to the RunnableManager package
Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/AbstractCopletAdapter.java Sun Nov 7 09:05:24 2004 @@ -23,6 +23,7 @@ import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; import org.apache.avalon.framework.thread.ThreadSafe; +import org.apache.cocoon.components.thread.RunnableManager; import org.apache.cocoon.portal.coplet.CopletData; import org.apache.cocoon.portal.coplet.CopletInstanceData; import org.apache.cocoon.portal.coplet.adapter.CopletAdapter; @@ -30,6 +31,7 @@ import org.apache.cocoon.xml.XMLUtils; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; +import EDU.oswego.cs.dl.util.concurrent.CountDown; /** * This is the abstract base adapter to use pipelines as coplets @@ -60,7 +62,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a> * - * @version CVS $Id: AbstractCopletAdapter.java,v 1.11 2004/04/25 20:09:34 haul Exp $ + * @version CVS $Id$ */ public abstract class AbstractCopletAdapter extends AbstractLogEnabled @@ -115,14 +117,13 @@ if ( timeout != null ) { final int milli = timeout.intValue() * 1000; LoaderThread loader = new LoaderThread(this, coplet, buffer); - Thread thread = new Thread(loader); - thread.start(); + final RunnableManager runnableManager = (RunnableManager)this.manager.lookup( RunnableManager.ROLE ); + runnableManager.execute( loader ); + this.manager.release( runnableManager ); try { - thread.join(milli); + read = loader.join( milli ); } catch (InterruptedException ignore) { - } - if ( loader.finished ) { - read = true; + // ignored } } else { this.streamContent( coplet, buffer ); @@ -202,10 +203,10 @@ final class LoaderThread implements Runnable { - private AbstractCopletAdapter adapter; - private ContentHandler handler; - private CopletInstanceData coplet; - boolean finished; + private final AbstractCopletAdapter adapter; + private final ContentHandler handler; + private final CopletInstanceData coplet; + private final CountDown finished; Exception exception; public LoaderThread(AbstractCopletAdapter adapter, @@ -214,6 +215,7 @@ this.adapter = adapter; this.coplet = coplet; this.handler = handler; + this.finished = new CountDown( 1 ); } public void run() { @@ -222,8 +224,14 @@ } catch (Exception local) { this.exception = local; } finally { - this.finished = true; + this.finished.release(); } + } + + boolean join( final long milis ) + throws InterruptedException + { + return this.finished.attempt( milis ); } }