Project Report: fawkez

Packagesummary org.jcoderz.commons.util

org.jcoderz.commons.util.ThrowableUtilTest

LineHitsNoteSource
1  /*
2   * $Id: ThrowableUtilTest.java 1626 2010-04-07 06:36:10Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.commons.util;
34  
35  import java.lang.reflect.Method;
36  
37  import javax.servlet.ServletException;
38  import javax.servlet.UnavailableException;
39  import javax.xml.bind.JAXBException;
40  
41  import junit.framework.TestCase;
42  
43  import org.jaxen.JaxenException;
44  import org.jcoderz.commons.ArgumentMalformedException;
45 (1)import org.jcoderz.commons.Loggable;
46  import org.xml.sax.SAXException;
47  
48  /**
49   * Tests the ThrowableUtil class.
50   * @author Andreas Mandel
51   */
52100 public class ThrowableUtilTest
53  extends TestCase
54  {
55      /** Test the fixChaining method. */
56      public void testFixChaining ()
57      {
580         final RuntimeException in = new RuntimeException("in");
590         final SAXException sax
60          = new org.xml.sax.SAXParseException("SAX", null, in);
610         final JAXBException jaxb = new JAXBException(sax);
620         final RuntimeException out = new RuntimeException("Outer", jaxb);
63  
640         assertEquals("1st nesting level unexpected", jaxb, out.getCause());
650         assertEquals("2nd nesting level unexpected (pre chain)",
66                  null, jaxb.getCause());
670         assertEquals("3rd nesting level unexpected (pre chain)",
68                  null, sax.getCause());
69  
700         ThrowableUtil.fixChaining(out);
71  
720         assertEquals("2nd nesting level unexpected", sax, jaxb.getCause());
730         assertEquals("3rd nesting level unexpected", in, sax.getCause());
740     }
75  
76      /** Test the magic get cause detection code for certain Throwables. */
77      public void testGetCauseDetection ()
78      {
7950         getCauseDetectionTestHelper(SAXException.class, "getException");
800         getCauseDetectionTestHelper(ServletException.class, "getRootCause");
810         getCauseDetectionTestHelper(UnavailableException.class, "getRootCause");
820         getCauseDetectionTestHelper(
83                  javax.resource.spi.UnavailableException.class,
84                  "getLinkedException");
850         getCauseDetectionTestHelper(JaxenException.class, "getCause");
860     }
87  
88      /** Test {@link ThrowableUtil#collectNestedData(Loggable)}. */
89      public void testCollectNestedData ()
90      {
91100         final SAXException sax
92              = new org.xml.sax.SAXParseException(
93                  "SAX", "public id", "system id", 5, 4);
94100         final ArgumentMalformedException ex
95              = new ArgumentMalformedException("TEST", "VALUE", "Hint",
96                  sax);
97100         assertEquals("Parameter from nested Exception not found in list. "
98              + ex.getParameterNames(), "public id",
99              ex.getParameter(
100                  "CAUSE_1_org.xml.sax.SAXParseException#PublicId").get(0));
101100     }
102  
103      private void getCauseDetectionTestHelper (Class ex, String methodName)
104      {
1050         final Method m
106              = ThrowableUtil.findGetCauseMethod(ex.getMethods());
1070         assertNotNull("Could not get getCause method for " + ex.getName(), m);
1080         assertEquals("Differen method expected for getCause in " + ex.getName(),
109                  methodName, m.getName());
1100     }
111  }

Findings in this File

c (1) 45 : 8 Unused import - org.jcoderz.commons.Loggable.