private Iterator < Processor > handleServiceLoaderUnavailability ( String key , Exception e ) { if ( fileManager instanceof JavacFileManager ) { StandardJavaFileManager standardFileManager = ( JavacFileManager ) fileManager ; Iterable < ? extends Path > workingPath = fileManager . hasLocation ( ANNOTATION_PROCESSOR_PATH ) ? standardFileManager . getLocationAsPaths ( ANNOTATION_PROCESSOR_PATH ) : standardFileManager . getLocationAsPaths ( CLASS_PATH ) ; if ( needClassLoader ( options . get ( Option . PROCESSOR ) , workingPath ) ) handleException ( key , e ) ; } else { handleException ( key , e ) ; } java . util . List < Processor > pl = Collections . emptyList ( ) ; return pl . iterator ( ) ; }
Returns an empty processor iterator if no processors are on the relevant path otherwise if processors are present logs an error . Called when a service loader is unavailable for some reason either because a service loader class cannot be found or because a security policy prevents class loaders from being created .