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