From 6f9b565103acbc6eae1c50e5ef609241ebc8486e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 12 Feb 2015 11:36:08 +0100 Subject: [PATCH] BUG-2627: do not duplicate descriptions This class effectively creates a repeateable annotation. Unfortunately in Java 8, we get twice as many annotations, which leads to duplicate entries. Instantiate an intermediate Set, so we suppress potential duplicates. Change-Id: I0377d439260c2b3793c972c73373f5f6c6a7f119 Signed-off-by: Robert Varga --- .../impl/dynamicmbean/AnnotationsHelper.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AnnotationsHelper.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AnnotationsHelper.java index efb357466d..fba9844dbf 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AnnotationsHelper.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AnnotationsHelper.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.config.manager.impl.dynamicmbean; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSet.Builder; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.ArrayList; @@ -29,9 +31,9 @@ public class AnnotationsHelper { * @return list of found annotations */ static List findMethodAnnotationInSuperClassesAndIfcs( - final Method setter, Class annotationType, - Set> inspectedInterfaces) { - List result = new ArrayList(); + final Method setter, final Class annotationType, + final Set> inspectedInterfaces) { + Builder result = ImmutableSet.builder(); Class inspectedClass = setter.getDeclaringClass(); do { try { @@ -46,7 +48,8 @@ public class AnnotationsHelper { } catch (NoSuchMethodException e) { inspectedClass = Object.class; // no need to go further } - } while (inspectedClass.equals(Object.class) == false); + } while (!inspectedClass.equals(Object.class)); + // inspect interfaces for (Class ifc : inspectedInterfaces) { if (ifc.isInterface() == false) { @@ -63,7 +66,7 @@ public class AnnotationsHelper { } } - return result; + return new ArrayList<>(result.build()); } /** @@ -74,7 +77,7 @@ public class AnnotationsHelper { * @return list of found annotations */ static List findClassAnnotationInSuperClassesAndIfcs( - Class clazz, Class annotationType, Set> interfaces) { + final Class clazz, final Class annotationType, final Set> interfaces) { List result = new ArrayList(); Class declaringClass = clazz; do { @@ -101,7 +104,7 @@ public class AnnotationsHelper { * @return empty string if no annotation is found, or list of descriptions * separated by newline */ - static String aggregateDescriptions(List descriptions) { + static String aggregateDescriptions(final List descriptions) { StringBuilder builder = new StringBuilder(); for (Description d : descriptions) { if (builder.length() != 0) { -- 2.36.6