From 4e669b9019959bffdf0b86d0f335e1d733e82ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roland=20Hu=C3=9F?= Date: Wed, 5 Sep 2018 14:02:43 +0200 Subject: [PATCH] chore: Remove accidental references to non Java 1.6 classes Fixes #388. --- .../jolokia/converter/json/BeanExtractor.java | 13 +++++++++++-- .../java/org/jolokia/util/JolokiaCipher.java | 8 ++++---- .../src/test/java/java/beans/Transient.java | 18 ++++++++++++++++++ .../json/ObjectToJsonConverterTest.java | 3 +-- pom.xml | 1 + 5 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 agent/core/src/test/java/java/beans/Transient.java diff --git a/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java b/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java index 05eab9e3b..49bf0e4eb 100644 --- a/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java +++ b/agent/core/src/main/java/org/jolokia/converter/json/BeanExtractor.java @@ -1,8 +1,8 @@ package org.jolokia.converter.json; -import java.beans.Transient; import java.io.OutputStream; import java.io.Writer; +import java.lang.annotation.Annotation; import java.lang.reflect.*; import java.security.AccessController; import java.security.PrivilegedAction; @@ -208,13 +208,22 @@ private List extractBeanAttributes(Object pValue) { if (!Modifier.isStatic(method.getModifiers()) && !IGNORE_METHODS.contains(method.getName()) && !isIgnoredType(method.getReturnType()) && - !method.isAnnotationPresent(Transient.class)) { + !hasAnnotation(method, "java.beans.Transient")) { addAttributes(attrs, method); } } return attrs; } + private boolean hasAnnotation(Method method, String annotation) { + for (Annotation anno : method.getAnnotations()) { + if (anno.annotationType().getName().equals(annotation)) { + return true; + } + } + return false; + } + // Add attributes, which are taken from get methods to the given list @SuppressWarnings("PMD.UnnecessaryCaseChange") private void addAttributes(List pAttrs, Method pMethod) { diff --git a/agent/core/src/main/java/org/jolokia/util/JolokiaCipher.java b/agent/core/src/main/java/org/jolokia/util/JolokiaCipher.java index b9d5f3b6e..d43676e66 100644 --- a/agent/core/src/main/java/org/jolokia/util/JolokiaCipher.java +++ b/agent/core/src/main/java/org/jolokia/util/JolokiaCipher.java @@ -5,7 +5,7 @@ import javax.crypto.spec.SecretKeySpec; import java.io.*; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.security.*; import java.util.Random; @@ -52,7 +52,7 @@ public JolokiaCipher(KeyHolder pKeyHolder) throws NoSuchAlgorithmException { * @return the encoded password */ public String encrypt(final String pText) throws GeneralSecurityException { - byte[] clearBytes = pText.getBytes(StandardCharsets.UTF_8); + byte[] clearBytes = pText.getBytes(Charset.forName("UTF-8")); byte[] salt = getSalt(SALT_SIZE); Cipher cipher = createCipher(salt, Cipher.ENCRYPT_MODE); @@ -91,7 +91,7 @@ public String decrypt(final String pEncryptedText) throws GeneralSecurityExcepti Cipher cipher = createCipher(salt, Cipher.DECRYPT_MODE); byte[] clearBytes = cipher.doFinal(encryptedBytes); - return new String(clearBytes, StandardCharsets.UTF_8); + return new String(clearBytes, Charset.forName("UTF-8")); } // ================================================================= @@ -149,7 +149,7 @@ private Cipher createCipher(byte[] salt, final int mode) public interface KeyHolder { String getKey(); }; private byte[] getKeyAsBytes() { - return keyHolder.getKey().getBytes(StandardCharsets.UTF_8); + return keyHolder.getKey().getBytes(Charset.forName("UTF-8")); } private static class KeyHolderImpl implements KeyHolder { diff --git a/agent/core/src/test/java/java/beans/Transient.java b/agent/core/src/test/java/java/beans/Transient.java new file mode 100644 index 000000000..7ae3ea2d1 --- /dev/null +++ b/agent/core/src/test/java/java/beans/Transient.java @@ -0,0 +1,18 @@ +package java.beans; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * For testing purpose on Java 1.6 + * @author roland + * @since 04.09.18 + */ +@Target({METHOD}) +@Retention(RUNTIME) +public @interface Transient { + boolean value() default true; +} diff --git a/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java b/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java index efeb28672..35287e090 100644 --- a/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java +++ b/agent/core/src/test/java/org/jolokia/converter/json/ObjectToJsonConverterTest.java @@ -268,5 +268,4 @@ public void setTransientValue(String transientValue) { this.transientValue = transientValue; } } -} - +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 114cd8dec..cdb82ae0e 100644 --- a/pom.xml +++ b/pom.xml @@ -750,6 +750,7 @@ + disable-javadoc-lint