This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.18.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit de8fe5938c579102bfcbab7bed97d73a8dcb93e2 Author: Claus Ibsen <[email protected]> AuthorDate: Tue Aug 2 12:14:42 2022 +0200 camel-console - Dev console for JSSE --- .../console/JavaSecurityDevConsoleConfigurer.java | 49 +++++++++ ...pache.camel.impl.console.JavaSecurityDevConsole | 2 + .../org/apache/camel/dev-console/java-security | 2 + .../camel/impl/console/JavaSecurityDevConsole.java | 109 +++++++++++++++++++++ 4 files changed, 162 insertions(+) diff --git a/core/camel-console/src/generated/java/org/apache/camel/impl/console/JavaSecurityDevConsoleConfigurer.java b/core/camel-console/src/generated/java/org/apache/camel/impl/console/JavaSecurityDevConsoleConfigurer.java new file mode 100644 index 00000000000..9feb539f265 --- /dev/null +++ b/core/camel-console/src/generated/java/org/apache/camel/impl/console/JavaSecurityDevConsoleConfigurer.java @@ -0,0 +1,49 @@ +/* Generated by camel build tools - do NOT edit this file! */ +package org.apache.camel.impl.console; + +import java.util.Map; + +import org.apache.camel.CamelContext; +import org.apache.camel.spi.ExtendedPropertyConfigurerGetter; +import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.spi.ConfigurerStrategy; +import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.util.CaseInsensitiveMap; +import org.apache.camel.impl.console.JavaSecurityDevConsole; + +/** + * Generated by camel build tools - do NOT edit this file! + */ +@SuppressWarnings("unchecked") +public class JavaSecurityDevConsoleConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter { + + @Override + public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { + org.apache.camel.impl.console.JavaSecurityDevConsole target = (org.apache.camel.impl.console.JavaSecurityDevConsole) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "CamelContext": target.setCamelContext(property(camelContext, org.apache.camel.CamelContext.class, value)); return true; + default: return false; + } + } + + @Override + public Class<?> getOptionType(String name, boolean ignoreCase) { + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "CamelContext": return org.apache.camel.CamelContext.class; + default: return null; + } + } + + @Override + public Object getOptionValue(Object obj, String name, boolean ignoreCase) { + org.apache.camel.impl.console.JavaSecurityDevConsole target = (org.apache.camel.impl.console.JavaSecurityDevConsole) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "CamelContext": return target.getCamelContext(); + default: return null; + } + } +} + diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.JavaSecurityDevConsole b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.JavaSecurityDevConsole new file mode 100644 index 00000000000..b284af54aee --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.JavaSecurityDevConsole @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.JavaSecurityDevConsoleConfigurer diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/java-security b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/java-security new file mode 100644 index 00000000000..cf191169124 --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/java-security @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.JavaSecurityDevConsole diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java new file mode 100644 index 00000000000..e7315f58e76 --- /dev/null +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java @@ -0,0 +1,109 @@ +/* + * 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.security.Provider; +import java.security.Security; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.camel.spi.Configurer; +import org.apache.camel.spi.annotations.DevConsole; +import org.apache.camel.util.json.JsonArray; +import org.apache.camel.util.json.JsonObject; + +@DevConsole("java-security") +@Configurer(bootstrap = true) +public class JavaSecurityDevConsole extends AbstractDevConsole { + + public JavaSecurityDevConsole() { + super("jvm", "java-security", "Java Security", "Displays Java Security (JSSE) information"); + } + + @Override + protected String doCallText(Map<String, Object> options) { + StringBuilder sb = new StringBuilder(); + + Provider[] providers = Security.getProviders(); + if (providers != null && providers.length > 0) { + sb.append("Security Providers:"); + sb.append("\n"); + for (Provider p : providers) { + sb.append(String.format("\n %s (%s)\n", p.getName(), p.getVersionStr())); + if (p.getInfo() != null) { + sb.append(String.format("\n %s\n", p.getInfo())); + } + List<Provider.Service> services = p.getServices().stream() + .sorted(JavaSecurityDevConsole::compare) + .collect(Collectors.toList()); + for (Provider.Service s : services) { + sb.append(String.format("\n %s: %s (%s)", s.getType(), s.getAlgorithm(), s.getClassName())); + } + sb.append("\n"); + } + sb.append("\n"); + } + + return sb.toString(); + } + + @Override + protected JsonObject doCallJson(Map<String, Object> options) { + JsonObject root = new JsonObject(); + + Provider[] providers = Security.getProviders(); + if (providers != null && providers.length > 0) { + JsonArray arr = new JsonArray(); + root.put("securityProviders", arr); + for (Provider p : providers) { + JsonObject jo = new JsonObject(); + arr.add(jo); + jo.put("name", p.getName()); + jo.put("version", p.getVersionStr()); + if (p.getInfo() != null) { + jo.put("info", p.getInfo()); + } + List<Provider.Service> services = p.getServices().stream() + .sorted(JavaSecurityDevConsole::compare) + .collect(Collectors.toList()); + if (!services.isEmpty()) { + JsonArray arr2 = new JsonArray(); + jo.put("services", arr2); + for (Provider.Service s : services) { + JsonObject js = new JsonObject(); + js.put("type", s.getType()); + js.put("algorithm", s.getAlgorithm()); + js.put("className", s.getClassName()); + arr2.add(js); + } + } + } + } + + return root; + } + + private static int compare(Provider.Service o1, Provider.Service o2) { + int num = o1.getType().compareToIgnoreCase(o2.getType()); + if (num == 0) { + num = o1.getAlgorithm().compareToIgnoreCase(o2.getAlgorithm()); + } + return num; + } + +}
