Repository: camel Updated Branches: refs/heads/camel-2.16.x e10513eb7 -> f35018183 refs/heads/master de4f1cb9c -> 8fbf39613
Camel catalog - Add summary api Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8fbf3961 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8fbf3961 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8fbf3961 Branch: refs/heads/master Commit: 8fbf3961384981949cdbf56e59b95711de37bda2 Parents: de4f1cb Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Oct 18 13:34:08 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Oct 18 13:41:53 2015 +0200 ---------------------------------------------------------------------- .../org/apache/camel/catalog/CamelCatalog.java | 5 ++++ .../camel/catalog/DefaultCamelCatalog.java | 30 ++++++++++++++++++++ .../apache/camel/catalog/CamelCatalogTest.java | 15 ++++++++-- 3 files changed, 48 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8fbf3961/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java index ff66f50..ed8c317 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java @@ -230,4 +230,9 @@ public interface CamelCatalog { */ String listModelsAsJson(); + /** + * Reports a summary what the catalog contains in JSon + */ + String summaryAsJson(); + } http://git-wip-us.apache.org/repos/asf/camel/blob/8fbf3961/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 e91b170..45c63fc 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 @@ -16,6 +16,7 @@ */ package org.apache.camel.catalog; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -33,6 +34,11 @@ import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyDefaultValue; import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyRequired; @@ -832,4 +838,28 @@ public class DefaultCamelCatalog implements CamelCatalog { return sb.toString(); } + @Override + public String summaryAsJson() { + int archetypes = 0; + try { + String xml = archetypeCatalogAsXml(); + Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes())); + Object val = XPathFactory.newInstance().newXPath().evaluate("count(/archetype-catalog/archetypes/archetype)", dom, XPathConstants.NUMBER); + double num = (double) val; + archetypes = (int) num; + } catch (Exception e) { + // ignore + } + + StringBuilder sb = new StringBuilder(); + sb.append("{\n"); + sb.append(" \"version\": \"" + getCatalogVersion() + "\",\n"); + sb.append(" \"eips\": " + findModelNames().size() + ",\n"); + sb.append(" \"components\": " + findComponentNames().size() + ",\n"); + sb.append(" \"dataformats\": " + findDataFormatNames().size() + ",\n"); + sb.append(" \"languages\": " + findLanguageNames().size() + ",\n"); + sb.append(" \"archetypes\": " + archetypes + "\n"); + sb.append("}"); + return sb.toString(); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/8fbf3961/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 899e295..0d1e803 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 @@ -20,13 +20,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import junit.framework.TestCase; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import junit.framework.TestCase; import org.junit.Test; import static org.apache.camel.catalog.CatalogHelper.loadText; -import static org.junit.Assert.assertNotNull; public class CamelCatalogTest extends TestCase { @@ -285,4 +285,15 @@ public class CamelCatalogTest extends TestCase { assertNotNull(tree); } + @Test + public void testSummaryAsJson() throws Exception { + String json = catalog.summaryAsJson(); + assertNotNull(json); + + // validate we can parse the json + ObjectMapper mapper = new ObjectMapper(); + JsonNode tree = mapper.readTree(json); + assertNotNull(tree); + } + }