You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/12/18 15:52:50 UTC

svn commit: r488292 - in /harmony/enhanced/classlib/trunk/modules/jndi/src: main/java/javax/naming/NamingException.java test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java

Author: tellison
Date: Mon Dec 18 06:52:49 2006
New Revision: 488292

URL: http://svn.apache.org/viewvc?view=rev&rev=488292
Log:
Apply patch HARMONY-2638 ([luni][jndi] javax.naming.NamingException.printStackTrace() output should contain the output of NamingException.toString())

Modified:
    harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/NamingException.java
    harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java

Modified: harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/NamingException.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/NamingException.java?view=diff&rev=488292&r1=488291&r2=488292
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/NamingException.java (original)
+++ harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/NamingException.java Mon Dec 18 06:52:49 2006
@@ -15,12 +15,8 @@
  * limitations under the License.
  */
 
-
 package javax.naming;
 
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
 import org.apache.harmony.jndi.internal.nls.Messages;
 
 /**
@@ -28,42 +24,41 @@
  * classes. There are numerous subclasses of it which are used to further
  * describe the type of error encountered.
  * <p>
- * A <code>NamingException</code> can hold information relating to an error 
- * encountered when trying to resolve a <code>Name</code>. It holds the two 
- * parts of the original name, firstly the part of the name which was 
- * successfully resolved, secondly the part of the name which could not be 
- * resolved.</p>
+ * A <code>NamingException</code> can hold information relating to an error
+ * encountered when trying to resolve a <code>Name</code>. It holds the two
+ * parts of the original name, firstly the part of the name which was
+ * successfully resolved, secondly the part of the name which could not be
+ * resolved.
+ * </p>
  * <p>
  * For example:<br />
  * ------------<br />
- * The resolved name could be something like http://www.apache.org where jndi has
- * successfully resolved the DNS name.
- * The part of the name which could not be resolved could be something like
- * java/classes.index.html where jndi could not resolve the file name.</p>
+ * The resolved name could be something like http://www.apache.org where jndi
+ * has successfully resolved the DNS name. The part of the name which could not
+ * be resolved could be something like java/classes.index.html where jndi could
+ * not resolve the file name.
+ * </p>
  * <p>
- * It can also refer to the object that is associated with the resolved name.</p>
+ * It can also refer to the object that is associated with the resolved name.
+ * </p>
  * <p>
- * Additionaly it can refer to another exception, which may be the root cause
- * of this exception.</p>
+ * Additionaly it can refer to another exception, which may be the root cause of
+ * this exception.
+ * </p>
  * <p>
- * Multithreaded access to a <code>NamingException</code> instance is only 
- * safe when client code locks the object first.</p>
+ * Multithreaded access to a <code>NamingException</code> instance is only
+ * safe when client code locks the object first.
+ * </p>
  * 
  */
 public class NamingException extends Exception {
 
     /*
-     * This constant is used during deserialization to check the J2SE version
+     * This constant is used during deserialization to check the JSE version
      * which created the serialized object.
      */
     private static final long serialVersionUID = -1299181962103167177L;
 
-    /*
-     * -------------------------------------------------------------------
-     * Instance variables
-     * -------------------------------------------------------------------
-     */
-
     /**
      * The resolved name. This may be null.
      */
@@ -80,43 +75,33 @@
     protected Object resolvedObj = null;
 
     /**
-     * The exception that caused this NamingException to be raised. This may be null.
+     * The exception that caused this NamingException to be raised. This may be
+     * null.
      */
     protected Throwable rootException = null;
 
-    /*
-     * -------------------------------------------------------------------
-     * Constructors
-     * -------------------------------------------------------------------
-     */
-
     /**
-     * Constructs a <code>NamingException</code> instance 
-     * with all data initialized to null.
+     * Constructs a <code>NamingException</code> instance with all data
+     * initialized to null.
      */
     public NamingException() {
         super();
     }
 
     /**
-     * Constructs a <code>NamingException</code> instance
-     * with the specified message. All other fields are initialized to null.
+     * Constructs a <code>NamingException</code> instance with the specified
+     * message. All other fields are initialized to null.
      * 
-     * @param s The detail message for the exception. It may be null. 
+     * @param s
+     *            The detail message for the exception. It may be null.
      */
     public NamingException(String s) {
         super(s);
     }
 
-    /*
-     * -------------------------------------------------------------------
-     * Methods
-     * -------------------------------------------------------------------
-     */
-
     /**
-     * Returns the message passed in as a param to the constructor.
-     * This may be null.
+     * Returns the message passed in as a param to the constructor. This may be
+     * null.
      * 
      * @return the message passed in as a param to the constructor.
      */
@@ -125,12 +110,14 @@
     }
 
     /**
-     * Appends the supplied string to the <code>Name</code> held as the 
+     * Appends the supplied string to the <code>Name</code> held as the
      * remaining name. The string may be null.
      * 
-     * @param s the string to append to the remaining Name.
-     * @throws  IllegalArgumentException if appending the supplied
-     * String s causes the name to become invalid.
+     * @param s
+     *            the string to append to the remaining Name.
+     * @throws IllegalArgumentException
+     *             if appending the supplied String s causes the name to become
+     *             invalid.
      */
     public void appendRemainingComponent(String s) {
         if (null != s) {
@@ -141,7 +128,8 @@
                 remainingName = remainingName.add(s);
             } catch (InvalidNameException e) {
                 // jndi.10=Found invalid name, reason: {0}
-                throw new IllegalArgumentException(Messages.getString("jndi.10", e));  //$NON-NLS-1$
+                throw new IllegalArgumentException(Messages.getString(
+                        "jndi.10", e)); //$NON-NLS-1$
             }
         }
     }
