You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2003/07/19 00:24:38 UTC

cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat Jdk14Compat.java JdkCompat.java

remm        2003/07/18 15:24:38

  Modified:    util/java/org/apache/tomcat/util/compat Jdk14Compat.java
                        JdkCompat.java
  Log:
  - Add compat code to print out partial stack traces.
  
  Revision  Changes    Path
  1.4       +27 -4     jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat/Jdk14Compat.java
  
  Index: Jdk14Compat.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat/Jdk14Compat.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Jdk14Compat.java	26 Mar 2003 11:01:39 -0000	1.3
  +++ Jdk14Compat.java	18 Jul 2003 22:24:37 -0000	1.4
  @@ -75,7 +75,8 @@
   /**
    *  See JdkCompat. This is an extension of that class for Jdk1.4 support.
    *
  - *  @author Tim Funk
  + * @author Tim Funk
  + * @author Remy Maucherat
    */
   public class Jdk14Compat extends JdkCompat {
       // -------------------------------------------------------------- Constants
  @@ -119,6 +120,28 @@
        */
       public long getMaxMemory() {
           return Runtime.getRuntime().maxMemory();
  +    }
  +
  +
  +    /**
  +     * Print out a partial servlet stack trace (truncating at the last 
  +     * occurrence of javax.servlet.).
  +     */
  +    public String getPartialServletStackTrace(Throwable t) {
  +        StringBuffer trace = new StringBuffer();
  +        trace.append(t.toString()).append('\n');
  +        StackTraceElement[] elements = t.getStackTrace();
  +        int pos = elements.length;
  +        for (int i = (elements.length - 1); i >= 0; i--) {
  +            if (elements[i].getClassName().startsWith("javax.servlet.")) {
  +                pos = i + 1;
  +                break;
  +            }
  +        }
  +        for (int i = 0; i < pos; i++) {
  +            trace.append('\t').append(elements[i].toString()).append('\n');
  +        }
  +        return trace.toString();
       }
   
   
  
  
  
  1.5       +16 -3     jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat/JdkCompat.java
  
  Index: JdkCompat.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat/JdkCompat.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JdkCompat.java	26 Mar 2003 11:01:39 -0000	1.4
  +++ JdkCompat.java	18 Jul 2003 22:24:37 -0000	1.5
  @@ -66,6 +66,8 @@
   import java.io.IOException;
   import java.net.URL;
   import java.net.MalformedURLException;
  +import java.io.PrintWriter;
  +import java.io.StringWriter;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -198,6 +200,17 @@
        */
       public long getMaxMemory() {
           return (-1L);
  +    }
  +
  +
  +    /**
  +     * Print out a partial servlet stack trace (truncating at the last 
  +     * occurrence of javax.servlet.).
  +     */
  +    public String getPartialServletStackTrace(Throwable t) {
  +        StringWriter stackTrace = new StringWriter();
  +        t.printStackTrace(new PrintWriter(stackTrace));
  +        return stackTrace.toString();
       }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Re: cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat Jdk14Compat.java JdkCompat.java

Posted by Remy Maucherat <re...@apache.org>.
Tim Funk wrote:
> I have no issue with substring use for jdk1.3 
> getPartialServletStackTrace() since it should not get called often so 
> the performance shouldn't be an issue (or am I missing something more 
> subtle).

Yes, zero performance impact.

> Possible alternative (for the 1.3 version).
> public String getPartialServletStackTrace(Throwable t) {
>     StringWriter stackTrace = new StringWriter();
>     t.printStackTrace(new PrintWriter(stackTrace));
>     String st = stackTrace.toString();
>     int i = st.lastIndexOf("javax.servlet.");
>     if (i>-1)
>         return st.substring(0, i);
>     else
>         return st;
> }

Sounds like a good start. There should be a "	at " prefix in front of 
each line (which is something I don't like with traces, since the "at" 
can never be i18n ready). I'll try to hack that a little bit tomorrow, 
unless it gets automagically done while I sleep :)

Remy



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Re: cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/compat Jdk14Compat.java JdkCompat.java

Posted by Tim Funk <fu...@joedog.org>.
I have no issue with substring use for jdk1.3 getPartialServletStackTrace() 
since it should not get called often so the performance shouldn't be an issue 
(or am I missing something more subtle).

Possible alternative (for the 1.3 version).
public String getPartialServletStackTrace(Throwable t) {
     StringWriter stackTrace = new StringWriter();
     t.printStackTrace(new PrintWriter(stackTrace));
     String st = stackTrace.toString();
     int i = st.lastIndexOf("javax.servlet.");
     if (i>-1)
         return st.substring(0, i);
     else
         return st;
}

-Tim

remm@apache.org wrote:
> remm        2003/07/18 15:24:38
> 
>   Modified:    util/java/org/apache/tomcat/util/compat Jdk14Compat.java
>                         JdkCompat.java
>   Log:
>   - Add compat code to print out partial stack traces.


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org