You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by st...@apache.org on 2019/07/16 10:58:08 UTC

[deltaspike] 01/02: DELTASPIKE-1377 fix typeId evaluation

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

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

commit 6f7de55890adb92fca49985380fe9dfb65e821f8
Author: Vladimir Dvorak <vl...@mailprofiler.com>
AuthorDate: Mon Jul 15 12:22:52 2019 +0200

    DELTASPIKE-1377 fix typeId evaluation
    
    Signed-off-by: Mark Struberg <st...@apache.org>
---
 .../apache/deltaspike/core/util/Annotateds.java    | 40 +++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/Annotateds.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/Annotateds.java
index e8213cf..23fc311 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/Annotateds.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/Annotateds.java
@@ -602,7 +602,26 @@ public final class Annotateds
                     Object value = method.invoke(a);
                     builder.append(method.getName());
                     builder.append('=');
-                    builder.append(value.toString());
+                    if (value.getClass().isArray())
+                    {
+                        Class<?> componentType = value.getClass().getComponentType();
+                        if (componentType.isAnnotation())
+                        {
+                            builder.append(Arrays.asList((Object[]) value));
+                        }
+                        else if (componentType instanceof Class<?>)
+                        {
+                            builder.append(createClassArrayId((Class<?>[]) value));
+                        }
+                        else
+                        {
+                            builder.append(value.toString());
+                        }
+                    }
+                    else
+                    {
+                        builder.append(value.toString());
+                    }
                 }
                 catch (NullPointerException e)
                 {
@@ -636,6 +655,25 @@ public final class Annotateds
     }
 
     /**
+     * Appends comma separated list of class names from classArray to builder
+     */
+    private static String createClassArrayId(Class<?>[] classArray)
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.append('[');
+        for (int i = 0; i < classArray.length; i++)
+        {
+            builder.append(classArray[i].getName());
+            if (i + 1 != classArray.length)
+            {
+                builder.append(',');
+            }
+        }
+        builder.append(']');
+        return builder.toString();
+    }
+
+    /**
      * Compares two annotated elements to see if they have the same annotations
      */
     private static boolean compareAnnotated(Annotated a1, Annotated a2)