@Override public List<ResolvedFieldDeclaration> fieldsExposedToChild(Node child) { List<ResolvedFieldDeclaration> fields = new LinkedList<>(); fields.addAll(this.wrappedNode.resolve().getDeclaredFields()); this.wrappedNode.getExtendedTypes().forEach(i -> fields.addAll(i.resolve().getAllFieldsVisibleToInheritors())); this.wrappedNode.getImplementedTypes().forEach(i -> fields.addAll(i.resolve().getAllFieldsVisibleToInheritors())); return fields; }
@Override public List<ResolvedFieldDeclaration> getAllFields() { List<ResolvedFieldDeclaration> fields = javaParserTypeAdapter.getFieldsForDeclaredVariables(); this.getAncestors().forEach(a -> fields.addAll(a.getAllFieldsVisibleToInheritors())); this.wrappedNode.getMembers().stream().filter(m -> m instanceof FieldDeclaration).forEach(m -> { FieldDeclaration fd = (FieldDeclaration)m; fd.getVariables().forEach(v -> fields.add(new JavaParserFieldDeclaration(v, typeSolver))); }); return fields; }
public MethodImp parse(final String signature) { final StringBuilder sb = new StringBuilder(); sb.append("class A {\n"); if (!signature.contains("(")) { sb.append(signature.contains("()") ? signature : signature.concat("()")); } else { sb.append(signature); } if (!signature.contains("{}")) { sb.append(" {}"); } sb.append("\n}"); final MethodImp method = new MethodImp("NOT_DEFINED"); final CompilationUnit compilationUnit = JavaParser.parse(sb.toString()); compilationUnit.getClassByName("A").ifPresent(clazz -> { clazz.getMethods().forEach(md -> { method.name(md.getNameAsString()); method.visibility(this.getVisibility(md)); method.modifiers(this.getModifiers(md)); method.returnType(this.getReturnType(md)); method.exceptions(this.getExceptions(md)); md.getAnnotations().forEach(an -> this.getAnnotationMethod(an) .ifPresent(x -> method.annotation(x))); md.getParameters().forEach(p -> this.getField(p) .ifPresent(x -> method.parameters().add(x))); }); }); return method; }
public FieldImp parse(final String signature) { final StringBuilder sb = new StringBuilder(); sb.append("class A {\n"); sb.append(signature.endsWith(";") ? signature : signature.concat(";")); sb.append("\n}"); final FieldImp field = new FieldImp("NOT_DEFINED", null); final CompilationUnit compilationUnit = JavaParser.parse(sb.toString()); compilationUnit.getClassByName("A").ifPresent(clazz -> { clazz.getFields().forEach(fd -> { field.name(fd.getVariables().get(0).toString()); field.type(this.getType(fd)); field.visibility(this.getVisibility(fd)); field.modifiers(this.getModifiers(fd)); fd.getAnnotations().forEach(an -> this.getAnnotationField(an) .ifPresent(x -> field.annotation(x))); }); }); return field; }
private Optional<AnnotationImp> getAnnotationField(final AnnotationExpr an) { Optional<AnnotationImp> optional = Optional.empty(); final List<String> classes = this.findImportForClasses(an.getNameAsString()); for (final Class<?> clazz : this.loadClasses(classes)) { try { final AnnotationImp annotationImp = new AnnotationImp(clazz.asSubclass(Annotation.class)); annotationImp.location(LocationEnum.FIELD); an.ifNormalAnnotationExpr(normal -> { normal.getPairs().forEach(pair -> { annotationImp.property( pair.getNameAsString(), pair.getValue().toString().replaceAll("\"", "")); }); }); optional = Optional.ofNullable(annotationImp); break; } catch (final Exception e) { // Probably wrong import. } } return optional; }
private Optional<AnnotationImp> getAnnotationMethod(final AnnotationExpr an) { Optional<AnnotationImp> optional = Optional.empty(); final List<String> classes = this.findImportForClasses(an.getNameAsString()); for (final Class<?> clazz : this.loadClasses(classes)) { try { final AnnotationImp annotationImp = new AnnotationImp(clazz.asSubclass(Annotation.class)); annotationImp.location(LocationEnum.METHOD); an.ifNormalAnnotationExpr(normal -> { normal.getPairs().forEach(pair -> { annotationImp.property( pair.getNameAsString(), pair.getValue().toString().replaceAll("\"", "")); }); }); optional = Optional.ofNullable(annotationImp); break; } catch (final Exception e) { // Probably wrong import. } } return optional; }
/** {@inheritDoc} */ @Override public void visit(FieldDeclaration field, ClassBuilder builder) { super.visit(field, builder); TypeFactory factory = new TypeFactory(packageName, imports); if (!skipFieldOrGetter(field.getModifiers())) { field.getVariables().forEach(variable -> builder.withField(new Field( isNullable(field), variable.getNameAsString(), factory.build(variable.getType().asString(), variable.getType() instanceof PrimitiveType) ))); } }