diff options
author | Egil Moeller <egil.moller@freecode.no> | 2010-03-22 00:16:53 +0100 |
---|---|---|
committer | Egil Moeller <egil.moller@freecode.no> | 2010-03-22 00:16:53 +0100 |
commit | fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7 (patch) | |
tree | 928419d6bfe794865e4b8f0634bd792f795c4b8a /trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java | |
parent | 0fdab3db005c4fa31fb8306b573c0b35073d3e56 (diff) | |
parent | d56b9b3b82cdebcaeb00eec0fcb4326ad21adaa8 (diff) | |
download | etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.tar.gz etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.tar.xz etherpad-fc00cfedd6c25d1634a1e0d28a7b7bc5f42e1cd7.zip |
Merge branch 'master' into plugin-framework
Diffstat (limited to 'trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java')
-rw-r--r-- | trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java b/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java deleted file mode 100644 index b7f4a4d..0000000 --- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java +++ /dev/null @@ -1,306 +0,0 @@ -/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Rhino code, released - * May 6, 1999. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1997-1999 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Norris Boyd - * Igor Bukanov - * - * Alternatively, the contents of this file may be used under the terms of - * the GNU General Public License Version 2 or later (the "GPL"), in which - * case the provisions of the GPL are applicable instead of those above. If - * you wish to allow use of your version of this file only under the terms of - * the GPL and not to allow others to use your version of this file under the - * MPL, indicate your decision by deleting the provisions above and replacing - * them with the notice and other provisions required by the GPL. If you do - * not delete the provisions above, a recipient may use your version of this - * file under either the MPL or the GPL. - * - * ***** END LICENSE BLOCK ***** */ - - -package org.mozilla.javascript; - -import java.io.CharArrayWriter; -import java.io.File; -import java.io.FilenameFilter; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.util.List; -import java.util.ArrayList; - -/** - * The class of exceptions thrown by the JavaScript engine. - */ -public abstract class RhinoException extends RuntimeException -{ - RhinoException() - { - Evaluator e = Context.createInterpreter(); - if (e != null) - e.captureStackInfo(this); - } - - RhinoException(String details) - { - super(details); - Evaluator e = Context.createInterpreter(); - if (e != null) - e.captureStackInfo(this); - } - - public final String getMessage() - { - String details = details(); - if (sourceName == null || lineNumber <= 0) { - return details; - } - StringBuffer buf = new StringBuffer(details); - buf.append(" ("); - if (sourceName != null) { - buf.append(sourceName); - } - if (lineNumber > 0) { - buf.append('#'); - buf.append(lineNumber); - } - buf.append(')'); - return buf.toString(); - } - - public String details() - { - return super.getMessage(); - } - - /** - * Get the uri of the script source containing the error, or null - * if that information is not available. - */ - public final String sourceName() - { - return sourceName; - } - - /** - * Initialize the uri of the script source containing the error. - * - * @param sourceName the uri of the script source responsible for the error. - * It should not be <tt>null</tt>. - * - * @throws IllegalStateException if the method is called more then once. - */ - public final void initSourceName(String sourceName) - { - if (sourceName == null) throw new IllegalArgumentException(); - if (this.sourceName != null) throw new IllegalStateException(); - this.sourceName = sourceName; - } - - /** - * Returns the line number of the statement causing the error, - * or zero if not available. - */ - public final int lineNumber() - { - return lineNumber; - } - - /** - * Initialize the line number of the script statement causing the error. - * - * @param lineNumber the line number in the script source. - * It should be positive number. - * - * @throws IllegalStateException if the method is called more then once. - */ - public final void initLineNumber(int lineNumber) - { - if (lineNumber <= 0) throw new IllegalArgumentException(String.valueOf(lineNumber)); - if (this.lineNumber > 0) throw new IllegalStateException(); - this.lineNumber = lineNumber; - } - - /** - * The column number of the location of the error, or zero if unknown. - */ - public final int columnNumber() - { - return columnNumber; - } - - /** - * Initialize the column number of the script statement causing the error. - * - * @param columnNumber the column number in the script source. - * It should be positive number. - * - * @throws IllegalStateException if the method is called more then once. - */ - public final void initColumnNumber(int columnNumber) - { - if (columnNumber <= 0) throw new IllegalArgumentException(String.valueOf(columnNumber)); - if (this.columnNumber > 0) throw new IllegalStateException(); - this.columnNumber = columnNumber; - } - - /** - * The source text of the line causing the error, or null if unknown. - */ - public final String lineSource() - { - return lineSource; - } - - /** - * Initialize the text of the source line containing the error. - * - * @param lineSource the text of the source line responsible for the error. - * It should not be <tt>null</tt>. - * - * @throws IllegalStateException if the method is called more then once. - */ - public final void initLineSource(String lineSource) - { - if (lineSource == null) throw new IllegalArgumentException(); - if (this.lineSource != null) throw new IllegalStateException(); - this.lineSource = lineSource; - } - - final void recordErrorOrigin(String sourceName, int lineNumber, - String lineSource, int columnNumber) - { - // XXX: for compatibility allow for now -1 to mean 0 - if (lineNumber == -1) { - lineNumber = 0; - } - - if (sourceName != null) { - initSourceName(sourceName); - } - if (lineNumber != 0) { - initLineNumber(lineNumber); - } - if (lineSource != null) { - initLineSource(lineSource); - } - if (columnNumber != 0) { - initColumnNumber(columnNumber); - } - } - - private String generateStackTrace() - { - // Get stable reference to work properly with concurrent access - CharArrayWriter writer = new CharArrayWriter(); - super.printStackTrace(new PrintWriter(writer)); - String origStackTrace = writer.toString(); - Evaluator e = Context.createInterpreter(); - if (e != null) - return e.getPatchedStack(this, origStackTrace); - return null; - } - - /** - * Get a string representing the script stack of this exception. - * If optimization is enabled, this corresponds to all java stack elements - * with a source name ending with ".js". - * @return a script stack dump - * @since 1.6R6 - */ - public String getScriptStackTrace() - { - return getScriptStackTrace(new FilenameFilter() { - public boolean accept(File dir, String name) { - return name.endsWith(".js"); - } - }); - } - - /** - * Get a string representing the script stack of this exception. - * If optimization is enabled, this corresponds to all java stack elements - * with a source name matching the <code>filter</code>. - * @param filter the file name filter to determine whether a file is a - * script file - * @return a script stack dump - * @since 1.6R6 - */ - public String getScriptStackTrace(FilenameFilter filter) - { - List interpreterStack; - Evaluator interpreter = Context.createInterpreter(); - if (interpreter != null) - interpreterStack = interpreter.getScriptStack(this); - else - interpreterStack = new ArrayList(); - int interpreterStackIndex = 0; - StringBuffer buffer = new StringBuffer(); - String lineSeparator = SecurityUtilities.getSystemProperty("line.separator"); - StackTraceElement[] stack = getStackTrace(); - for (int i = 0; i < stack.length; i++) { - StackTraceElement e = stack[i]; - String name = e.getFileName(); - if (e.getLineNumber() > -1 && name != null && - filter.accept(null, name)) - { - buffer.append("\tat "); - buffer.append(e.getFileName()); - buffer.append(':'); - buffer.append(e.getLineNumber()); - buffer.append(lineSeparator); - } else if (interpreterStack != null && - "org.mozilla.javascript.Interpreter".equals(e.getClassName()) && - "interpretLoop".equals(e.getMethodName())) - { - buffer.append(interpreterStack.get(interpreterStackIndex++)); - } - } - return buffer.toString(); - } - - public void printStackTrace(PrintWriter s) - { - if (interpreterStackInfo == null) { - super.printStackTrace(s); - } else { - s.print(generateStackTrace()); - } - } - - public void printStackTrace(PrintStream s) - { - if (interpreterStackInfo == null) { - super.printStackTrace(s); - } else { - s.print(generateStackTrace()); - } - } - - private String sourceName; - private int lineNumber; - private String lineSource; - private int columnNumber; - - Object interpreterStackInfo; - int[] interpreterLineData; -} |