Advertisement
Guest User

ComparatorTerminateException

a guest
Jun 1st, 2016
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.25 KB | None | 0 0
  1. import org.apache.logging.log4j.Level;
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Marker;
  4. import org.apache.logging.log4j.core.Filter;
  5. import org.apache.logging.log4j.core.LogEvent;
  6. import org.apache.logging.log4j.core.Logger;
  7. import org.apache.logging.log4j.message.Message;
  8.  
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.regex.Pattern;
  12.  
  13. /**
  14.  * A simple dummy exception for shutting off comparators
  15.  * @author ME1312
  16.  */
  17. public class ComparatorTerminateException extends NullPointerException {
  18.     /**
  19.      * Throw this to shut off a comparator
  20.      */
  21.     public ComparatorTerminateException() {
  22.         super("This exception was thrown so the comparator will turn off");
  23.         DummyExceptionFilter.getFilter(this);
  24.     }
  25.  
  26.     /**
  27.      * Filters the Exception message from console
  28.      */
  29.     private static class DummyExceptionFilter implements Filter {
  30.         private static DummyExceptionFilter instance = null;
  31.         private ArrayList<Exception> search = new ArrayList<Exception>();
  32.         private Logger logger;
  33.  
  34.         protected static DummyExceptionFilter getFilter(Exception e) {
  35.             if (instance == null) instance = new DummyExceptionFilter();
  36.             instance.add(e);
  37.             return instance;
  38.         }
  39.  
  40.         private DummyExceptionFilter() {
  41.             (logger = (Logger) LogManager.getRootLogger()).addFilter(this);
  42.         }
  43.  
  44.         private void add(Exception e) {
  45.             search.add(e);
  46.         }
  47.  
  48.         private void remove(Exception e) {
  49.             search.remove(e);
  50.         }
  51.  
  52.         @Override
  53.         public Result filter(LogEvent event) {
  54.             Result result = Result.NEUTRAL;
  55.             if (event.getMessage().getFormattedMessage() != null && event.getMessage().getFormattedMessage().length() > 0) {
  56.                 List<Exception> search = new ArrayList<Exception>();
  57.                 search.addAll(this.search);
  58.                 for (Exception e : search) {
  59.                     String error = e.getClass().getCanonicalName();
  60.                     if (e.getMessage() != null && e.getMessage().length() > 0) error += ": " + e.getMessage();
  61.  
  62.                     if (result != Result.DENY && !Pattern.compile(".*" + Pattern.quote(error) + ".*").matcher(event.getMessage().getFormattedMessage()).find()) {
  63.                         this.search.remove(e);
  64.                         result = Result.DENY;
  65.                     }
  66.                 }
  67.             }
  68.             return result;
  69.         }
  70.  
  71.         @Override
  72.         public Result getOnMismatch() {
  73.             return Result.NEUTRAL;
  74.         }
  75.  
  76.         @Override
  77.         public Result getOnMatch() {
  78.             return Result.NEUTRAL;
  79.         }
  80.  
  81.         @Override
  82.         public Result filter(Logger logger, Level level, Marker marker, String s, Object... objects) {
  83.             return Result.NEUTRAL;
  84.         }
  85.  
  86.         @Override
  87.         public Result filter(Logger logger, Level level, Marker marker, Object o, Throwable throwable) {
  88.             return Result.NEUTRAL;
  89.         }
  90.  
  91.         @Override
  92.         public Result filter(Logger logger, Level level, Marker marker, Message message, Throwable throwable) {
  93.             return Result.NEUTRAL;
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement