From 6ac2a77610c0bd48fc49b7debb432718c3629d83 Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Wed, 20 Mar 2019 08:32:47 +0100
Subject: [PATCH] SSDM-7238: adapt ApiClassesProvider to changes in reflections
 (part II)

---
 .../generic/sharedapi/v3/ApiClassesProvider.java     | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java b/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java
index 6cb819db509..2c929e9ecaf 100644
--- a/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java
+++ b/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java
@@ -61,15 +61,17 @@ public class ApiClassesProvider
     };
 
     private static final Set<Class<?>> NON_SERIALIZABLE_CLASSES = 
-            new HashSet<>(Arrays.asList(FastDownloader.class, FastDownloadResult.class, FastDownloadUtils.class));;
+            new HashSet<>(Arrays.asList(FastDownloader.class, FastDownloadResult.class, FastDownloadUtils.class));
 
     public static Collection<Class<?>> getPublicClasses()
     {
         List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
-        classLoadersList.add(ClasspathHelper.getContextClassLoader());
-        classLoadersList.add(ClasspathHelper.getStaticClassLoader());
+        classLoadersList.add(ClasspathHelper.contextClassLoader());
+        classLoadersList.add(ClasspathHelper.staticClassLoader());
 
-        SubTypesScanner subTypesScanner = new SubTypesScanner();
+        // There is some magic (or may be a bug in reflections 0.9.11: The original SubTypeScanner 
+        // retrieves unwanted classes like java.util.Collection. But the anonymous subclass works.
+        SubTypesScanner subTypesScanner = new SubTypesScanner() {};
         subTypesScanner.filterResultsBy(new FilterBuilder().include(".*"));
 
         FilterBuilder filterBuilder = new FilterBuilder();
@@ -83,7 +85,7 @@ public class ApiClassesProvider
                 .setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
                 .filterInputsBy(filterBuilder));
 
-        Multimap<String, String> map = reflections.getStore().get(SubTypesScanner.class);
+        Multimap<String, String> map = reflections.getStore().get(subTypesScanner.getClass().getSimpleName());
 
         Collection<String> nonInnerClassesAndTestClasses = Collections2.filter(map.values(), new Predicate<String>()
             {
-- 
GitLab