⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stacktraceelementfilter.java

📁 JoSQL 1.5的源代码。JoSQL(SQL for Java Objects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java
💻 JAVA
字号:
/* * Copyright 2004-2005 Gary Bentley  *  * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0  * * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License. */package org.josql.filters;import java.util.List;import java.util.ArrayList;import org.josql.Query;import org.josql.QueryParseException;import org.josql.QueryExecutionException;/** * This class allows you to filter the stack trace of a Throwable, so cutting down * on the (sometimes) pointless long stack traces. * <p> * Usage: * <pre> *    SELECT * *    FROM   java.lang.StackTraceElement *    WHERE  className LIKE 'org.josql.%' * </pre> * And then to use in code: * <pre> *    StackTraceElementFilter f = new StackTraceElementFilter (sql); *    f.filter (new Throwable ()); * </pre> * <p> *  Last Modified By: $Author: barrygently $<br /> *  Last Modified On: $Date: 2005/01/07 17:10:40 $<br /> *  Current Revision: $Revision: 1.1 $<br /> */  public class StackTraceElementFilter extends AbstractJoSQLFilter{    /**     * Init this filter with the query.     *      * @param q The query.     * @throws QueryParseException If there is an issue with the parsing of the query,      *                             or if the FROM class is not equal to the expected class.     */    public StackTraceElementFilter (String q)	                            throws QueryParseException    {	super (q);    }    /**     * Get the expected class.     *      * @return {@link StackTraceElement}.     */    public Class getExpectedClass ()    {	return StackTraceElement.class;    }    /**     * Init this file filter with the query already built and parsed.     *      * @param q The query.     * @throws IllegalStateException If the Query object has not been parsed.     * @throws QueryParseException If the FROM class is not as expected.     */    public StackTraceElementFilter (Query  q)	                            throws IllegalStateException,	                                   QueryParseException    {	super (q);    }    /*     * Returns <code>true</code> if the where clause evaluates to true for the      * passed in StackTraceElement.     *     * @param o The object to evaluate the WHERE clause against.     * @return <code>true</code> if the WHERE clause evaluates to <code>true</code> for the specified     *         object.     */    public boolean accept (Object o)    {	try	{	    return this.accept ((StackTraceElement) o);	} catch (Exception e) {	    this.exp = e;	    return false;	}    }    /**     * Returns <code>true</code> if the where clause evaluates to true for the      * passed in StackTraceElement.     *     * @param s The object to evaluate the WHERE clause against.     * @return <code>true</code> if the WHERE clause evaluates to <code>true</code> for the specified     *         object.     */    public boolean accept (StackTraceElement s)	                   throws            QueryExecutionException    {	return this.q.getWhereClause ().isTrue (s,						this.q);    }        /**     * Filter the specified stack trace and return the new stack trace     * that can then be set in the throwable.     *     * @param s The stack trace.     * @return The new stack trace, filtered.     * @throws QueryExecutionException If the where clause cannot be     *         executed against a particular element.     */    public StackTraceElement[] filterStackTrace (StackTraceElement[] s)	                                         throws              QueryExecutionException    {	if (s == null)	{	    return s;	}	List l = new ArrayList ();	for (int i = 0; i < s.length; i++)	{	    if (this.accept (s[i]))	    {		l.add (s[i]);	    }	}	// Can't believe I have to fricking do this... can't just cast to	// StackTraceElement[]... grr...	StackTraceElement[] a = new StackTraceElement[l.size ()];	for (int i = 0; i < l.size (); i++)	{	    a[i] = (StackTraceElement) l.get (i);	}	return a;    }    /**     * Filter the throwable, but will also filter any causes (right up the cause chain)     * as well.  Equivalent to calling: {@link #filter(Throwable,boolean)} with the      * boolean set to <code>true</code>.     *     * @param t The throwable instance to filter.     * @throws QueryExecutionException If the where clause cannot be executed.     */    public void filter (Throwable t)	                throws    QueryExecutionException    {	this.filter (t,		     true);    }    /**     * Filter the throwable, but will also filter any causes (right up the cause chain)     * as well if the <b>filterCause</b> boolean is set to <code>true</code>.     *     * @param t The throwable instance to filter.     * @param filterCause When set to <code>true</code> will also filter the cause      *                    chain as well.     * @throws QueryExecutionException If the where clause cannot be executed.     */    public void filter (Throwable t,			boolean   filterCause)	                throws    QueryExecutionException    {	if (filterCause)	{	    Throwable c = t.getCause ();	    if (c != null)	    {		this.filter (c,			     filterCause);	    }	}	t.setStackTrace (this.filterStackTrace (t.getStackTrace ()));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -