@ -17,6 +17,7 @@
@@ -17,6 +17,7 @@
package org.springframework.beans.factory.xml ;
import java.io.IOException ;
import java.io.FileNotFoundException ;
import java.util.Map ;
import java.util.Properties ;
import java.util.concurrent.ConcurrentHashMap ;
@ -99,23 +100,30 @@ public class PluggableSchemaResolver implements EntityResolver {
@@ -99,23 +100,30 @@ public class PluggableSchemaResolver implements EntityResolver {
this . schemaMappingsLocation = schemaMappingsLocation ;
}
public InputSource resolveEntity ( String publicId , String systemId ) throws IOException {
if ( logger . isTraceEnabled ( ) ) {
logger . trace ( "Trying to resolve XML entity with public id [" + publicId +
"] and system id [" + systemId + "]" ) ;
}
if ( systemId ! = null ) {
String resourceLocation = getSchemaMappings ( ) . get ( systemId ) ;
if ( resourceLocation ! = null ) {
Resource resource = new ClassPathResource ( resourceLocation , this . classLoader ) ;
InputSource source = new InputSource ( resource . getInputStream ( ) ) ;
source . setPublicId ( publicId ) ;
source . setSystemId ( systemId ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Found XML schema [" + systemId + "] in classpath: " + resourceLocation ) ;
try {
InputSource source = new InputSource ( resource . getInputStream ( ) ) ;
source . setPublicId ( publicId ) ;
source . setSystemId ( systemId ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Found XML schema [" + systemId + "] in classpath: " + resourceLocation ) ;
}
return source ;
}
catch ( FileNotFoundException ex ) {
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Couldn't find XML schema [" + systemId + "]: " + resource , ex ) ;
}
}
return source ;
}
}
return null ;