/** * Main dispatch method * * <p>All messages logged go through this method. According to the report * configuration, the message will either be ignored, logged or raise an * exception.</p> * * @param message the message to log * @throws ProcessingException the message's level and report configuration * require that an exception be thrown */ protected final void dispatch(final ProcessingMessage message) throws ProcessingException { final LogLevel level = message.getLogLevel(); if (level.compareTo(exceptionThreshold) >= 0) throw message.asException(); if (level.compareTo(currentLevel) > 0) currentLevel = level; if (level.compareTo(logLevel) >= 0) log(level, message); }
@Test public void errorsAreCorrectlyReported() throws ProcessingException { final ArgumentCaptor<ProcessingMessage> captor = ArgumentCaptor.forClass(ProcessingMessage.class); final ObjectNode schema = FACTORY.objectNode(); schema.put(K2, ""); final SchemaTree tree = new CanonicalSchemaTree(SchemaKey.anonymousKey(), schema); final ValueHolder<SchemaTree> holder = ValueHolder.hold("schema", tree); processor.process(report, holder); verify(report).log(same(LogLevel.ERROR), captor.capture()); final ProcessingMessage msg = captor.getValue(); assertMessage(msg).hasMessage(ERRMSG); }
/** * Main dispatch method * * <p>All messages logged go through this method. According to the report * configuration, the message will either be ignored, logged or raise an * exception.</p> * * @param message the message to log * @throws ProcessingException the message's level and report configuration * require that an exception be thrown */ protected final void dispatch(final ProcessingMessage message) throws ProcessingException { final LogLevel level = message.getLogLevel(); if (level.compareTo(exceptionThreshold) >= 0) throw message.asException(); if (level.compareTo(currentLevel) > 0) currentLevel = level; if (level.compareTo(logLevel) >= 0) log(level, message); }
/** * Main dispatch method * * <p>All messages logged go through this method. According to the report * configuration, the message will either be ignored, logged or raise an * exception.</p> * * @param message the message to log * @throws ProcessingException the message's level and report configuration * require that an exception be thrown */ protected final void dispatch(final ProcessingMessage message) throws ProcessingException { final LogLevel level = message.getLogLevel(); if (level.compareTo(exceptionThreshold) >= 0) throw message.asException(); if (level.compareTo(currentLevel) > 0) currentLevel = level; if (level.compareTo(logLevel) >= 0) log(level, message); }
verify(report).log(same(LogLevel.WARNING), captor.capture());
@Test(dataProvider = "getLogLevels") public void logThresholdIsRespected(final LogLevel logLevel) throws ProcessingException { final AbstractProcessingReport report = spy(new LogThreshold(logLevel)); final ProcessingMessage message = new ProcessingMessage(); // OK, that's ugly, but it works... final int count = LogLevel.NONE.ordinal() - logLevel.ordinal(); report.debug(message); report.info(message); report.warn(message); report.error(message); report.fatal(message); verify(report, times(count)).log(any(LogLevel.class), same(message)); }
@Test(dataProvider = "notSchemas") public void syntaxProcessorYellsOnNonSchemas(final JsonNode node) throws ProcessingException { final ArgumentCaptor<ProcessingMessage> captor = ArgumentCaptor.forClass(ProcessingMessage.class); final SchemaTree tree = new CanonicalSchemaTree(SchemaKey.anonymousKey(), node); final ValueHolder<SchemaTree> holder = ValueHolder.hold("schema", tree); processor.process(report, holder); verify(report).log(same(LogLevel.ERROR), captor.capture()); final ProcessingMessage message = captor.getValue(); final NodeType type = NodeType.getNodeType(node); assertMessage(message) .hasMessage(BUNDLE.printf("core.notASchema", type)) .hasField("found", type); }