X-Git-Url: https://juplo.de/gitweb/?p=scannotation;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fscannotation%2FAnnotationDB.java;fp=src%2Fmain%2Fjava%2Forg%2Fscannotation%2FAnnotationDB.java;h=bf27515e32448ade0497c9698843b24f03aee84e;hp=230bd6e0410675130d6ebf1ca2fcecbddda21757;hb=a63b5346cc43457b0efccb238f15367f36244291;hpb=f42e6e6e1662efe9a2fb23a325854c8327829c17 diff --git a/src/main/java/org/scannotation/AnnotationDB.java b/src/main/java/org/scannotation/AnnotationDB.java index 230bd6e..bf27515 100644 --- a/src/main/java/org/scannotation/AnnotationDB.java +++ b/src/main/java/org/scannotation/AnnotationDB.java @@ -50,6 +50,7 @@ public class AnnotationDB implements Serializable protected transient boolean scanFieldAnnotations = true; protected transient String[] ignoredPackages = {"javax", "java", "sun", "com.sun", "javassist"}; protected transient String[] scanPackages = null; + protected transient boolean ignoreBadURLs = false; public class CrossReferenceException extends Exception { @@ -110,7 +111,9 @@ public class AnnotationDB implements Serializable * This method will cross reference annotations in the annotation index with any meta-annotations that they have * and create additional entries as needed. For example: * - * @HttpMethod("GET") public @interface GET {} + *
+    * @ HttpMethod("GET") public @interface GET {}
+    * 
*

* The HttpMethod index will have additional classes added to it for any classes annotated with annotations that * have the HttpMethod meta-annotation. @@ -168,7 +171,6 @@ public class AnnotationDB implements Serializable * a class's implemented interfaces. The cross references will be added to the annotationIndex and * classIndex indexes * - * @param ignoredPackages var arg list of packages to ignore * @throws CrossReferenceException an Exception thrown if referenced interfaces haven't been scanned */ public void crossReferenceImplementedInterfaces() throws CrossReferenceException @@ -293,8 +295,18 @@ public class AnnotationDB implements Serializable this.scanFieldAnnotations = scanFieldAnnotations; } - - /** + /** + * Whether or not you want AnnotationDB to ignore bad URLs passed to scanArchives. + * Default is to throw an IOException. + * + * @param ignoreBadURLs + */ + public void setIgnoreBadURLs(boolean ignoreBadURLs) + { + this.ignoreBadURLs = ignoreBadURLs; + } + + /** * Scan a url that represents an "archive" this is a classpath directory or jar file * * @param urls variable list of URLs to scan as archives @@ -320,10 +332,20 @@ public class AnnotationDB implements Serializable } }; - StreamIterator it = IteratorFactory.create(url, filter); - - InputStream stream; - while ((stream = it.next()) != null) scanClass(stream); + try + { + StreamIterator it = IteratorFactory.create(url, filter); + + InputStream stream; + while ((stream = it.next()) != null) scanClass(stream); + } + catch (IOException e) + { + if (ignoreBadURLs) + continue; + else + throw e; + } } }