diff --git a/android-metadata-generator/src/src/com/telerik/metadata/Builder.java b/android-metadata-generator/src/src/com/telerik/metadata/Builder.java index 17fce2ca1..5620e10fc 100644 --- a/android-metadata-generator/src/src/com/telerik/metadata/Builder.java +++ b/android-metadata-generator/src/src/com/telerik/metadata/Builder.java @@ -60,7 +60,11 @@ public static TreeNode build(String[] paths) throws Exception { // our class path API 17 // Class clazz = Class.forName(className, false, loader); ClassDescriptor clazz = ClassRepo.findClass(className); - generate(clazz, root); + if (clazz == null) { + throw new ClassNotFoundException("Class " + className + " not found in the input android libraries."); + } else { + generate(clazz, root); + } } catch (Throwable e) { System.out.println("Skip " + className); System.out.println("\tError: " + e.toString()); @@ -248,6 +252,12 @@ private static TreeNode getOrCreateNode(TreeNode root, TypeDescriptor type) } else { String name = ClassUtil.getCanonicalName(type.getSignature()); ClassDescriptor clazz = ClassRepo.findClass(name); + + // if clazz is not found in the ClassRepo, the method/field being analyzed will be skipped + if (clazz == null) { + return null; + } + node = getOrCreateNode(root, clazz, null); } diff --git a/android-metadata-generator/src/src/com/telerik/metadata/ClassRepo.java b/android-metadata-generator/src/src/com/telerik/metadata/ClassRepo.java index 0aac04e4a..d4c98efbf 100644 --- a/android-metadata-generator/src/src/com/telerik/metadata/ClassRepo.java +++ b/android-metadata-generator/src/src/com/telerik/metadata/ClassRepo.java @@ -12,16 +12,6 @@ private ClassRepo() { private static ArrayList cachedProviders = new ArrayList(); 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); } @@ -33,6 +23,7 @@ public static ClassDescriptor findClass(String className) { break; } } + return clazz; } diff --git a/android-metadata-generator/src/src/com/telerik/metadata/Generator.java b/android-metadata-generator/src/src/com/telerik/metadata/Generator.java index eb01f016e..5eed78077 100644 --- a/android-metadata-generator/src/src/com/telerik/metadata/Generator.java +++ b/android-metadata-generator/src/src/com/telerik/metadata/Generator.java @@ -29,7 +29,7 @@ public static void main(String[] args) throws Exception { "You need to pass an output directory!"); } - if (args != null && args.length > 1) { + if (args.length > 1) { params = new String[args.length - 1]; for (int i = 1; i < args.length; i++) { params[i - 1] = args[i];