From bec44bffb3ed415315793cf83603ce13bf865ff0 Mon Sep 17 00:00:00 2001 From: Rafael da Fonseca Date: Fri, 29 May 2015 23:32:35 +0200 Subject: [PATCH] Upgrade Reflections to 0.9.9 Signed-off-by: Rajani Karuturi This closes #333 --- pom.xml | 2 +- server/src/com/cloud/api/doc/ApiXmlDocWriter.java | 5 ++++- utils/src/com/cloud/utils/ReflectUtil.java | 12 ++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 6e3730b9e9c..fa019ef7c31 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ 2.6 2.4 1.4.0 - 0.9.8 + 0.9.9 0.15 build/replace.properties 0.5.1 diff --git a/server/src/com/cloud/api/doc/ApiXmlDocWriter.java b/server/src/com/cloud/api/doc/ApiXmlDocWriter.java index 2d2cada0a31..166af4bafd0 100644 --- a/server/src/com/cloud/api/doc/ApiXmlDocWriter.java +++ b/server/src/com/cloud/api/doc/ApiXmlDocWriter.java @@ -96,12 +96,15 @@ public class ApiXmlDocWriter { } public static void main(String[] args) { - Set> cmdClasses = ReflectUtil.getClassesWithAnnotation(APICommand.class, new String[] {"org.apache.cloudstack.api", "com.cloud.api", "com.cloud.api.commands", "com.globo.globodns.cloudstack.api", "org.apache.cloudstack.network.opendaylight.api", "com.cloud.api.commands.netapp", "org.apache.cloudstack.api.command.admin.zone", "org.apache.cloudstack.network.contrail.api.command"}); for (Class cmdClass : cmdClasses) { + if(cmdClass.getAnnotation(APICommand.class)==null){ + System.out.println("Warning, API Cmd class " + cmdClass.getName() + " has no APICommand annotation "); + continue; + } String apiName = cmdClass.getAnnotation(APICommand.class).name(); if (s_apiNameCmdClassMap.containsKey(apiName)) { // handle API cmd separation into admin cmd and user cmd with the common api name diff --git a/utils/src/com/cloud/utils/ReflectUtil.java b/utils/src/com/cloud/utils/ReflectUtil.java index 9c09980e0fc..c8ae954b7d3 100644 --- a/utils/src/com/cloud/utils/ReflectUtil.java +++ b/utils/src/com/cloud/utils/ReflectUtil.java @@ -37,6 +37,10 @@ import java.util.Set; import org.apache.log4j.Logger; import org.reflections.Reflections; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.ClasspathHelper; +import org.reflections.scanners.SubTypesScanner; +import org.reflections.scanners.TypeAnnotationsScanner; import com.google.common.collect.ImmutableSet; @@ -45,6 +49,7 @@ import com.cloud.utils.exception.CloudRuntimeException; public class ReflectUtil { private static final Logger s_logger = Logger.getLogger(ReflectUtil.class); + private static final Logger logger = Logger.getLogger(Reflections.class); public static Pair, Field> getAnyField(Class clazz, String fieldName) { try { @@ -65,10 +70,13 @@ public class ReflectUtil { public static Set> getClassesWithAnnotation(Class annotation, String[] packageNames) { Reflections reflections; Set> classes = new HashSet>(); + ConfigurationBuilder builder=new ConfigurationBuilder(); for (String packageName : packageNames) { - reflections = new Reflections(packageName); - classes.addAll(reflections.getTypesAnnotatedWith(annotation)); + builder.addUrls(ClasspathHelper.forPackage(packageName)); } + builder.setScanners(new SubTypesScanner(),new TypeAnnotationsScanner()); + reflections = new Reflections(builder); + classes.addAll(reflections.getTypesAnnotatedWith(annotation)); return classes; }