This is an automated email from the ASF dual-hosted git repository.

nacx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/master by this push:
     new 9e4c7a1  JCLOUDS-1542 follow-up: check whether isAccessible() is 
already set (#79)
9e4c7a1 is described below

commit 9e4c7a16daeb97f9b51b9077e40d12ce5343840f
Author: Jean-Noël Rouvignac <jnrouvig...@users.noreply.github.com>
AuthorDate: Sun Jul 5 23:33:07 2020 +0200

    JCLOUDS-1542 follow-up: check whether isAccessible() is already set (#79)
    
    AccessibleObject.canAccess() would be much much better,
    but this API can only be used from Java 9 onward.
---
 core/src/main/java/org/jclouds/reflect/Reflection2.java | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/jclouds/reflect/Reflection2.java 
b/core/src/main/java/org/jclouds/reflect/Reflection2.java
index 7d1caf1..8787434 100644
--- a/core/src/main/java/org/jclouds/reflect/Reflection2.java
+++ b/core/src/main/java/org/jclouds/reflect/Reflection2.java
@@ -155,7 +155,8 @@ public class Reflection2 {
                ImmutableSet.Builder<Invokable<?, ?>> builder = 
ImmutableSet.<Invokable<?, ?>> builder();
                Class<?> raw = key.getRawType();
                for (Constructor<?> ctor : raw.getDeclaredConstructors()) {
-                  if (!coreJavaClass(raw)) {
+                  // TODO replace isAccessible() with canAccess() when using 
Java >= 9
+                  if (!ctor.isAccessible() && !coreJavaClass(raw)) {
                      // In JDK 11 up to 14, the only uses for 
`java.beans.ConstructorProperties` annotation
                      // are in the `java.awt`, `java.beans` and `javax.swing` 
packages.
                      // Since these constructors are public, there is no need 
to call `setAccessible()`
@@ -167,7 +168,8 @@ public class Reflection2 {
                if (Modifier.isAbstract(raw.getModifiers())) {
                   for (Invokable<?, Object> method : methods(raw)){
                      if (method.isStatic() && 
method.getReturnType().equals(key)) {
-                        if (!coreJavaClass(raw)) {
+                        // TODO replace isAccessible() with canAccess() when 
using Java >= 9
+                        if (!method.isAccessible() && !coreJavaClass(raw)) {
                            method.setAccessible(true);
                         }
                         builder.add(method);
@@ -325,7 +327,8 @@ public class Reflection2 {
                   if (raw == Object.class)
                      continue;
                   for (Method method : raw.getDeclaredMethods()) {
-                     if (!coreJavaClass(raw)) {
+                     // TODO replace isAccessible() with canAccess() when 
using Java >= 9
+                     if (!method.isAccessible() && !coreJavaClass(raw)) {
                         method.setAccessible(true);
                      }
                      builder.add(key.method(method));

Reply via email to