@@ -174,22 +162,24 @@
     }
 
     /**
-     * Sets the resolved name to the specified name. This may be null. 
-     * The resolved name details must not change even if the original 
+     * Sets the resolved name to the specified name. This may be null. The
+     * resolved name details must not change even if the original
      * <code>Name</code> itself changes.
      * 
-     * @param name the resolved name to set.
+     * @param name
+     *            the resolved name to set.
      */
     public void setResolvedName(Name name) {
         resolvedName = null == name ? null : (Name) name.clone();
     }
 
     /**
-     * Sets the remaining name to the specified n. This may be null. 
-     * The remaining name details must not change even if the original 
+     * Sets the remaining name to the specified n. This may be null. The
+     * remaining name details must not change even if the original
      * <code>Name</code> itself changes.
      * 
-     * @param name the remaining name to set.
+     * @param name
+     *            the remaining name to set.
      */
     public void setRemainingName(Name name) {
         remainingName = null == name ? null : (Name) name.clone();
@@ -198,20 +188,23 @@
     /**
      * Sets the resolved object to the specified o. This may be null.
      * 
-     * @param o the resolved object to set.
+     * @param o
+     *            the resolved object to set.
      */
     public void setResolvedObj(Object o) {
         resolvedObj = o;
     }
 
     /**
-     * Appends the elements of the supplied <code>Name</code> n to the 
-     * <code>Name</code> held as the remaining name. The <code>Name</code> n 
+     * Appends the elements of the supplied <code>Name</code> n to the
+     * <code>Name</code> held as the remaining name. The <code>Name</code> n
      * may be null or may be empty.
      * 
-     * @param n the name to append to the remaining name.
-     * @throws IllegalArgumentException if appending the supplied
-     * <code>Name</code> n causes the name to become invalid.
+     * @param n
+     *            the name to append to the remaining name.
+     * @throws IllegalArgumentException
+     *             if appending the supplied <code>Name</code> n causes the
+     *             name to become invalid.
      */
     public void appendRemainingName(Name n) {
         if (null != n) {
@@ -222,28 +215,30 @@
                 remainingName = remainingName.addAll(n);
             } catch (InvalidNameException e) {
                 // jndi.10=Found invalid name, reason: {0}
-                throw new IllegalArgumentException(Messages.getString("jndi.10", e));  //$NON-NLS-1$
+                throw new IllegalArgumentException(Messages.getString(
+                        "jndi.10", e)); //$NON-NLS-1$
             }
         }
     }
 
     /**
-     * Returns the exception which caused this <code>NamingException</code> 
+     * Returns the exception which caused this <code>NamingException</code>
      * which may be null.
      * 
-     * @return the exception which caused this <code>NamingException</code> 
-     * which may be null.
+     * @return the exception which caused this <code>NamingException</code>
+     *         which may be null.
      */
     public Throwable getRootCause() {
         return rootException;
     }
 
     /**
-     * Sets the exception that caused this <code>NamingException</code>. 
-     * It may be null. 
-     * Ignore the supplied parameter if it is actually this exception.
+     * Sets the exception that caused this <code>NamingException</code>. It
+     * may be null. Ignore the supplied parameter if it is actually this
+     * exception.
      * 
-     * @param t the exception that caused this <code>NamingException</code>.
+     * @param t
+     *            the exception that caused this <code>NamingException</code>.
      */
     public void setRootCause(Throwable t) {
         if (t != this) {
@@ -252,12 +247,13 @@
     }
 
     /**
-     * Returns the same details as the <code>toString()</code> method except 
-     * that, if the <code>flag</code> is set to true, then details of the 
-     * resolved object are also appended to the string. 
-     * The actual format can be decided by the implementor.
+     * Returns the same details as the <code>toString()</code> method except
+     * that, if the <code>flag</code> is set to true, then details of the
+     * resolved object are also appended to the string. The actual format can be
+     * decided by the implementor.
      * 
-     * @param flag Indicates if the resolved object need to be returned. 
+     * @param flag
+     *            Indicates if the resolved object need to be returned.
      * 
      * @return the string representation of this <code>NamingException</code>.
      */
@@ -266,105 +262,35 @@
     }
 
     /*
-     * -------------------------------------------------------------------
-     * Methods override parent class Exception
-     * -------------------------------------------------------------------
-     */
-
-    /**
-     * If there is a root exception associated with this 
-     * <code>NamingException</code> then first print the class name and message
-     * of this <code>NamingException</code>, followed by the text 
-     * ". The stack trace of the root exception is: ", followed by the stack 
-     * trace of the exception which caused this exception.
-     * <p>
-     * If there is no root exception associated with this 
-     * <code>NamingException</code> then print the stack trace of this 
-     * <code>NamingException</code>.</p>
-     * <p>
-     * The output from this goes to <code>System.err</code>.</p>
-     */
-    @Override
-    public void printStackTrace() {
-        if (null != rootException) {
-            System.err.print(super.toString());
-            // jndi.err.00=. The stack trace of the root exception is:
-            System.err.print(Messages.getString("jndi.err.00"));  //$NON-NLS-1$
-            rootException.printStackTrace();
-        } else {
-            super.printStackTrace();
-        }
-    }
-
-    /**
-     * Performs the same as <code>printStackTrace()</code> except the output 
-     * goes to the specified <code>PrintStream</code> p.
-     * 
-     * @param p the <code>PrintStream</code> to which the stack trace is 
-     * printed.
-     */
-    @Override
-    public void printStackTrace(PrintStream p) {
-        if (null != rootException) {
-            p.print(super.toString());
-            // jndi.err.00=. The stack trace of the root exception is:
-            p.print(Messages.getString("jndi.err.00"));  //$NON-NLS-1$
-            rootException.printStackTrace(p);
-        } else {
-            super.printStackTrace(p);
-        }
-    }
-
-    /**
-     * Performs the same as <code>printStackTrace()</code> except the output 
-     * goes to the specified <code>PrintWriter</code> p.
+     * (non-Javadoc)
      * 
-     * @param p the <code>PrintWrite</code> to which the stack trace is 
-     * printed.
-     */
-    @Override
-    public void printStackTrace(PrintWriter p) {
-        if (null != rootException) {
-            p.print(super.toString());
-            // jndi.err.00=. The stack trace of the root exception is:
-            p.print(Messages.getString("jndi.err.00"));  //$NON-NLS-1$
-            rootException.printStackTrace(p);
-        } else {
-            super.printStackTrace(p);
-        }
-    }
-    
-    /*
-     *  (non-Javadoc)
      * @see java.lang.Throwable#getCause()
      */
     @Override
     public Throwable getCause() {
-        return super.getCause();
+        return getRootCause();
     }
 
     /*
-     *  (non-Javadoc)
+     * (non-Javadoc)
+     * 
      * @see java.lang.Throwable#initCause(Throwable)
      */
     @Override
     public Throwable initCause(Throwable cause) {
-        return super.initCause(cause);
+        super.initCause(cause);
+        rootException = cause;
+        return this;
     }
 
