private String parseModuleName(final Path moduleInfoJavaPath, final JavaParser parser) { try { if (! exists(moduleInfoJavaPath)) { return null; } final ParseResult<CompilationUnit> result = parser.parse(COMPILATION_UNIT, provider(moduleInfoJavaPath)); if (result.isSuccessful()) { return result.getResult().get().getModule().map(module -> module.getName().asString()).orElseThrow(GradleException::new); } throw new ParseProblemException(result.getProblems()); } catch (final IOException ex) { throw new GradleException("Couldn't parse Java module name from " + moduleInfoJavaPath, ex); } }
@Override public List<ResolvedFieldDeclaration> fieldsExposedToChild(Node child) { List<ResolvedFieldDeclaration> res = new LinkedList<>(); // Consider the static imports for static fields for (ImportDeclaration importDeclaration : wrappedNode.getImports()) { if (importDeclaration.isStatic()) { Name typeNameAsNode = importDeclaration.isAsterisk() ? importDeclaration.getName() : importDeclaration.getName().getQualifier().get(); String typeName = typeNameAsNode.asString(); ResolvedReferenceTypeDeclaration typeDeclaration = typeSolver.solveType(typeName); res.addAll(typeDeclaration.getAllFields().stream() .filter(f -> f.isStatic()) .filter(f -> importDeclaration.isAsterisk() || importDeclaration.getName().getIdentifier().equals(f.getName())) .collect(Collectors.toList())); } } return res; }
/** * Return the string representation of the name */ public static String nameAsString(Node name) { if (!isAName(name)) { throw new IllegalArgumentException("A name was expected"); } if (name instanceof Name) { return ((Name) name).asString(); } else if (name instanceof SimpleName) { return ((SimpleName) name).getIdentifier(); } else if (name instanceof ClassOrInterfaceType) { return ((ClassOrInterfaceType) name).asString(); } else if (name instanceof FieldAccessExpr) { FieldAccessExpr fieldAccessExpr = (FieldAccessExpr) name; if (isAName(fieldAccessExpr.getScope())) { return nameAsString(fieldAccessExpr.getScope()) + "." + nameAsString(fieldAccessExpr.getName()); } else { throw new IllegalArgumentException(); } } else if (name instanceof NameExpr) { return ((NameExpr) name).getNameAsString(); } else { throw new UnsupportedOperationException("Unknown type of name found: " + name + " (" + name.getClass().getCanonicalName() + ")"); } }