A
download MultiException.java
Language: Java
Copyright: (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
LOC: 65
Project Info
wotonomy
Server: SourceForge
Type: cvs
...\wotonomy\org\mortbay\util\
   B64Code.java
   BadResource.java
   BlockingQueue.java
   ...ArrayISO8859Writer.java
   ...ArrayOutputStream2.java
   ByteArrayPool.java
   ...BufferOutputStream.java
   CachedResource.java
   Code.java
   CodeException.java
   Credential.java
   DateCache.java
   FileResource.java
   Frame.java
   InetAddrPort.java
   IO.java
   JarFileResource.java
   JarResource.java
   KeyPairTool.java
   LazyList.java
   LifeCycle.java
   LifeCycleThread.java
   LineInput.java
   Loader.java
   Log.java
   LogSink.java
   LogWriter.java
   MultiException.java
   MultiMap.java
   Observed.java
   OutputStreamLogSink.java
   Password.java
   Primitive.java
   QuotedStringTokenizer.java
   Resource.java
   ...erFileOutputStream.java
   SingletonList.java
   StringBufferWriter.java
   StringMap.java
   StringUtil.java
   TempByteHolder.java
   TestCase.java
   ThreadedServer.java
   ThreadPool.java
   TypeUtil.java
   UnixCrypt.java
   URI.java
   UrlEncoded.java
   URLResource.java
   WriterOutputStream.java

// ========================================================================
// Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
// $Id: MultiException.java,v 1.1 2003/02/13 22:39:17 mpowers Exp $
// ========================================================================

package org.mortbay.util;
import java.util.List;


/* ------------------------------------------------------------ */
/** Wraps multiple exceptions.
 *
 * Allows multiple exceptions to be thrown as a single exception.
 *
 * @version 1.0 Thu Mar 29 2001
 * @author Greg Wilkins (gregw)
 */
public class MultiException extends Exception
{
    private LazyList nested;

    /* ------------------------------------------------------------ */
    public MultiException()
    {
        super("Multiple exceptions");
    }

    /* ------------------------------------------------------------ */
    public void add(Exception e)
    {
        if (e instanceof MultiException)
        {
            MultiException me = (MultiException)e;
            for (int i=0;i<LazyList.size(me.nested);i++)
                nested=LazyList.add(nested,LazyList.get(me.nested,i));
        }
        else
            nested=LazyList.add(nested,e);
    }

    /* ------------------------------------------------------------ */
    public int size()
    {
        return LazyList.size(nested);
    }
    
    /* ------------------------------------------------------------ */
    public List getExceptions()
    {
        return LazyList.getList(nested);
    }
    
    /* ------------------------------------------------------------ */
    public Exception getException(int i)
    {
        return (Exception) LazyList.get(nested,i);
    }

    /* ------------------------------------------------------------ */
    /** Throw a multiexception.
     * If this multi exception is empty then no action is taken. If it
     * contains a single exception that is thrown, otherwise the this
     * multi exception is thrown. 
     * @exception Exception 
     */
    public void ifExceptionThrow()
        throws Exception
    {
        switch (LazyList.size(nested))
        {
          case 0:
              break;
          case 1:
              throw (Exception)LazyList.get(nested,0);
          default:
              throw this;
        }
    }
    
    /* ------------------------------------------------------------ */
    /** Throw a multiexception.
     * If this multi exception is empty then no action is taken. If it
     * contains a any exceptions then this
     * multi exception is thrown. 
     */
    public void ifExceptionThrowMulti()
        throws MultiException
    {
        if (LazyList.size(nested)>0)
            throw this;
    }

    /* ------------------------------------------------------------ */
    public String toString()
    {
        if (LazyList.size(nested)>0)
            return "org.mortbay.util.MultiException"+
                LazyList.getList(nested);
        return "org.mortbay.util.MultiException[]";
    }

    /* ------------------------------------------------------------ */
    public void printStackTrace()
    {
        super.printStackTrace();
        for (int i=0;i<LazyList.size(nested);i++)
            ((Throwable)LazyList.get(nested,i)).printStackTrace();
    }
    
    
}

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us