You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/08/31 14:28:14 UTC
[1/3] git commit: CAMEL-6466: Allow configuring custom log formatter
from uri parameters.
Updated Branches:
refs/heads/camel-2.11.x f4fdeb1aa -> d83f6eec9
refs/heads/camel-2.12.x 1b911be5c -> ffe417448
refs/heads/master 9eeeac008 -> 81377b0f8
CAMEL-6466: Allow configuring custom log formatter from uri parameters.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/81377b0f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/81377b0f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/81377b0f
Branch: refs/heads/master
Commit: 81377b0f8aa345b24971fa1d0acdca347625dc59
Parents: 9eeeac0
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Aug 31 13:58:02 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Aug 31 13:58:02 2013 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 34 ++++++------
.../component/log/LogCustomFormatterTest.java | 55 +++++++++++++++++++-
2 files changed, 69 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/81377b0f/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 4325114..308b7f4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.log;
-import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
@@ -41,28 +40,30 @@ public class LogComponent extends DefaultComponent {
private ExchangeFormatter exchangeFormatter;
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
- Map<String, Object> originalParameters = new HashMap<String, Object>(parameters);
-
LoggingLevel level = getLoggingLevel(parameters);
- String marker = getAndRemoveParameter(parameters, "marker", String.class);
- Integer groupSize = getAndRemoveParameter(parameters, "groupSize", Integer.class);
- Long groupInterval = getAndRemoveParameter(parameters, "groupInterval", Long.class);
- CamelLogger camelLogger = new CamelLogger(remaining, level, marker);
+ LogEndpoint endpoint = new LogEndpoint(uri, this);
+ endpoint.setLevel(level.name());
+ setProperties(endpoint, parameters);
+
+ CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
Processor logger;
- if (groupSize != null) {
- logger = new ThroughputLogger(camelLogger, groupSize);
- } else if (groupInterval != null) {
- Boolean groupActiveOnly = getAndRemoveParameter(parameters, "groupActiveOnly", Boolean.class, Boolean.TRUE);
- Long groupDelay = getAndRemoveParameter(parameters, "groupDelay", Long.class);
- logger = new ThroughputLogger(camelLogger, this.getCamelContext(), groupInterval, groupDelay, groupActiveOnly);
+ if (endpoint.getGroupSize() != null) {
+ logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
+ } else if (endpoint.getGroupInterval() != null) {
+ Boolean groupActiveOnly = endpoint.getGroupActiveOnly() != null ? endpoint.getGroupActiveOnly() : Boolean.TRUE;
+ Long groupDelay = endpoint.getGroupDelay();
+ logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
// first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
localFormatter = getCamelContext().getRegistry().lookupByNameAndType("logFormatter", ExchangeFormatter.class);
- exchangeFormatter = localFormatter;
+ if (localFormatter != null) {
+ exchangeFormatter = localFormatter;
+ setProperties(exchangeFormatter, parameters);
+ }
}
// if no formatter is available in the Registry, create a local one of the default type, for a single use
if (localFormatter == null) {
@@ -72,9 +73,7 @@ public class LogComponent extends DefaultComponent {
logger = new CamelLogProcessor(camelLogger, localFormatter);
}
- LogEndpoint endpoint = new LogEndpoint(uri, this, logger);
- // we want the endpoint to have the all the options configured from the original parameters
- setProperties(endpoint, originalParameters);
+ endpoint.setLogger(logger);
return endpoint;
}
@@ -94,7 +93,6 @@ public class LogComponent extends DefaultComponent {
* Sets a custom {@link ExchangeFormatter} to convert the Exchange to a String suitable for logging.
* <p />
* If not specified, we default to {@link DefaultExchangeFormatter}.
- * @param exchangeFormatter
*/
public void setExchangeFormatter(ExchangeFormatter exchangeFormatter) {
this.exchangeFormatter = exchangeFormatter;
http://git-wip-us.apache.org/repos/asf/camel/blob/81377b0f/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
index be25920..59047ef 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.log;
+import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.spi.ExchangeFormatter;
@@ -85,6 +87,47 @@ public class LogCustomFormatterTest extends ContextTestSupport {
}
@Test
+ public void testCustomFormatterInRegistryOptions() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ String endpointUri = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo";
+ template.requestBody(endpointUri, "Hello World");
+ template.requestBody(endpointUri, "Hello World");
+
+ assertEquals(2, exchangeFormatter.getCounter());
+ assertEquals("foo", exchangeFormatter.getPrefix());
+ }
+
+ @Test
+ public void testCustomFormatterInRegistryUnknownOption() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ // unknown parameter
+ try {
+ String endpointUri2 = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo&bar=no";
+ template.requestBody(endpointUri2, "Hello World");
+ fail("Should have thrown exception");
+ } catch (Exception e) {
+ ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
+ assertTrue(cause.getMessage().endsWith("Unknown parameters=[{bar=no}]"));
+ }
+ }
+
+ @Test
public void testFormatterNotPickedUpWithDifferentKey() throws Exception {
context.stop();
@@ -118,11 +161,12 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public static class TestExchangeFormatter implements ExchangeFormatter {
private int counter;
private boolean addTen;
+ private String prefix = "";
@Override
public String format(Exchange exchange) {
counter += addTen ? 10 : 1;
- return exchange.toString();
+ return prefix + exchange.toString();
}
public int getCounter() {
@@ -136,7 +180,14 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public void setAddTen(boolean addTen) {
this.addTen = addTen;
}
-
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
}
}
[3/3] git commit: CAMEL-6466: Allow configuring custom log formatter
from uri parameters.
Posted by da...@apache.org.
CAMEL-6466: Allow configuring custom log formatter from uri parameters.
Conflicts:
camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d83f6eec
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d83f6eec
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d83f6eec
Branch: refs/heads/camel-2.11.x
Commit: d83f6eec9b3113319dc9be5e99dc0ca787df7cea
Parents: f4fdeb1
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Aug 31 13:58:02 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Aug 31 14:27:54 2013 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 32 +++++------
.../apache/camel/component/log/LogEndpoint.java | 57 +++++++++++++++++++-
.../component/log/LogCustomFormatterTest.java | 55 ++++++++++++++++++-
3 files changed, 126 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/d83f6eec/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 2828d29..cd81cfe 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -40,25 +40,29 @@ public class LogComponent extends DefaultComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
- String marker = getAndRemoveParameter(parameters, "marker", String.class);
- Integer groupSize = getAndRemoveParameter(parameters, "groupSize", Integer.class);
- Long groupInterval = getAndRemoveParameter(parameters, "groupInterval", Long.class);
- CamelLogger camelLogger = new CamelLogger(remaining, level, marker);
+ LogEndpoint endpoint = new LogEndpoint(uri, this);
+ endpoint.setLevel(level.name());
+ setProperties(endpoint, parameters);
+
+ CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
Processor logger;
- if (groupSize != null) {
- logger = new ThroughputLogger(camelLogger, groupSize);
- } else if (groupInterval != null) {
- Boolean groupActiveOnly = getAndRemoveParameter(parameters, "groupActiveOnly", Boolean.class, Boolean.TRUE);
- Long groupDelay = getAndRemoveParameter(parameters, "groupDelay", Long.class);
- logger = new ThroughputLogger(camelLogger, this.getCamelContext(), groupInterval, groupDelay, groupActiveOnly);
+ if (endpoint.getGroupSize() != null) {
+ logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
+ } else if (endpoint.getGroupInterval() != null) {
+ Boolean groupActiveOnly = endpoint.getGroupActiveOnly() != null ? endpoint.getGroupActiveOnly() : Boolean.TRUE;
+ Long groupDelay = endpoint.getGroupDelay();
+ logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
// first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
localFormatter = getCamelContext().getRegistry().lookupByNameAndType("logFormatter", ExchangeFormatter.class);
- exchangeFormatter = localFormatter;
+ if (localFormatter != null) {
+ exchangeFormatter = localFormatter;
+ setProperties(exchangeFormatter, parameters);
+ }
}
// if no formatter is available in the Registry, create a local one of the default type, for a single use
if (localFormatter == null) {
@@ -68,9 +72,8 @@ public class LogComponent extends DefaultComponent {
logger = new CamelLogProcessor(camelLogger, localFormatter);
}
- LogEndpoint endpoint = new LogEndpoint(uri, this);
- setProperties(endpoint, parameters);
- return new LogEndpoint(uri, this, logger);
+ endpoint.setLogger(logger);
+ return endpoint;
}
/**
@@ -89,7 +92,6 @@ public class LogComponent extends DefaultComponent {
* Sets a custom {@link ExchangeFormatter} to convert the Exchange to a String suitable for logging.
* <p />
* If not specified, we default to {@link LogFormatter}.
- * @param exchangeFormatter
*/
public void setExchangeFormatter(ExchangeFormatter exchangeFormatter) {
this.exchangeFormatter = exchangeFormatter;
http://git-wip-us.apache.org/repos/asf/camel/blob/d83f6eec/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index 74a826e..9cbfffd 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -27,7 +27,14 @@ import org.apache.camel.util.ServiceHelper;
*/
public class LogEndpoint extends ProcessorEndpoint {
- private Processor logger;
+ private volatile Processor logger;
+
+ private String level;
+ private String marker;
+ private Integer groupSize;
+ private Long groupInterval;
+ private Boolean groupActiveOnly;
+ private Long groupDelay;
public LogEndpoint() {
}
@@ -70,4 +77,52 @@ public class LogEndpoint extends ProcessorEndpoint {
protected String createEndpointUri() {
return "log:" + logger.toString();
}
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level;
+ }
+
+ public String getMarker() {
+ return marker;
+ }
+
+ public void setMarker(String marker) {
+ this.marker = marker;
+ }
+
+ public Integer getGroupSize() {
+ return groupSize;
+ }
+
+ public void setGroupSize(Integer groupSize) {
+ this.groupSize = groupSize;
+ }
+
+ public Long getGroupInterval() {
+ return groupInterval;
+ }
+
+ public void setGroupInterval(Long groupInterval) {
+ this.groupInterval = groupInterval;
+ }
+
+ public Boolean getGroupActiveOnly() {
+ return groupActiveOnly;
+ }
+
+ public void setGroupActiveOnly(Boolean groupActiveOnly) {
+ this.groupActiveOnly = groupActiveOnly;
+ }
+
+ public Long getGroupDelay() {
+ return groupDelay;
+ }
+
+ public void setGroupDelay(Long groupDelay) {
+ this.groupDelay = groupDelay;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/d83f6eec/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
index be25920..59047ef 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.log;
+import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.spi.ExchangeFormatter;
@@ -85,6 +87,47 @@ public class LogCustomFormatterTest extends ContextTestSupport {
}
@Test
+ public void testCustomFormatterInRegistryOptions() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ String endpointUri = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo";
+ template.requestBody(endpointUri, "Hello World");
+ template.requestBody(endpointUri, "Hello World");
+
+ assertEquals(2, exchangeFormatter.getCounter());
+ assertEquals("foo", exchangeFormatter.getPrefix());
+ }
+
+ @Test
+ public void testCustomFormatterInRegistryUnknownOption() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ // unknown parameter
+ try {
+ String endpointUri2 = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo&bar=no";
+ template.requestBody(endpointUri2, "Hello World");
+ fail("Should have thrown exception");
+ } catch (Exception e) {
+ ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
+ assertTrue(cause.getMessage().endsWith("Unknown parameters=[{bar=no}]"));
+ }
+ }
+
+ @Test
public void testFormatterNotPickedUpWithDifferentKey() throws Exception {
context.stop();
@@ -118,11 +161,12 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public static class TestExchangeFormatter implements ExchangeFormatter {
private int counter;
private boolean addTen;
+ private String prefix = "";
@Override
public String format(Exchange exchange) {
counter += addTen ? 10 : 1;
- return exchange.toString();
+ return prefix + exchange.toString();
}
public int getCounter() {
@@ -136,7 +180,14 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public void setAddTen(boolean addTen) {
this.addTen = addTen;
}
-
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
}
}
[2/3] git commit: CAMEL-6466: Allow configuring custom log formatter
from uri parameters.
Posted by da...@apache.org.
CAMEL-6466: Allow configuring custom log formatter from uri parameters.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ffe41744
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ffe41744
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ffe41744
Branch: refs/heads/camel-2.12.x
Commit: ffe41744855a609c9779a6763b9a0ec1bfecb837
Parents: 1b911be
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Aug 31 13:58:02 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Aug 31 14:24:47 2013 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 34 ++++++------
.../component/log/LogCustomFormatterTest.java | 55 +++++++++++++++++++-
2 files changed, 69 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ffe41744/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 4325114..308b7f4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.log;
-import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
@@ -41,28 +40,30 @@ public class LogComponent extends DefaultComponent {
private ExchangeFormatter exchangeFormatter;
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
- Map<String, Object> originalParameters = new HashMap<String, Object>(parameters);
-
LoggingLevel level = getLoggingLevel(parameters);
- String marker = getAndRemoveParameter(parameters, "marker", String.class);
- Integer groupSize = getAndRemoveParameter(parameters, "groupSize", Integer.class);
- Long groupInterval = getAndRemoveParameter(parameters, "groupInterval", Long.class);
- CamelLogger camelLogger = new CamelLogger(remaining, level, marker);
+ LogEndpoint endpoint = new LogEndpoint(uri, this);
+ endpoint.setLevel(level.name());
+ setProperties(endpoint, parameters);
+
+ CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
Processor logger;
- if (groupSize != null) {
- logger = new ThroughputLogger(camelLogger, groupSize);
- } else if (groupInterval != null) {
- Boolean groupActiveOnly = getAndRemoveParameter(parameters, "groupActiveOnly", Boolean.class, Boolean.TRUE);
- Long groupDelay = getAndRemoveParameter(parameters, "groupDelay", Long.class);
- logger = new ThroughputLogger(camelLogger, this.getCamelContext(), groupInterval, groupDelay, groupActiveOnly);
+ if (endpoint.getGroupSize() != null) {
+ logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
+ } else if (endpoint.getGroupInterval() != null) {
+ Boolean groupActiveOnly = endpoint.getGroupActiveOnly() != null ? endpoint.getGroupActiveOnly() : Boolean.TRUE;
+ Long groupDelay = endpoint.getGroupDelay();
+ logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
// first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
localFormatter = getCamelContext().getRegistry().lookupByNameAndType("logFormatter", ExchangeFormatter.class);
- exchangeFormatter = localFormatter;
+ if (localFormatter != null) {
+ exchangeFormatter = localFormatter;
+ setProperties(exchangeFormatter, parameters);
+ }
}
// if no formatter is available in the Registry, create a local one of the default type, for a single use
if (localFormatter == null) {
@@ -72,9 +73,7 @@ public class LogComponent extends DefaultComponent {
logger = new CamelLogProcessor(camelLogger, localFormatter);
}
- LogEndpoint endpoint = new LogEndpoint(uri, this, logger);
- // we want the endpoint to have the all the options configured from the original parameters
- setProperties(endpoint, originalParameters);
+ endpoint.setLogger(logger);
return endpoint;
}
@@ -94,7 +93,6 @@ public class LogComponent extends DefaultComponent {
* Sets a custom {@link ExchangeFormatter} to convert the Exchange to a String suitable for logging.
* <p />
* If not specified, we default to {@link DefaultExchangeFormatter}.
- * @param exchangeFormatter
*/
public void setExchangeFormatter(ExchangeFormatter exchangeFormatter) {
this.exchangeFormatter = exchangeFormatter;
http://git-wip-us.apache.org/repos/asf/camel/blob/ffe41744/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
index be25920..59047ef 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomFormatterTest.java
@@ -16,8 +16,10 @@
*/
package org.apache.camel.component.log;
+import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.spi.ExchangeFormatter;
@@ -85,6 +87,47 @@ public class LogCustomFormatterTest extends ContextTestSupport {
}
@Test
+ public void testCustomFormatterInRegistryOptions() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ String endpointUri = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo";
+ template.requestBody(endpointUri, "Hello World");
+ template.requestBody(endpointUri, "Hello World");
+
+ assertEquals(2, exchangeFormatter.getCounter());
+ assertEquals("foo", exchangeFormatter.getPrefix());
+ }
+
+ @Test
+ public void testCustomFormatterInRegistryUnknownOption() throws Exception {
+ context.stop();
+
+ exchangeFormatter = new TestExchangeFormatter();
+ JndiRegistry registry = getRegistryAsJndi();
+ registry.bind("logFormatter", exchangeFormatter);
+ assertEquals("", exchangeFormatter.getPrefix());
+
+ context.start();
+
+ // unknown parameter
+ try {
+ String endpointUri2 = "log:" + LogCustomFormatterTest.class.getCanonicalName() + "?prefix=foo&bar=no";
+ template.requestBody(endpointUri2, "Hello World");
+ fail("Should have thrown exception");
+ } catch (Exception e) {
+ ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
+ assertTrue(cause.getMessage().endsWith("Unknown parameters=[{bar=no}]"));
+ }
+ }
+
+ @Test
public void testFormatterNotPickedUpWithDifferentKey() throws Exception {
context.stop();
@@ -118,11 +161,12 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public static class TestExchangeFormatter implements ExchangeFormatter {
private int counter;
private boolean addTen;
+ private String prefix = "";
@Override
public String format(Exchange exchange) {
counter += addTen ? 10 : 1;
- return exchange.toString();
+ return prefix + exchange.toString();
}
public int getCounter() {
@@ -136,7 +180,14 @@ public class LogCustomFormatterTest extends ContextTestSupport {
public void setAddTen(boolean addTen) {
this.addTen = addTen;
}
-
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
}
}