001package com.hfg.util;
002
003import java.lang.reflect.Method;
004
005public class StackTraceElementFilter
006{
007   public Package mPackage;
008   public Class   mClass;
009   public Method  mMethod;
010
011   //---------------------------------------------------------------------------
012   public StackTraceElementFilter()
013   {
014
015   }
016
017   //---------------------------------------------------------------------------
018   public StackTraceElementFilter setPackage(Package inValue)
019   {
020      mPackage = inValue;
021      return this;
022   }
023
024   //---------------------------------------------------------------------------
025   public Package getPackage()
026   {
027      return mPackage;
028   }
029
030   //---------------------------------------------------------------------------
031   public StackTraceElementFilter setClass(Class inValue)
032   {
033      mClass = inValue;
034      return this;
035   }
036
037   //---------------------------------------------------------------------------
038   public String getClassName()
039   {
040      return mClass != null ? mClass.getName() : null;
041   }
042
043   //---------------------------------------------------------------------------
044   public StackTraceElementFilter setMethod(Method inValue)
045   {
046      mMethod = inValue;
047      return this;
048   }
049
050   //---------------------------------------------------------------------------
051   public String getMethodName()
052   {
053      return mMethod != null ? mMethod.getName() : null;
054   }
055
056   //---------------------------------------------------------------------------
057   public boolean accept(StackTraceElement inElement)
058   {
059      boolean accept = false;
060      try
061      {
062         if (null == getPackage()
063             || Class.forName(inElement.getClassName()).getPackage().equals(getPackage()))
064         {
065            // Package is a match
066            if (null == getClassName()
067                || inElement.getClassName().equals(getClassName()))
068            {
069               // Class is a match
070               if (null == getMethodName()
071                   || inElement.getMethodName().equals(getMethodName()))
072               {
073                  accept = true;
074               }
075            }
076         }
077      }
078      catch (Exception e)
079      {
080         throw new RuntimeException(e);
081      }
082
083      return accept;
084   }
085}