@Test public void assertMutuallyExclusive() { LoggingHandler loggingHandler = new LoggingHandler("INFO"); loggingHandler.setLogExpressionString("'foo'"); try { loggingHandler.setShouldLogFullMessage(true); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) { assertEquals("Cannot set both 'expression' AND 'shouldLogFullMessage' properties", e.getMessage()); } loggingHandler = new LoggingHandler("INFO"); loggingHandler.setShouldLogFullMessage(true); try { loggingHandler.setLogExpressionString("'foo'"); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) { assertEquals("Cannot set both 'expression' AND 'shouldLogFullMessage' properties", e.getMessage()); } }
@Bean @ServiceActivator(inputChannel = Sink.INPUT) public LoggingHandler logSinkHandler() { LoggingHandler loggingHandler = new LoggingHandler(this.properties.getLevel().name()) { @Override protected void handleMessageInternal(Message<?> message) throws Exception { if (message.getPayload() instanceof byte[]){ String contentType = message.getHeaders().containsKey(MessageHeaders.CONTENT_TYPE) ? message.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString() : BindingProperties.DEFAULT_CONTENT_TYPE.toString(); if (contentType.contains("text") || contentType.contains("json") || contentType.contains("x-spring-tuple")) { message = new MutableMessage<>(new String(((byte[]) message.getPayload())), message.getHeaders()); } } super.handleMessageInternal(message); } }; loggingHandler.setLogExpressionString(this.properties.getExpression()); loggingHandler.setLoggerName(this.properties.getName()); return loggingHandler; }