You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/12/09 07:17:18 UTC
camel git commit: CAMEL-8091 DefaultExchangeFormatter should consider
Exchange.LOG_DEBUG_BODY_MAX_CHARS with thanks to Stephan
Repository: camel
Updated Branches:
refs/heads/master c63b5ee90 -> 43d026282
CAMEL-8091 DefaultExchangeFormatter should consider Exchange.LOG_DEBUG_BODY_MAX_CHARS with thanks to Stephan
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/43d02628
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/43d02628
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/43d02628
Branch: refs/heads/master
Commit: 43d02628287c0623672714a016e324d6da36d71c
Parents: c63b5ee
Author: Willem Jiang <wi...@gmail.com>
Authored: Tue Dec 9 14:15:58 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Tue Dec 9 14:17:00 2014 +0800
----------------------------------------------------------------------
.../processor/DefaultExchangeFormatter.java | 13 ++-
.../processor/DefaultExchangeFormatterTest.java | 91 ++++++++++++++++++++
2 files changed, 103 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/43d02628/camel-core/src/main/java/org/apache/camel/processor/DefaultExchangeFormatter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DefaultExchangeFormatter.java b/camel-core/src/main/java/org/apache/camel/processor/DefaultExchangeFormatter.java
index 19ee87a..138c6cf 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DefaultExchangeFormatter.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DefaultExchangeFormatter.java
@@ -389,7 +389,18 @@ public class DefaultExchangeFormatter implements ExchangeFormatter {
}
}
- return MessageHelper.extractBodyForLogging(message, "", isShowStreams(), isShowFiles(), getMaxChars());
+ return MessageHelper.extractBodyForLogging(message, "", isShowStreams(), isShowFiles(), getMaxChars(message));
+ }
+
+ private int getMaxChars(Message message) {
+ int maxChars = getMaxChars();
+ if (message.getExchange() != null) {
+ String property = message.getExchange().getContext().getProperty(Exchange.LOG_DEBUG_BODY_MAX_CHARS);
+ if (property != null) {
+ maxChars = message.getExchange().getContext().getTypeConverter().convertTo(Integer.class, property);
+ }
+ }
+ return maxChars;
}
protected String getBodyTypeAsString(Message message) {
http://git-wip-us.apache.org/repos/asf/camel/blob/43d02628/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java b/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
new file mode 100644
index 0000000..69ee665
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/processor/DefaultExchangeFormatterTest.java
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.camel.processor;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultMessage;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class DefaultExchangeFormatterTest {
+ private DefaultCamelContext camelContext;
+ private Exchange exchange;
+ private DefaultExchangeFormatter exchangeFormatter;
+
+ @Before
+ public void setUp() {
+ camelContext = new DefaultCamelContext();
+ Message message = new DefaultMessage();
+ message.setBody("This is the message body");
+ exchange = new DefaultExchange(camelContext);
+ exchange.setIn(message);
+ exchangeFormatter = new DefaultExchangeFormatter();
+ }
+
+ @Test
+ public void testDefaultFormat() {
+ String formattedExchange = exchangeFormatter.format(exchange);
+ assertTrue(formattedExchange.contains("This is the message body"));
+ }
+
+ @Test
+ /*
+ * The formatted exchange without limitation is
+ * Exchange[ExchangePattern: InOnly, BodyType: String, Body: This is the message body]
+ * The "Exchange[", the "...", and the "]" do not count here, but the
+ * leading ", " that is removed later does count...
+ */
+ public void testFormatWithMaxCharsParameter() {
+ exchangeFormatter.setMaxChars(60);
+ String formattedExchange = exchangeFormatter.format(exchange);
+ assertEquals(60 + "Exchange[...]".length() - ", ".length(), formattedExchange.length());
+ }
+
+ @Test
+ /*
+ * This limitation is really the length of the printed message body, not the
+ * one of the message
+ */
+ public void testFormatWithBodyMaxChars() {
+ camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "7");
+ String formattedExchange = exchangeFormatter.format(exchange);
+ assertFalse(formattedExchange.contains("This is "));
+ assertTrue(formattedExchange.contains("This is"));
+ camelContext.getProperties().remove(Exchange.LOG_DEBUG_BODY_MAX_CHARS);
+ }
+
+ @Test
+ /*
+ * These two limitations will first truncate the message body and then the
+ * total message.
+ */
+ public void testFormatWithBoth() {
+ camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "7");
+ exchangeFormatter.setMaxChars(60);
+ String formattedExchange = exchangeFormatter.format(exchange);
+ assertEquals(60 + "Exchange[...]".length() - ", ".length(), formattedExchange.length());
+ assertFalse(formattedExchange.contains("This is "));
+ camelContext.getProperties().remove(Exchange.LOG_DEBUG_BODY_MAX_CHARS);
+ }
+}