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)