You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/02/07 14:53:31 UTC

[isis] 07/12: ISIS-2526: refactoring is all

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2444
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9334707e27950d527131692d04b4a8af12cfaef3
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Feb 6 15:17:53 2021 +0000

    ISIS-2526: refactoring is all
---
 .../cli/adocfix/OrphanedIncludeStatementFixer.java |   2 +-
 .../isis/tooling/cli/projdoc/ProjectDocWriter.java |  12 ++-
 .../apache/isis/tooling/j2adoc/J2AdocContext.java  |   6 +-
 .../j2adoc/format/UnitFormatterAbstract.java       | 118 ++++++++++-----------
 .../isis/tooling/javamodel/ast/Javadocs.java       |  56 +++++-----
 5 files changed, 99 insertions(+), 95 deletions(-)

diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
index 8d36b7e..0e77eb4 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
@@ -92,7 +92,7 @@ public final class OrphanedIncludeStatementFixer {
                     val includeLineShouldBe = expected.toAdocAsString();
 
                     if(!includeLineShouldBe.equals(include.getMatchingLine())) {
-                        System.out.printf("mismatch\n %s\n %s\n", includeLineShouldBe, include.getMatchingLine());
+                        log.warn("mismatch\n {}\n {}\n", includeLineShouldBe, include.getMatchingLine());
                         correctedIncludeStatement.setValue(expected);
                         fixedCounter.inc();
                     }
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocWriter.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocWriter.java
index 33a028f..8305783 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocWriter.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocWriter.java
@@ -33,7 +33,9 @@ import org.apache.isis.tooling.model4adoc.AsciiDocWriter;
 import lombok.NonNull;
 import lombok.SneakyThrows;
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
+@Log4j2
 final class ProjectDocWriter {
 
     @SneakyThrows
@@ -64,7 +66,7 @@ final class ProjectDocWriter {
 
                 // write system overview
                 val overviewFile = new File(pagesFolder, overview.getSystemOverviewFilename());
-                System.out.printf("writing system overview: %s%n", overviewFile.getName());
+                log.info("writing system overview: {}", overviewFile.getName());
                 docWriter.accept(systemSummaryAdoc, overviewFile);
                 ++writeCount;
             }
@@ -78,7 +80,7 @@ final class ProjectDocWriter {
                            !fileName.equals(overview.getSystemOverviewFilename());
                 })
                 .stream()
-                .peek(adocFile->System.out.printf("deleting file: %s%n", adocFile.getName()))
+                .peek(adocFile->log.debug("deleting file: {}", adocFile.getName()))
                 .peek(__->deleteCount.inc())
                 .forEach(_Files::deleteFile);
 
@@ -90,7 +92,7 @@ final class ProjectDocWriter {
 
                     val adocIndexFile = adocDestinationFileForUnit(unit, global, overview, index);
 
-                    System.out.printf("writing file: %s%n", adocIndexFile.getName());
+                    log.info("writing file: {}", adocIndexFile.getName());
 
                     docWriter.accept(
                             unit.toAsciiDoc(j2aContext),
@@ -100,8 +102,8 @@ final class ProjectDocWriter {
                 }
 
                 // summary
-                System.out.printf(
-                        "ProjectDocWriter: all done. (deleted: %d, written: %d)%n",
+                log.info(
+                        "ProjectDocWriter: all done. (deleted: {}, written: {})",
                         deleteCount.getValue(), writeCount);
             }
 
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
index a6f1829..6df2109 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
@@ -272,10 +272,10 @@ public class J2AdocContext {
 
     private static void logIfEmptyOrAmbiguous(Can<J2AdocUnit> units, String doingWhat) {
         if(units.isEmpty()) {
-            System.out.printf("%s yielded no match %n", doingWhat);
+            log.warn("{} yielded no match %n", doingWhat);
         } else if(units.isCardinalityMultiple()) {
-            System.err.printf("%s was ambiguous with results: %n", doingWhat);
-            units.forEach(unit->System.err.printf("\t%s%n", unit.toString()));
+            log.warn("{} was ambiguous with results: ", doingWhat);
+            units.forEach(unit->log.warn("\t{}", unit.toString()));
         }
     }
 
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterAbstract.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterAbstract.java
index 7e6fba0..a10716c3 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterAbstract.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterAbstract.java
@@ -19,11 +19,18 @@
 package org.apache.isis.tooling.j2adoc.format;
 
 import java.util.Optional;
+import java.util.function.Function;
+
+import com.github.javaparser.ast.body.BodyDeclaration;
+import com.github.javaparser.ast.body.EnumConstantDeclaration;
+import com.github.javaparser.ast.body.FieldDeclaration;
+import com.github.javaparser.ast.nodeTypes.NodeWithJavadoc;
 
 import org.asciidoctor.ast.Document;
 import org.asciidoctor.ast.List;
 import org.asciidoctor.ast.StructuralNode;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.tooling.j2adoc.J2AdocContext;
 import org.apache.isis.tooling.j2adoc.J2AdocUnit;
@@ -81,13 +88,23 @@ implements UnitFormatter {
 
     protected Optional<String> title(final J2AdocUnit unit) {
         return Optional.of(
-                String.format("%s : _%s_",
-                        unit.getFriendlyName(),
-                        unit.getDeclarationKeywordFriendlyName().toLowerCase()));
+                String.format(formatFor(unit),
+                        unit.getFriendlyName()));
+    }
+
+    private static String formatFor(J2AdocUnit unit) {
+        switch (unit.getTypeDeclaration().getKind()) {
+            case ANNOTATION: return "@%s";
+            case CLASS: return "%s";
+            case ENUM: return "%s _(enum)_";
+            case INTERFACE: return "%s _(interface)_";
+            default:
+                throw new IllegalArgumentException(String.format(
+                    "unknown kind: %s", unit.getTypeDeclaration().getKind()));
+        }
     }
 
     protected void intro(final J2AdocUnit unit, final StructuralNode parent) {
-
         unit.getJavadoc()
         .filter(javadoc->!Javadocs.hasHidden(javadoc))
         .map(javadoc->getConverter().javadoc(javadoc, unit))
@@ -107,74 +124,49 @@ implements UnitFormatter {
         javaDocBlock.getBlocks().addAll(javadoc.getBlocks());
     }
 
-    protected void memberDescriptions(final J2AdocUnit unit, final StructuralNode parent) {
+    protected void memberDescriptions(final J2AdocUnit unit, final StructuralNode doc) {
 
-        val ul = getMemberDescriptionContainer(parent);
+        val ul = getMemberDescriptionContainer(doc);
 
-        unit.getTypeDeclaration().getEnumConstantDeclarations().stream()
-        .filter(Javadocs::presentAndNotHidden)
-        .forEach(ecd->{
-            ecd.getJavadoc()
-            .ifPresent(javadoc->{
-
-                appendMemberDescription(ul,
-                                getConverter().enumConstantDeclaration(ecd),
-                                getConverter().javadoc(javadoc, unit));
-            });
-        });
-
-        unit.getTypeDeclaration().getPublicFieldDeclarations().stream()
-        .filter(Javadocs::presentAndNotHidden)
-        .forEach(fd->{
-
-            fd.getJavadoc()
-            .ifPresent(javadoc->{
-
-                appendMemberDescription(ul,
-                        getConverter().fieldDeclaration(fd, unit),
-                        getConverter().javadoc(javadoc, unit));
-            });
-
-        });
+        appendMemberDescriptions(ul, unit,
+                unit.getTypeDeclaration().getEnumConstantDeclarations(),
+                decl -> getConverter().enumConstantDeclaration(decl));
 
-        unit.getTypeDeclaration().getAnnotationMemberDeclarations().stream()
-        .filter(Javadocs::presentAndNotHidden)
-        .forEach(ecd->{
-            ecd.getJavadoc()
-            .ifPresent(javadoc->{
+        appendMemberDescriptions(ul, unit,
+                unit.getTypeDeclaration().getPublicFieldDeclarations(),
+                decl -> getConverter().fieldDeclaration(decl, unit));
 
-                appendMemberDescription(ul,
-                                getConverter().annotationMemberDeclaration(ecd, unit),
-                                getConverter().javadoc(javadoc, unit));
-            });
-        });
+        appendMemberDescriptions(ul, unit,
+                unit.getTypeDeclaration().getAnnotationMemberDeclarations(),
+                decl -> getConverter().annotationMemberDeclaration(decl, unit));
 
-        unit.getTypeDeclaration().getPublicConstructorDeclarations().stream()
-        .filter(Javadocs::presentAndNotHidden)
-        .forEach(cd->{
+        appendMemberDescriptions(ul, unit,
+                unit.getTypeDeclaration().getPublicConstructorDeclarations(),
+                decl -> getConverter().constructorDeclaration(decl, unit));
 
-            cd.getJavadoc()
-            .ifPresent(javadoc->{
+        appendMemberDescriptions(ul, unit,
+                unit.getTypeDeclaration().getPublicMethodDeclarations(),
+                decl -> getConverter().methodDeclaration(decl, unit));
 
-                appendMemberDescription(ul,
-                        getConverter().constructorDeclaration(cd, unit),
-                        getConverter().javadoc(javadoc, unit));
-            });
+        val titleBlock = block(doc);
+        titleBlock.setSource("== Members");
+    }
 
-        });
+    private <T extends NodeWithJavadoc<?>> void appendMemberDescriptions(
+            final StructuralNode container,
+            final J2AdocUnit unit,
+            final Can<T> declarations,
+            final Function<T, String> memberDescriber) {
 
-        unit.getTypeDeclaration().getPublicMethodDeclarations().stream()
+        declarations.stream()
         .filter(Javadocs::presentAndNotHidden)
-        .forEach(md->{
-
-            md.getJavadoc()
+        .forEach(nwj->{
+            nwj.getJavadoc()
             .ifPresent(javadoc->{
-
-                appendMemberDescription(ul,
-                        getConverter().methodDeclaration(md, unit),
-                        getConverter().javadoc(javadoc, unit));
+                appendMemberDescription(container,
+                                memberDescriber.apply(nwj),
+                                getConverter().javadoc(javadoc, unit));
             });
-
         });
     }
 
@@ -190,7 +182,6 @@ implements UnitFormatter {
         val doc = AsciiDocFactory.doc();
 
         // -- title
-
         if(!j2aContext.isSkipTitleHeader()) {
             title(unit)
             .ifPresent(doc::setTitle);
@@ -201,10 +192,15 @@ implements UnitFormatter {
         _Strings.nonEmpty(getContext().getLicenseHeader())
         .ifPresent(notice->AsciiDocFactory.attrNotice(doc, notice));
 
+
         // -- intro
 
         intro(unit, doc);
 
+        // == API
+        val titleBlock = block(doc);
+        titleBlock.setSource("== API");
+
         // -- java source
 
         javaSource(unit)
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/Javadocs.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/Javadocs.java
index ef839a6..c5ae360 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/Javadocs.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/Javadocs.java
@@ -22,10 +22,12 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
+import com.github.javaparser.ast.body.BodyDeclaration;
 import com.github.javaparser.ast.body.ConstructorDeclaration;
 import com.github.javaparser.ast.body.EnumConstantDeclaration;
 import com.github.javaparser.ast.body.FieldDeclaration;
 import com.github.javaparser.ast.body.MethodDeclaration;
+import com.github.javaparser.ast.nodeTypes.NodeWithJavadoc;
 import com.github.javaparser.javadoc.Javadoc;
 import com.github.javaparser.javadoc.JavadocBlockTag;
 import com.github.javaparser.javadoc.description.JavadocDescription;
@@ -37,88 +39,92 @@ public final class Javadocs {
     public static Stream<JavadocBlockTag> streamTagsByName(
             final @NonNull Javadoc javadoc,
             final @NonNull String tagName) {
-        
+
         return javadoc.getBlockTags().stream()
         .filter(tag->tag.getTagName().equals(tagName));
     }
-    
+
     public static Stream<JavadocDescription> streamTagContent(
             final @NonNull Javadoc javadoc,
             final @NonNull String tagName) {
-        
+
         return streamTagsByName(javadoc, tagName)
         .map(tag->tag.getContent());
     }
-    
+
     // -- PREDICATES FOR STREAMS (PRESENT AND NOT HIDDEN)
-    
+
+    public static boolean presentAndNotHidden(final @NonNull NodeWithJavadoc<?> nwj) {
+        return presentAndNotHidden(nwj.getJavadoc());
+    }
+
     public static boolean presentAndNotHidden(final @NonNull AnnotationMemberDeclaration amd) {
         return presentAndNotHidden(amd.getJavadoc());
     }
-    
+
     public static boolean presentAndNotHidden(final @NonNull FieldDeclaration fd) {
         return presentAndNotHidden(fd.getJavadoc());
     }
-    
+
     public static boolean presentAndNotHidden(final @NonNull EnumConstantDeclaration ecd) {
         return presentAndNotHidden(ecd.getJavadoc());
     }
-    
+
     public static boolean presentAndNotHidden(final @NonNull ConstructorDeclaration cd) {
         return presentAndNotHidden(cd.getJavadoc());
     }
-    
+
     public static boolean presentAndNotHidden(final @NonNull MethodDeclaration md) {
         return presentAndNotHidden(md.getJavadoc());
     }
-    
+
     // -- PREDICATES FOR STREAMS (NOT EXPLICITLY HIDDEN)
-    
+
     public static boolean notExplicitlyHidden(final @NonNull AnnotationMemberDeclaration amd) {
         return !hasHidden(amd.getJavadoc());
     }
-    
+
     public static boolean notExplicitlyHidden(final @NonNull FieldDeclaration fd) {
         return !hasHidden(fd.getJavadoc());
     }
-    
+
     public static boolean notExplicitlyHidden(final @NonNull EnumConstantDeclaration ecd) {
         return !hasHidden(ecd.getJavadoc());
     }
-    
+
     public static boolean notExplicitlyHidden(final @NonNull ConstructorDeclaration cd) {
         return !hasHidden(cd.getJavadoc());
     }
-    
+
     public static boolean notExplicitlyHidden(final @NonNull MethodDeclaration md) {
         return !hasHidden(md.getJavadoc());
     }
-    
-    // -- 
-    
+
+    // --
+
     public static boolean hasDeprecated(final @NonNull Javadoc javadoc) {
-        return streamTagsByName(javadoc, "deprecated") 
+        return streamTagsByName(javadoc, "deprecated")
         .findAny()
         .isPresent();
     }
-    
+
     public static boolean hasHidden(final @NonNull Javadoc javadoc) {
-        return streamTagsByName(javadoc, "hidden") 
+        return streamTagsByName(javadoc, "hidden")
         .findAny()
         .isPresent();
     }
-    
+
     public static boolean hasHidden(final @NonNull Optional<Javadoc> javadocOptional) {
         return javadocOptional
         .map(Javadocs::hasHidden)
         .orElse(false);
     }
-    
+
     public static boolean presentAndNotHidden(final @NonNull Optional<Javadoc> javadocOptional) {
         return javadocOptional
         .map(jd->!hasHidden(jd))
         .orElse(false);
     }
-    
-    
+
+
 }