use of com.github.antlrjavaparser.api.body.TypeDeclaration in project spring-roo by spring-projects.
the class JavaParserTypeResolutionService method getJavaType.
@Override
public final JavaType getJavaType(final String fileIdentifier) {
Validate.notBlank(fileIdentifier, "Compilation unit path required");
Validate.isTrue(new File(fileIdentifier).exists(), "The file doesn't exist");
Validate.isTrue(new File(fileIdentifier).isFile(), "The identifier doesn't represent a file");
try {
final File file = new File(fileIdentifier);
String typeContents = "";
try {
typeContents = FileUtils.readFileToString(file);
} catch (final IOException ignored) {
}
if (StringUtils.isBlank(typeContents)) {
return null;
}
final CompilationUnit compilationUnit = JavaParser.parse(new ByteArrayInputStream(typeContents.getBytes()));
final String typeName = fileIdentifier.substring(fileIdentifier.lastIndexOf(File.separator) + 1, fileIdentifier.lastIndexOf("."));
for (final TypeDeclaration typeDeclaration : compilationUnit.getTypes()) {
if (typeName.equals(typeDeclaration.getName())) {
return new JavaType(compilationUnit.getPackage().getName().getName() + "." + typeDeclaration.getName());
}
}
return null;
} catch (final IOException e) {
throw new IllegalStateException(e);
} catch (final ParseException e) {
throw new IllegalStateException("Failed to parse " + fileIdentifier + " : " + e.getMessage());
}
}
use of com.github.antlrjavaparser.api.body.TypeDeclaration in project spring-roo by spring-projects.
the class JavaParserUtils method locateTypeDeclaration.
/**
* Searches a compilation unit and locates the declaration with the given
* type's simple name.
*
* @param compilationUnit to scan (required)
* @param javaType the target to locate (required)
* @return the located type declaration or null if it could not be found
*/
public static TypeDeclaration locateTypeDeclaration(final CompilationUnit compilationUnit, final JavaType javaType) {
Validate.notNull(compilationUnit, "Compilation unit required");
Validate.notNull(javaType, "Java type to search for required");
if (compilationUnit.getTypes() == null) {
return null;
}
for (final TypeDeclaration candidate : compilationUnit.getTypes()) {
if (javaType.getSimpleTypeName().equals(candidate.getName())) {
// We have the required type declaration
return candidate;
}
}
return null;
}
Aggregations