@ SuppressWarnings ( "unchecked" ) public synchronized < T > T load ( final PluggableService < T > service , final String providerName ) throws ProviderLoaderException { final ProviderIdent ident = new ProviderIdent ( service . getName ( ) , providerName ) ; debug ( "loadInstance for " + ident + ": " + pluginJar ) ; if ( null == pluginProviderDefs . get ( ident ) ) { final String [ ] strings = getClassnames ( ) ; for ( final String classname : strings ) { final Class < ? > cls ; try { cls = loadClass ( classname ) ; if ( matchesProviderDeclaration ( ident , cls ) ) { pluginProviderDefs . put ( ident , cls ) ; } } catch ( PluginException e ) { log . error ( "Failed to load class from " + pluginJar + ": classname: " + classname + ": " + e . getMessage ( ) ) ; } } } final Class < T > cls = pluginProviderDefs . get ( ident ) ; if ( null != cls ) { try { return createProviderForClass ( service , cls ) ; } catch ( PluginException e ) { throw new ProviderLoaderException ( e , service . getName ( ) , providerName ) ; } } return null ; }
Load provider instance for the service