Repository: camel Updated Branches: refs/heads/master 904a49b68 -> 200c1fb25
Allow to use CamelCatalog in cache mode Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/200c1fb2 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/200c1fb2 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/200c1fb2 Branch: refs/heads/master Commit: 200c1fb25369793198a8922e15100d6af8a2d5ac Parents: 904a49b Author: Claus Ibsen <davscl...@apache.org> Authored: Fri Dec 18 10:41:33 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Dec 18 10:43:45 2015 +0100 ---------------------------------------------------------------------- .../org/apache/camel/catalog/CamelCatalog.java | 7 + .../camel/catalog/DefaultCamelCatalog.java | 616 +++++++++++++------ .../camel/catalog/CamelCatalogCacheTest.java | 28 + .../apache/camel/catalog/CamelCatalogTest.java | 9 +- 4 files changed, 459 insertions(+), 201 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/200c1fb2/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 bf34b0a..7dc67a0 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 @@ -29,6 +29,13 @@ import javax.management.MXBean; public interface CamelCatalog { /** + * Enables caching of the resources which makes the catalog faster, but keeps data in memory during caching. + * <p/> + * The catalog does not cache by default. + */ + void enableCache(); + + /** * The version of this Camel Catalog */ String getCatalogVersion(); http://git-wip-us.apache.org/repos/asf/camel/blob/200c1fb2/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 faace83..870bc0f 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 @@ -67,66 +67,123 @@ public class DefaultCamelCatalog implements CamelCatalog { private final VersionHelper version = new VersionHelper(); + // cache of operation -> result + private final Map<String, Object> cache = new HashMap<String, Object>(); + + private boolean caching; + + public DefaultCamelCatalog() { + } + + public DefaultCamelCatalog(boolean caching) { + this.caching = caching; + } + + @Override + public void enableCache() { + caching = true; + } + @Override public String getCatalogVersion() { return version.getVersion(); } @Override + @SuppressWarnings("unchecked") public List<String> findComponentNames() { - List<String> names = new ArrayList<String>(); + List<String> names = null; + if (caching) { + names = (List<String>) cache.get("findComponentNames"); + } - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(COMPONENTS_CATALOG); - if (is != null) { - try { - CatalogHelper.loadLines(is, names); - } catch (IOException e) { - // ignore + if (names == null) { + names = new ArrayList<String>(); + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(COMPONENTS_CATALOG); + if (is != null) { + try { + CatalogHelper.loadLines(is, names); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put("findComponentNames", names); } } return names; } @Override + @SuppressWarnings("unchecked") public List<String> findDataFormatNames() { - List<String> names = new ArrayList<String>(); + List<String> names = null; + if (caching) { + names = (List<String>) cache.get("findDataFormatNames"); + } - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(DATA_FORMATS_CATALOG); - if (is != null) { - try { - CatalogHelper.loadLines(is, names); - } catch (IOException e) { - // ignore + if (names == null) { + names = new ArrayList<String>(); + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(DATA_FORMATS_CATALOG); + if (is != null) { + try { + CatalogHelper.loadLines(is, names); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put("findDataFormatNames", names); } } return names; } @Override + @SuppressWarnings("unchecked") public List<String> findLanguageNames() { - List<String> names = new ArrayList<String>(); + List<String> names = null; + if (caching) { + names = (List<String>) cache.get("findLanguageNames"); + } - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(LANGUAGE_CATALOG); - if (is != null) { - try { - CatalogHelper.loadLines(is, names); - } catch (IOException e) { - // ignore + if (names == null) { + names = new ArrayList<String>(); + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(LANGUAGE_CATALOG); + if (is != null) { + try { + CatalogHelper.loadLines(is, names); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put("findLanguageNames", names); } } return names; } @Override + @SuppressWarnings("unchecked") public List<String> findModelNames() { - List<String> names = new ArrayList<String>(); + List<String> names = null; + if (caching) { + names = (List<String>) cache.get("findModelNames"); + } - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(MODELS_CATALOG); - if (is != null) { - try { - CatalogHelper.loadLines(is, names); - } catch (IOException e) { - // ignore + if (names == null) { + names = new ArrayList<String>(); + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(MODELS_CATALOG); + if (is != null) { + try { + CatalogHelper.loadLines(is, names); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put("findModelNames", names); } } return names; @@ -134,6 +191,7 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public List<String> findModelNames(String filter) { + // should not cache when filter parameter can by any kind of value List<String> answer = new ArrayList<String>(); List<String> names = findModelNames(); @@ -164,6 +222,7 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public List<String> findComponentNames(String filter) { + // should not cache when filter parameter can by any kind of value List<String> answer = new ArrayList<String>(); List<String> names = findComponentNames(); @@ -194,6 +253,7 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public List<String> findDataFormatNames(String filter) { + // should not cache when filter parameter can by any kind of value List<String> answer = new ArrayList<String>(); List<String> names = findDataFormatNames(); @@ -224,6 +284,7 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public List<String> findLanguageNames(String filter) { + // should not cache when filter parameter can by any kind of value List<String> answer = new ArrayList<String>(); List<String> names = findLanguageNames(); @@ -256,157 +317,237 @@ public class DefaultCamelCatalog implements CamelCatalog { public String modelJSonSchema(String name) { String file = MODEL_JSON + "/" + name + ".json"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override public String componentJSonSchema(String name) { String file = COMPONENTS_JSON + "/" + name + ".json"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override public String dataFormatJSonSchema(String name) { String file = DATA_FORMATS_JSON + "/" + name + ".json"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override public String languageJSonSchema(String name) { String file = LANGUAGE_JSON + "/" + name + ".json"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override + @SuppressWarnings("unchecked") public Set<String> findModelLabels() { - SortedSet<String> answer = new TreeSet<String>(); + SortedSet<String> answer = null; + if (caching) { + answer = (TreeSet<String>) cache.get("findModelLabels"); + } - List<String> names = findModelNames(); - for (String name : names) { - String json = modelJSonSchema(name); - if (json != null) { - List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json, false); - for (Map<String, String> row : rows) { - if (row.containsKey("label")) { - String label = row.get("label"); - String[] parts = label.split(","); - for (String part : parts) { - answer.add(part); + if (answer == null) { + answer = new TreeSet<String>(); + List<String> names = findModelNames(); + for (String name : names) { + String json = modelJSonSchema(name); + if (json != null) { + List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json, false); + for (Map<String, String> row : rows) { + if (row.containsKey("label")) { + String label = row.get("label"); + String[] parts = label.split(","); + for (String part : parts) { + answer.add(part); + } } } } } + if (caching) { + cache.put("findModelLabels", answer); + } } return answer; } @Override + @SuppressWarnings("unchecked") public Set<String> findComponentLabels() { - SortedSet<String> answer = new TreeSet<String>(); + SortedSet<String> answer = null; + if (caching) { + answer = (TreeSet<String>) cache.get("findComponentLabels"); + } - List<String> names = findComponentNames(); - for (String name : names) { - String json = componentJSonSchema(name); - if (json != null) { - List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false); - for (Map<String, String> row : rows) { - if (row.containsKey("label")) { - String label = row.get("label"); - String[] parts = label.split(","); - for (String part : parts) { - answer.add(part); + if (answer == null) { + answer = new TreeSet<String>(); + List<String> names = findComponentNames(); + for (String name : names) { + String json = componentJSonSchema(name); + if (json != null) { + List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false); + for (Map<String, String> row : rows) { + if (row.containsKey("label")) { + String label = row.get("label"); + String[] parts = label.split(","); + for (String part : parts) { + answer.add(part); + } } } } } + if (caching) { + cache.put("findComponentLabels", answer); + } } return answer; } @Override + @SuppressWarnings("unchecked") public Set<String> findDataFormatLabels() { - SortedSet<String> answer = new TreeSet<String>(); + SortedSet<String> answer = null; + if (caching) { + answer = (TreeSet<String>) cache.get("findDataFormatLabels"); + } - List<String> names = findDataFormatNames(); - for (String name : names) { - String json = dataFormatJSonSchema(name); - if (json != null) { - List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("dataformat", json, false); - for (Map<String, String> row : rows) { - if (row.containsKey("label")) { - String label = row.get("label"); - String[] parts = label.split(","); - for (String part : parts) { - answer.add(part); + if (answer == null) { + answer = new TreeSet<String>(); + List<String> names = findDataFormatNames(); + for (String name : names) { + String json = dataFormatJSonSchema(name); + if (json != null) { + List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("dataformat", json, false); + for (Map<String, String> row : rows) { + if (row.containsKey("label")) { + String label = row.get("label"); + String[] parts = label.split(","); + for (String part : parts) { + answer.add(part); + } } } } } + if (caching) { + cache.put("findDataFormatLabels", answer); + } } return answer; } @Override + @SuppressWarnings("unchecked") public Set<String> findLanguageLabels() { - SortedSet<String> answer = new TreeSet<String>(); + SortedSet<String> answer = null; + if (caching) { + answer = (TreeSet<String>) cache.get("findLanguageLabels"); + } - List<String> names = findLanguageNames(); - for (String name : names) { - String json = languageJSonSchema(name); - if (json != null) { - List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false); - for (Map<String, String> row : rows) { - if (row.containsKey("label")) { - String label = row.get("label"); - String[] parts = label.split(","); - for (String part : parts) { - answer.add(part); + if (answer == null) { + answer = new TreeSet<String>(); + List<String> names = findLanguageNames(); + for (String name : names) { + String json = languageJSonSchema(name); + if (json != null) { + List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false); + for (Map<String, String> row : rows) { + if (row.containsKey("label")) { + String label = row.get("label"); + String[] parts = label.split(","); + for (String part : parts) { + answer.add(part); + } } } } } + if (caching) { + cache.put("findLanguageLabels", answer); + } } return answer; @@ -416,48 +557,78 @@ public class DefaultCamelCatalog implements CamelCatalog { public String archetypeCatalogAsXml() { String file = ARCHETYPES_CATALOG; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override public String springSchemaAsXml() { String file = SCHEMAS_XML + "/camel-spring.xsd"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override public String blueprintSchemaAsXml() { String file = SCHEMAS_XML + "/camel-blueprint.xsd"; - InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); - if (is != null) { - try { - return CatalogHelper.loadText(is); - } catch (IOException e) { - // ignore + String answer = null; + if (caching) { + answer = (String) cache.get(file); + } + + if (answer == null) { + InputStream is = DefaultCamelCatalog.class.getClassLoader().getResourceAsStream(file); + if (is != null) { + try { + answer = CatalogHelper.loadText(is); + } catch (IOException e) { + // ignore + } + } + if (caching) { + cache.put(file, answer); } } - return null; + return answer; } @Override @@ -713,7 +884,7 @@ public class DefaultCamelCatalog implements CamelCatalog { for (Map.Entry<String, String> entry : properties.entrySet()) { String key = entry.getKey(); String value = entry.getValue() != null ? entry.getValue() : ""; - if (syntax.contains(key)) { + if (syntax != null && syntax.contains(key)) { syntax = syntax.replace(key, value); } else { copy.put(key, value); @@ -835,7 +1006,7 @@ public class DefaultCamelCatalog implements CamelCatalog { String json = componentJSonSchema(scheme); // skip first line json = CatalogHelper.between(json, "\"component\": {", "\"componentProperties\": {"); - json = json.trim(); + json = json != null ? json.trim() : ""; // skip last comma if not the last if (i == names.size() - 1) { json = json.substring(0, json.length() - 1); @@ -852,101 +1023,146 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public String listDataFormatsAsJson() { - StringBuilder sb = new StringBuilder(); - sb.append("["); - List<String> names = findDataFormatNames(); - for (int i = 0; i < names.size(); i++) { - String scheme = names.get(i); - String json = dataFormatJSonSchema(scheme); - // skip first line - json = CatalogHelper.between(json, "\"dataformat\": {", "\"properties\": {"); - json = json.trim(); - // skip last comma if not the last - if (i == names.size() - 1) { - json = json.substring(0, json.length() - 1); + String answer = null; + if (caching) { + answer = (String) cache.get("listDataFormatsAsJson"); + } + + if (answer == null) { + StringBuilder sb = new StringBuilder(); + sb.append("["); + List<String> names = findDataFormatNames(); + for (int i = 0; i < names.size(); i++) { + String scheme = names.get(i); + String json = dataFormatJSonSchema(scheme); + // skip first line + json = CatalogHelper.between(json, "\"dataformat\": {", "\"properties\": {"); + json = json != null ? json.trim() : ""; + // skip last comma if not the last + if (i == names.size() - 1) { + json = json.substring(0, json.length() - 1); + } + sb.append("\n"); + sb.append(" {\n"); + sb.append(" "); + sb.append(json); + } + sb.append("\n]"); + answer = sb.toString(); + if (caching) { + cache.put("listDataFormatsAsJson", answer); } - sb.append("\n"); - sb.append(" {\n"); - sb.append(" "); - sb.append(json); } - sb.append("\n]"); - return sb.toString(); + return answer; } @Override public String listLanguagesAsJson() { - StringBuilder sb = new StringBuilder(); - sb.append("["); - List<String> names = findLanguageNames(); - for (int i = 0; i < names.size(); i++) { - String scheme = names.get(i); - String json = languageJSonSchema(scheme); - // skip first line - json = CatalogHelper.between(json, "\"language\": {", "\"properties\": {"); - json = json.trim(); - // skip last comma if not the last - if (i == names.size() - 1) { - json = json.substring(0, json.length() - 1); + String answer = null; + if (caching) { + answer = (String) cache.get("listLanguagesAsJson"); + } + + if (answer == null) { + StringBuilder sb = new StringBuilder(); + sb.append("["); + List<String> names = findLanguageNames(); + for (int i = 0; i < names.size(); i++) { + String scheme = names.get(i); + String json = languageJSonSchema(scheme); + // skip first line + json = CatalogHelper.between(json, "\"language\": {", "\"properties\": {"); + json = json != null ? json.trim() : ""; + // skip last comma if not the last + if (i == names.size() - 1) { + json = json.substring(0, json.length() - 1); + } + sb.append("\n"); + sb.append(" {\n"); + sb.append(" "); + sb.append(json); + } + sb.append("\n]"); + answer = sb.toString(); + if (caching) { + cache.put("listLanguagesAsJson", answer); } - sb.append("\n"); - sb.append(" {\n"); - sb.append(" "); - sb.append(json); } - sb.append("\n]"); - return sb.toString(); + return answer; } @Override public String listModelsAsJson() { - StringBuilder sb = new StringBuilder(); - sb.append("["); - List<String> names = findModelNames(); - for (int i = 0; i < names.size(); i++) { - String scheme = names.get(i); - String json = modelJSonSchema(scheme); - // skip first line - json = CatalogHelper.between(json, "\"model\": {", "\"properties\": {"); - json = json.trim(); - // skip last comma if not the last - if (i == names.size() - 1) { - json = json.substring(0, json.length() - 1); + String answer = null; + if (caching) { + answer = (String) cache.get("listModelsAsJson"); + } + + if (answer == null) { + StringBuilder sb = new StringBuilder(); + sb.append("["); + List<String> names = findModelNames(); + for (int i = 0; i < names.size(); i++) { + String scheme = names.get(i); + String json = modelJSonSchema(scheme); + // skip first line + json = CatalogHelper.between(json, "\"model\": {", "\"properties\": {"); + json = json != null ? json.trim() : ""; + // skip last comma if not the last + if (i == names.size() - 1) { + json = json.substring(0, json.length() - 1); + } + sb.append("\n"); + sb.append(" {\n"); + sb.append(" "); + sb.append(json); + } + sb.append("\n]"); + answer = sb.toString(); + if (caching) { + cache.put("listModelsAsJson", answer); } - sb.append("\n"); - sb.append(" {\n"); - sb.append(" "); - sb.append(json); } - sb.append("\n]"); - return sb.toString(); + return answer; } @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 + String answer = null; + if (caching) { + answer = (String) cache.get("summaryAsJson"); } - 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(); + if (answer == null) { + 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\": \"").append(getCatalogVersion()).append("\",\n"); + sb.append(" \"eips\": ").append(findModelNames().size()).append(",\n"); + sb.append(" \"components\": ").append(findComponentNames().size()).append(",\n"); + sb.append(" \"dataformats\": ").append(findDataFormatNames().size()).append(",\n"); + sb.append(" \"languages\": ").append(findLanguageNames().size()).append(",\n"); + sb.append(" \"archetypes\": ").append(archetypes).append("\n"); + sb.append("}"); + answer = sb.toString(); + if (caching) { + cache.put("summaryAsJson", answer); + } + } + + return answer; } } http://git-wip-us.apache.org/repos/asf/camel/blob/200c1fb2/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogCacheTest.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogCacheTest.java b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogCacheTest.java new file mode 100644 index 0000000..22fa39d --- /dev/null +++ b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogCacheTest.java @@ -0,0 +1,28 @@ +/** + * 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.catalog; + +import org.junit.BeforeClass; + +public class CamelCatalogCacheTest extends CamelCatalogTest { + + @BeforeClass + public static void createCamelCatalog() { + catalog = new DefaultCamelCatalog(true); + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/200c1fb2/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 b427678..324362f 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,6 +22,8 @@ import java.util.Map; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import static org.apache.camel.catalog.CatalogHelper.loadText; @@ -31,7 +33,12 @@ import static org.junit.Assert.assertTrue; public class CamelCatalogTest { - private CamelCatalog catalog = new DefaultCamelCatalog(); + static CamelCatalog catalog; + + @BeforeClass + public static void createCamelCatalog() { + catalog = new DefaultCamelCatalog(); + } @Test public void testGetVersion() throws Exception {