@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2012 the original author or authors .
* Copyright 2002 - 2014 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -74,7 +74,23 @@ public class SimpleMetadataReaderFactory implements MetadataReaderFactory {
@@ -74,7 +74,23 @@ public class SimpleMetadataReaderFactory implements MetadataReaderFactory {
public MetadataReader getMetadataReader ( String className ) throws IOException {
String resourcePath = ResourceLoader . CLASSPATH_URL_PREFIX +
ClassUtils . convertClassNameToResourcePath ( className ) + ClassUtils . CLASS_FILE_SUFFIX ;
return getMetadataReader ( this . resourceLoader . getResource ( resourcePath ) ) ;
Resource resource = this . resourceLoader . getResource ( resourcePath ) ;
if ( ! resource . exists ( ) ) {
// Maybe an inner class name using the dot name syntax? Need to use the dollar syntax here...
// ClassUtils.forName has an equivalent check for resolution into Class references later on.
int lastDotIndex = className . lastIndexOf ( '.' ) ;
if ( lastDotIndex ! = - 1 ) {
String innerClassName =
className . substring ( 0 , lastDotIndex ) + '$' + className . substring ( lastDotIndex + 1 ) ;
String innerClassResourcePath = ResourceLoader . CLASSPATH_URL_PREFIX +
ClassUtils . convertClassNameToResourcePath ( innerClassName ) + ClassUtils . CLASS_FILE_SUFFIX ;
Resource innerClassResource = this . resourceLoader . getResource ( innerClassResourcePath ) ;
if ( innerClassResource . exists ( ) ) {
resource = innerClassResource ;
}
}
}
return getMetadataReader ( resource ) ;
}
@Override