From 1fe321173bc9b37eca95fa81af11a0ffe43da4d7 Mon Sep 17 00:00:00 2001 From: Sven Schindler Date: Wed, 2 Nov 2016 14:26:11 +0100 Subject: [PATCH 1/2] adds support for attributes with primitive data types and updates maven compatibility --- .gitignore | 3 ++ dependency-reduced-pom.xml | 38 +++++++++++++++ maven.xml | 39 --------------- pom.xml | 48 +++++++++++++++++++ .../java/org/archive/jmx/Client.java | 46 ++++++++++++++---- 5 files changed, 127 insertions(+), 47 deletions(-) create mode 100644 .gitignore create mode 100644 dependency-reduced-pom.xml delete mode 100644 maven.xml create mode 100644 pom.xml rename src/{ => main}/java/org/archive/jmx/Client.java (95%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15bdd96 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +/.idea +*.iml diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml new file mode 100644 index 0000000..a4a052a --- /dev/null +++ b/dependency-reduced-pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + com.lovbomobile + cmdline-jmxclient + 1 + + + + maven-shade-plugin + 2.4.3 + + + package + + shade + + + + + org.archive.jmx.Client + + + + + + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + diff --git a/maven.xml b/maven.xml deleted file mode 100644 index da31b4f..0000000 --- a/maven.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3eb8d77 --- /dev/null +++ b/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + com.lovbomobile + cmdline-jmxclient + 1 + + + + com.google.guava + guava + 20.0 + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + package + + shade + + + + + org.archive.jmx.Client + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + diff --git a/src/java/org/archive/jmx/Client.java b/src/main/java/org/archive/jmx/Client.java similarity index 95% rename from src/java/org/archive/jmx/Client.java rename to src/main/java/org/archive/jmx/Client.java index 07a5237..47b4129 100644 --- a/src/java/org/archive/jmx/Client.java +++ b/src/main/java/org/archive/jmx/Client.java @@ -25,17 +25,17 @@ */ package org.archive.jmx; +import com.google.common.collect.BoundType; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.text.FieldPosition; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.logging.ConsoleHandler; import java.util.logging.Handler; import java.util.logging.LogRecord; @@ -43,6 +43,7 @@ import java.util.logging.SimpleFormatter; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import javax.management.Attribute; import javax.management.AttributeList; @@ -64,6 +65,8 @@ import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; +import static java.util.stream.Collectors.*; + /** * A Simple Command-Line JMX Client. @@ -651,9 +654,15 @@ protected Object doBeanOperation(MBeanServerConnection mbsc, : new Object[paraminfosLength]; for (int i = 0; i < paraminfosLength; i++) { MBeanParameterInfo paraminfo = paraminfos[i]; - java.lang.reflect.Constructor c = Class.forName( - paraminfo.getType()).getConstructor( - new Class[] {String.class}); + java.lang.reflect.Constructor c; + if (isPrimitive(paraminfo.getType())) { + c = classForPrimitive(paraminfo.getType()).getConstructor( + new Class[]{String.class}); + } else { + c = Class.forName( + paraminfo.getType()).getConstructor( + new Class[]{String.class}); + } params[i] = c.newInstance(new Object[] {parse.getArgs()[i]}); signature[i] = paraminfo.getType(); @@ -665,6 +674,27 @@ protected Object doBeanOperation(MBeanServerConnection mbsc, return result; } + private static ImmutableMap primitivesToWrappers = ImmutableMap.builder(). + put("boolean", Boolean.class). + put("byte", Byte.class). + put("char", Character.class). + put("short", Short.class). + put("int", Integer.class). + put("long", Long.class). + put("float", Float.class). + put("doulbe", Double.class). + build(); + + private static boolean isPrimitive(String type) { + return primitivesToWrappers.entrySet(). + stream().map(x -> x.getKey()). + collect(toList()).contains(type); + } + + private static Class classForPrimitive(String primitive) { + return primitivesToWrappers.get(primitive); + } + protected String listOptions(MBeanServerConnection mbsc, ObjectInstance instance) throws InstanceNotFoundException, IntrospectionException, From f8606e15b488f5b15522ff3e5fad886aa7bf6dc5 Mon Sep 17 00:00:00 2001 From: Sven Schindler Date: Wed, 2 Nov 2016 15:34:02 +0100 Subject: [PATCH 2/2] sets correct package name --- dependency-reduced-pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index a4a052a..43595bb 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -1,7 +1,7 @@ 4.0.0 - com.lovbomobile + org.archive.jmx cmdline-jmxclient 1 diff --git a/pom.xml b/pom.xml index 3eb8d77..e219b20 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ 4.0.0 - com.lovbomobile + org.archive.jmx cmdline-jmxclient 1