Camel catalog to deal with building log endpoint uris
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa26b1cb Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa26b1cb Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa26b1cb Branch: refs/heads/master Commit: fa26b1cb807724b6372a1ce3fea262359442fe23 Parents: 2489037 Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Dec 16 11:46:06 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Dec 16 11:53:58 2015 +0100 ---------------------------------------------------------------------- .../camel/catalog/DefaultCamelCatalog.java | 27 ++++++++++++++++++++ .../apache/camel/catalog/CamelCatalogTest.java | 16 +++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/fa26b1cb/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java index d5c34f5..faace83 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java @@ -698,6 +698,9 @@ public class DefaultCamelCatalog implements CamelCatalog { throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema"); } + // do any properties filtering which can be needed for some special components + properties = filterProperties(scheme, properties); + rows = JSonSchemaHelper.parseJsonSchema("properties", json, true); // clip the scheme from the syntax @@ -798,6 +801,30 @@ public class DefaultCamelCatalog implements CamelCatalog { return sb.toString(); } + /** + * Special logic for log endpoints to deal when showAll=true + */ + private Map<String, String> filterProperties(String scheme, Map<String, String> options) { + if ("log".equals(scheme)) { + Map<String, String> answer = new LinkedHashMap<String, String>(); + String showAll = options.get("showAll"); + if ("true".equals(showAll)) { + // remove all the other showXXX options when showAll=true + for (Map.Entry<String, String> entry : options.entrySet()) { + String key = entry.getKey(); + boolean skip = key.startsWith("show") && !key.equals("showAll"); + if (!skip) { + answer.put(key, entry.getValue()); + } + } + } + return answer; + } else { + // use as-is + return options; + } + } + @Override public String listComponentsAsJson() { StringBuilder sb = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/camel/blob/fa26b1cb/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index 3f002a3..b427678 100644 --- a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -22,7 +22,6 @@ import java.util.Map; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.Ignore; import org.junit.Test; import static org.apache.camel.catalog.CatalogHelper.loadText; @@ -317,6 +316,21 @@ public class CamelCatalogTest { } @Test + public void testAsEndpointUriLog() throws Exception { + Map<String, String> map = new HashMap<String, String>(); + map.put("loggerName", "foo"); + map.put("loggerLevel", "WARN"); + map.put("multiline", "true"); + map.put("showAll", "true"); + map.put("showBody", "false"); + map.put("showBodyType", "false"); + map.put("showExchangePattern", "false"); + map.put("style", "Tab"); + + assertEquals("log:foo?loggerLevel=WARN&multiline=true&showAll=true&style=Tab", catalog.asEndpointUri("log", map, false)); + } + + @Test public void testEndpointPropertiesJms() throws Exception { Map<String, String> map = catalog.endpointProperties("jms:queue:foo"); assertNotNull(map);