package com.telerik.metadata; import com.telerik.metadata.desc.ClassDescriptor; import java.util.ArrayList; import java.util.Arrays; public class ClassRepo { private ClassRepo() { } private static ArrayList<ClassMapProvider> cachedProviders = new ArrayList<ClassMapProvider>(); public static void addToCache(ClassMapProvider classMapProvider) { for (String className : classMapProvider.getClassMap().keySet()) { for (ClassMapProvider cachedProvider : cachedProviders) { ClassDescriptor clazz = cachedProvider.getClassMap().get(className); if (clazz != null) { String errMsg = "Class " + className + " conflict: " + classMapProvider.getPath() + " and " + cachedProvider.getPath(); throw new IllegalArgumentException(errMsg); } } } cachedProviders.add(classMapProvider); } public static ClassDescriptor findClass(String className) { ClassDescriptor clazz = null; for (ClassMapProvider classMapProvider : cachedProviders) { clazz = classMapProvider.getClassMap().get(className); if (clazz != null) { break; } } return clazz; } public static String[] getClassNames() { ArrayList<String> names = new ArrayList<String>(); for (ClassMapProvider classMapProvider : cachedProviders) { for (String className : classMapProvider.getClassMap().keySet()) { names.add(className); } } String[] arrClassNames = names.toArray(new String[names.size()]); Arrays.sort(arrClassNames); return arrClassNames; } }