package org.codehaus.plexus.classworlds.strategy;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
public class ParentFirstStrategy
extends AbstractStrategy
{
public ParentFirstStrategy( ClassRealm realm )
{
super( realm );
}
public Class<?> loadClass( String name )
throws ClassNotFoundException
{
Class<?> clazz = realm.loadClassFromImport( name );
if ( clazz == null )
{
clazz = realm.loadClassFromParent( name );
if ( clazz == null )
{
clazz = realm.loadClassFromSelf( name );
if ( clazz == null )
{
throw new ClassNotFoundException( name );
}
}
}
return clazz;
}
public URL getResource( String name )
{
URL resource = realm.loadResourceFromImport( name );
if ( resource == null )
{
resource = realm.loadResourceFromParent( name );
if ( resource == null )
{
resource = realm.loadResourceFromSelf( name );
}
}
return resource;
}
public Enumeration<URL> getResources( String name )
throws IOException
{
Enumeration<URL> imports = realm.loadResourcesFromImport( name );
Enumeration<URL> parent = realm.loadResourcesFromParent( name );
Enumeration<URL> self = realm.loadResourcesFromSelf( name );
return combineResources( imports, parent, self );
}
}