in commons-digester3-core/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java [162:197]
public RuleLoader findLoader( final Digester digester, final String id, final Class<?> pluginClass, final Properties props )
throws PluginException
{
// iterate over the list of RuleFinders, trying each one
// until one of them locates a source of dynamic rules given
// this specific plugin class and the associated declaration
// properties.
final Log log = LogUtils.getLogger( digester );
final boolean debug = log.isDebugEnabled();
log.debug( "scanning ruleFinders to locate loader.." );
final List<RuleFinder> ruleFinders = pluginContext.getRuleFinders();
RuleLoader ruleLoader = null;
for ( final Iterator<RuleFinder> i = ruleFinders.iterator(); i.hasNext() && ruleLoader == null; )
{
final RuleFinder finder = i.next();
if ( debug )
{
log.debug( "checking finder of type " + finder.getClass().getName() );
}
try
{
ruleLoader = finder.findLoader( digester, pluginClass, props );
}
catch ( final PluginException e )
{
throw new PluginException( "Unable to locate plugin rules for plugin" + " with id [" + id + "]"
+ ", and class [" + pluginClass.getName() + "]" + ":" + e.getMessage(), e.getCause() );
}
}
log.debug( "scanned ruleFinders." );
return ruleLoader;
}