This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 294b0e5f901 CAMEL-20419: Add transformer dev console 294b0e5f901 is described below commit 294b0e5f901a146d57faa5614c30cdd6564158e6 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Feb 14 14:25:07 2024 +0100 CAMEL-20419: Add transformer dev console --- .../apache/camel/impl/engine/TransformerKey.java | 7 -- .../org/apache/camel/dev-console/transformers | 2 + .../camel/impl/console/TransformerConsole.java | 87 ++++++++++++++++++++++ 3 files changed, 89 insertions(+), 7 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/TransformerKey.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/TransformerKey.java index a74724467ef..01b769cb446 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/TransformerKey.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/TransformerKey.java @@ -48,10 +48,6 @@ public final class TransformerKey extends ValueHolder<String> { /** * Create the string that represents this transformer key. Either uses both full names of from/to data types in * combination or only uses the toType data type full name in case fromType is not specified. - * - * @param from - * @param to - * @return */ private static String createKeyString(DataType from, DataType to) { if (DataType.isAnyType(from)) { @@ -64,9 +60,6 @@ public final class TransformerKey extends ValueHolder<String> { /** * Create the transformer key for the given transformer either using the transformer name or it's specified from/to * data type name. - * - * @param answer - * @return */ public static TransformerKey createFrom(Transformer answer) { if (!DataType.isAnyType(answer.getFrom()) && !DataType.isAnyType(answer.getTo())) { diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/transformers b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/transformers new file mode 100644 index 00000000000..d09831b47ed --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/transformers @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.TransformerConsole diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java new file mode 100644 index 00000000000..ebb6e65b18c --- /dev/null +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java @@ -0,0 +1,87 @@ +/* + * 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.impl.console; + +import java.util.Map; + +import org.apache.camel.spi.Transformer; +import org.apache.camel.spi.TransformerRegistry; +import org.apache.camel.spi.annotations.DevConsole; +import org.apache.camel.support.console.AbstractDevConsole; +import org.apache.camel.util.json.JsonArray; +import org.apache.camel.util.json.JsonObject; + +@DevConsole("transformers") +public class TransformerConsole extends AbstractDevConsole { + + public TransformerConsole() { + super("camel", "transformers", "Data Type Transformers", "Camel Data Type Transformer information"); + } + + @Override + protected String doCallText(Map<String, Object> options) { + StringBuilder sb = new StringBuilder(); + + TransformerRegistry<?> reg = getCamelContext().getTransformerRegistry(); + sb.append(String.format("\n Size: %s", reg.size())); + sb.append(String.format("\n Dynamic Size: %s", reg.dynamicSize())); + sb.append(String.format("\n Static Size: %s", reg.staticSize())); + sb.append(String.format("\n Maximum Cache Size: %s", reg.getMaximumCacheSize())); + + sb.append("\n"); + sb.append("\nTransformers:\n"); + for (Map.Entry<?, Transformer> entry : reg.entrySet()) { + Transformer t = entry.getValue(); + String from = t.getFrom() != null ? t.getFrom().getFullName() : "*"; + String to = t.getTo() != null ? t.getTo().getFullName() : "*"; + sb.append(String.format("\n %s (from: %s to: %s)", t.getName(), from, to)); + } + sb.append("\n"); + + return sb.toString(); + } + + @Override + protected JsonObject doCallJson(Map<String, Object> options) { + JsonObject root = new JsonObject(); + + TransformerRegistry<?> reg = getCamelContext().getTransformerRegistry(); + root.put("size", reg.size()); + root.put("dynamicSize", reg.dynamicSize()); + root.put("staticSize", reg.staticSize()); + root.put("maximumCacheSize", reg.getMaximumCacheSize()); + JsonArray arr = new JsonArray(); + for (Map.Entry<?, Transformer> entry : reg.entrySet()) { + Transformer t = entry.getValue(); + String from = t.getFrom() != null ? t.getFrom().getFullName() : null; + String to = t.getTo() != null ? t.getTo().getFullName() : null; + JsonObject jo = new JsonObject(); + jo.put("name", t.getName()); + if (from != null) { + jo.put("from", from); + } + if (to != null) { + jo.put("to", to); + } + arr.add(jo); + } + if (!arr.isEmpty()) { + root.put("transformers", arr); + } + return root; + } +}