-    /*
-     * -------------------------------------------------------------------
-     * Methods override parent class Object
-     * -------------------------------------------------------------------
-     */
-
     /**
      * Returns the string representation of this <code>NamingException</code>.
      * The string contains the string representation of this exception together
-     * with details of the exception which caused this and any remaining 
-     * portion of the <code>Name</code>. 
+     * with details of the exception which caused this and any remaining portion
+     * of the <code>Name</code>.
      * <p>
-     * The actual format can be decided by the implementor.</p>
+     * The actual format can be decided by the implementor.
+     * </p>
      * 
      * @return the string
      */
@@ -378,17 +304,14 @@
         sb.append(super.toString());
         if (null != rootException) {
             sb.append(" [Root exception is ").append(rootException.toString()).append( //$NON-NLS-1$
-                "]"); //$NON-NLS-1$
+                            "]"); //$NON-NLS-1$
         }
         if (null != remainingName) {
-            sb.append("; Remaining name: '").append(remainingName.toString()).append("'");  //$NON-NLS-1$//$NON-NLS-2$
+            sb.append("; Remaining name: '").append(remainingName.toString()).append("'"); //$NON-NLS-1$//$NON-NLS-2$
         }
         if (flag && null != resolvedObj) {
             sb.append("; Resolved object: '").append(resolvedObj.toString()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
         }
         return sb.toString();
     }
-
 }
-
-

Modified: harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java?view=diff&rev=488292&r1=488291&r2=488292
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/NamingExceptionTest.java Mon Dec 18 06:52:49 2006
@@ -237,19 +237,19 @@
 		ex.setRootCause(new Exception(trace2));
 		ex.printStackTrace();
 		str = new String(bStream.toByteArray());
-		assertTrue(str.indexOf(trace1) < 0);
+		assertTrue(str.indexOf(trace1) > 0);
 		assertTrue(str.indexOf(trace2) > 0);
 		bStream.reset();
 
 		ex.printStackTrace(stream);
 		str = new String(bStream.toByteArray());
-		assertTrue(str.indexOf(trace1) < 0);
+		assertTrue(str.indexOf(trace1) > 0);
 		assertTrue(str.indexOf(trace2) > 0);
 		bStream.reset();
 
 		ex.printStackTrace(new PrintWriter(stream, true));
 		str = new String(bStream.toByteArray());
-		assertTrue(str.indexOf(trace1) < 0);
+		assertTrue(str.indexOf(trace1) > 0);
 		assertTrue(str.indexOf(trace2) > 0);
 		bStream.reset();