@ -20,6 +20,7 @@ import org.springframework.core.io.InputStreamSource;
import org.springframework.javapoet.JavaFile ;
import org.springframework.javapoet.JavaFile ;
import org.springframework.util.Assert ;
import org.springframework.util.Assert ;
import org.springframework.util.ClassUtils ;
import org.springframework.util.ClassUtils ;
import org.springframework.util.StringUtils ;
import org.springframework.util.function.ThrowingConsumer ;
import org.springframework.util.function.ThrowingConsumer ;
/ * *
/ * *
@ -43,6 +44,7 @@ public interface GeneratedFiles {
* @param javaFile the java file to add
* @param javaFile the java file to add
* /
* /
default void addSourceFile ( JavaFile javaFile ) {
default void addSourceFile ( JavaFile javaFile ) {
validatePackage ( javaFile . packageName , javaFile . typeSpec . name ) ;
String className = javaFile . packageName + "." + javaFile . typeSpec . name ;
String className = javaFile . packageName + "." + javaFile . typeSpec . name ;
addSourceFile ( className , javaFile : : writeTo ) ;
addSourceFile ( className , javaFile : : writeTo ) ;
}
}
@ -161,11 +163,20 @@ public interface GeneratedFiles {
private static String getClassNamePath ( String className ) {
private static String getClassNamePath ( String className ) {
Assert . hasLength ( className , "'className' must not be empty" ) ;
Assert . hasLength ( className , "'className' must not be empty" ) ;
validatePackage ( ClassUtils . getPackageName ( className ) , className ) ;
Assert . isTrue ( isJavaIdentifier ( className ) ,
Assert . isTrue ( isJavaIdentifier ( className ) ,
"'className' must be a valid identifier, got '" + className + "'" ) ;
"'className' must be a valid identifier, got '" + className + "'" ) ;
return ClassUtils . convertClassNameToResourcePath ( className ) + ".java" ;
return ClassUtils . convertClassNameToResourcePath ( className ) + ".java" ;
}
}
private static void validatePackage ( String packageName , String className ) {
if ( ! StringUtils . hasLength ( packageName ) ) {
throw new IllegalArgumentException ( "Could not add '" + className + "', "
+ "processing classes in the default package is not supported. "
+ "Did you forget to add a package statement?" ) ;
}
}
private static boolean isJavaIdentifier ( String className ) {
private static boolean isJavaIdentifier ( String className ) {
char [ ] chars = className . toCharArray ( ) ;
char [ ] chars = className . toCharArray ( ) ;
for ( int i = 0 ; i < chars . length ; i + + ) {
for ( int i = 0 ; i < chars . length ; i + + ) {