in commons-digester3-core/src/main/java/org/apache/commons/digester3/Digester.java [2550:2617]
public InputSource resolveEntity( final String publicId, final String systemId )
throws SAXException
{
if ( saxLog.isDebugEnabled() )
{
saxLog.debug( "resolveEntity('" + publicId + "', '" + systemId + "')" );
}
if ( publicId != null )
{
this.publicId = publicId;
}
// Has this system identifier been registered?
URL entityURL = null;
if ( publicId != null )
{
entityURL = entityValidator.get( publicId );
}
// Redirect the schema location to a local destination
if ( entityURL == null && systemId != null )
{
entityURL = entityValidator.get( systemId );
}
if ( entityURL == null )
{
if ( systemId == null )
{
// cannot resolve
if ( log.isDebugEnabled() )
{
log.debug( " Cannot resolve null entity, returning null InputSource" );
}
return null;
}
// try to resolve using system ID
if ( log.isDebugEnabled() )
{
log.debug( " Trying to resolve using system ID '" + systemId + "'" );
}
try
{
entityURL = new URL( systemId );
}
catch ( final MalformedURLException e )
{
throw new IllegalArgumentException( "Malformed URL '" + systemId + "' : " + e.getMessage() );
}
}
// Return an input source to our alternative URL
if ( log.isDebugEnabled() )
{
log.debug( " Resolving to alternate DTD '" + entityURL + "'" );
}
try
{
return createInputSourceFromURL( entityURL );
}
catch ( final Exception e )
{
throw createSAXException( e );
}
}