You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/11 07:24:22 UTC
[isis] branch master updated: ISIS-2473: let J2AUnit#toAsciiDoc
return model instead of 'rendered' string
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 3960d35 ISIS-2473: let J2AUnit#toAsciiDoc return model instead of 'rendered' string
3960d35 is described below
commit 3960d352b6cde5754ce9a59f27a22584a0b96fdc
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 11 08:24:08 2020 +0100
ISIS-2473: let J2AUnit#toAsciiDoc return model instead of 'rendered'
string
---
.../isis/tooling/cli/projdoc/ProjectDocModel.java | 10 ++--
.../isis/tooling/cli/projdoc/ProjectDocWriter.java | 36 +++++--------
.../j2adoc/{J2aContext.java => J2AContext.java} | 24 ++++-----
.../tooling/j2adoc/{J2aUnit.java => J2AUnit.java} | 49 +++++++++--------
.../j2adoc/{J2aUnits.java => J2AUnits.java} | 2 +-
.../apache/isis/tooling/j2adoc/JavaToAsciiDoc.java | 4 +-
.../apache/isis/tooling/j2adoc/test/J2aTest.java | 6 +--
.../isis/tooling/model4adoc/AsciiDocWriter.java | 62 ++++++++++++++++++----
8 files changed, 116 insertions(+), 77 deletions(-)
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
index 58a6702..4d7d967 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
@@ -42,7 +42,7 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.graph._Graph;
import org.apache.isis.tooling.c4.C4;
import org.apache.isis.tooling.cli.CliConfig;
-import org.apache.isis.tooling.j2adoc.J2aContext;
+import org.apache.isis.tooling.j2adoc.J2AContext;
import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
import org.apache.isis.tooling.javamodel.ast.CodeClasses;
import org.apache.isis.tooling.model4adoc.AsciiDocFactory;
@@ -87,7 +87,7 @@ public class ProjectDocModel {
modules = new TreeSet<ProjectNode>();
projTree.depthFirst(modules::add);
- val j2aContext = J2aContext.compactFormat()
+ val j2aContext = J2AContext.compactFormat()
.xrefPageIdFormat(cliConfig.getDocumentGlobalIndexXrefPageIdFormat())
.build();
@@ -179,7 +179,7 @@ public class ProjectDocModel {
final @NonNull Document doc,
final @NonNull String sectionName,
final @Nullable String groupIdPattern,
- final @NonNull J2aContext j2aContext) {
+ final @NonNull J2AContext j2aContext) {
val titleBlock = block(doc);
@@ -275,7 +275,7 @@ public class ProjectDocModel {
sb.append(String.format("%s: %s\n", key, value));
}
- private String details(ProjectNode module, J2aContext j2aContext) {
+ private String details(ProjectNode module, J2AContext j2aContext) {
val description = module.getDescription().trim();
val dependencyList = module.getDependencies()
.stream()
@@ -325,7 +325,7 @@ public class ProjectDocModel {
return String.format("* %s\n", element);
}
- private SortedSet<String> gatherGlobalDocIndexXrefs(File projDir, J2aContext j2aContext) {
+ private SortedSet<String> gatherGlobalDocIndexXrefs(File projDir, J2AContext j2aContext) {
val analyzerConfig = AnalyzerConfigFactory.maven(projDir, Language.JAVA).main();
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 a277c17..2819314 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
@@ -19,16 +19,11 @@
package org.apache.isis.tooling.cli.projdoc;
import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.charset.StandardCharsets;
-
-import javax.annotation.Nullable;
import org.asciidoctor.ast.Document;
-import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.tooling.cli.CliConfig;
-import org.apache.isis.tooling.j2adoc.J2aContext;
+import org.apache.isis.tooling.j2adoc.J2AContext;
import org.apache.isis.tooling.model4adoc.AsciiDocWriter;
import lombok.NonNull;
@@ -40,23 +35,25 @@ final class ProjectDocWriter {
@SneakyThrows
static void write(
final @NonNull CliConfig cliConfig,
- final @NonNull Document doc,
- final @NonNull J2aContext j2aContext) {
-
+ final @NonNull Document adoc,
+ final @NonNull J2AContext j2aContext) {
try {
- val adoc = AsciiDocWriter.toString(doc);
if(cliConfig.isDryRun()) {
- System.out.println(adoc);
+ AsciiDocWriter.print(adoc);
for(val unit : j2aContext.getUnitIndex().values()) {
- System.out.println(unit.toAsciiDoc(j2aContext));
+ AsciiDocWriter.print(unit.toAsciiDoc(j2aContext));
}
} else {
- writeTo(cliConfig.getOutputFile(), adoc);
+ AsciiDocWriter.writeToFile(adoc, cliConfig.getOutputFile());
for(val unit : j2aContext.getUnitIndex().values()) {
- val adocFile = new File(cliConfig.getDocumentGlobalIndexOutputFolder(), unit.getName() + ".adoc");
- writeTo(adocFile, unit.toAsciiDoc(j2aContext));
+
+ AsciiDocWriter.writeToFile(
+ unit.toAsciiDoc(j2aContext),
+ new File(
+ cliConfig.getDocumentGlobalIndexOutputFolder(),
+ unit.getName() + ".adoc"));
}
}
@@ -67,13 +64,4 @@ final class ProjectDocWriter {
}
- // -- HELPER
-
- @SneakyThrows
- private static void writeTo(@Nullable File file, String adoc) {
- try(val fos = new FileOutputStream(file)){
- fos.write(_Strings.toBytes(adoc, StandardCharsets.UTF_8));
- }
- }
-
}
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aContext.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AContext.java
similarity index 86%
rename from tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aContext.java
rename to tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AContext.java
index 49a82dc..fd04d1d 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aContext.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AContext.java
@@ -34,7 +34,7 @@ import lombok.Value;
import lombok.val;
@Value @Builder
-public class J2aContext {
+public class J2AContext {
private final @NonNull String xrefPageIdFormat;
@@ -83,20 +83,20 @@ public class J2aContext {
@Builder.Default
private final boolean includeJavaSource = true;
- private final Map<String, J2aUnit> unitIndex = _Maps.newTreeMap();
+ private final Map<String, J2AUnit> unitIndex = _Maps.newTreeMap();
- public J2aContext add(final @NonNull J2aUnit unit) {
+ public J2AContext add(final @NonNull J2AUnit unit) {
val previousKey = unitIndex.put(unit.getName(), unit);
if(previousKey!=null) {
throw _Exceptions.unrecoverableFormatted(
- "J2aUnit index entries must be unique (index key collision on %s)",
+ "J2AUnit index entries must be unique (index key collision on %s)",
previousKey);
}
return this;
}
- public Stream<J2aUnit> add(final @NonNull File sourceFile) {
- return J2aUnit.parse(sourceFile)
+ public Stream<J2AUnit> add(final @NonNull File sourceFile) {
+ return J2AUnit.parse(sourceFile)
.peek(this::add)
// ensure the stream is consumed here,
// current implementation does not expect more than 1 result per source file
@@ -104,22 +104,22 @@ public class J2aContext {
.stream();
}
- public Stream<J2aUnit> streamUnits() {
+ public Stream<J2AUnit> streamUnits() {
return unitIndex.values().stream();
}
- public Optional<J2aUnit> getUnit(String key) {
+ public Optional<J2AUnit> getUnit(String key) {
return Optional.ofNullable(unitIndex.get(key));
}
// -- PREDEFINED FORMATS
- public static J2aContextBuilder javaSourceWithFootNotesFormat() {
- return J2aContext.builder();
+ public static J2AContextBuilder javaSourceWithFootNotesFormat() {
+ return J2AContext.builder();
}
- public static J2aContextBuilder compactFormat() {
- return J2aContext.builder()
+ public static J2AContextBuilder compactFormat() {
+ return J2AContext.builder()
.constructorFormat("`%1$s(%2$s)`") // name | param-list)
.genericConstructorFormat("`%2$s%1$s(%3$s)`") // method-generic-type | name | param-list)
.methodFormat("`%2$s(%3$s)` : `%1$s`") // return-type | name | param-list)
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnit.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnit.java
similarity index 85%
rename from tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnit.java
rename to tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnit.java
index c1fe876..c616024 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnit.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnit.java
@@ -24,13 +24,14 @@ import java.util.stream.Stream;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import org.asciidoctor.ast.Document;
+
import org.apache.isis.commons.collections.Can;
import org.apache.isis.tooling.j2adoc.util.AsciiDocIncludeTagFilter;
import org.apache.isis.tooling.javamodel.ast.ClassOrInterfaceDeclarations;
import org.apache.isis.tooling.javamodel.ast.CompilationUnits;
import org.apache.isis.tooling.javamodel.ast.Javadocs;
import org.apache.isis.tooling.model4adoc.AsciiDocFactory;
-import org.apache.isis.tooling.model4adoc.AsciiDocWriter;
import lombok.NonNull;
import lombok.Value;
@@ -39,11 +40,11 @@ import lombok.extern.log4j.Log4j2;
@Value
@Log4j2
-public class J2aUnit {
+public class J2AUnit {
private final ClassOrInterfaceDeclaration td;
- public static Stream<J2aUnit> parse(final @NonNull File sourceFile) {
+ public static Stream<J2AUnit> parse(final @NonNull File sourceFile) {
if("package-info.java".equals(sourceFile.getName())) {
// ignore package files
@@ -60,8 +61,8 @@ public class J2aUnit {
return Stream.of(cu)
.flatMap(CompilationUnits::streamPublicTypeDeclarations)
- .filter(J2aUnits::hasIndexDirective)
- .map(J2aUnit::new);
+ .filter(J2AUnits::hasIndexDirective)
+ .map(J2AUnit::new);
} catch (Exception e) {
log.error("failed to parse java source file {}", sourceFile, e);
@@ -75,13 +76,13 @@ public class J2aUnit {
}
public String getAsciiDocXref(
- final @NonNull J2aContext j2aContext) {
+ final @NonNull J2AContext j2aContext) {
val toAdocConverter = JavaToAsciiDoc.of(j2aContext);
return toAdocConverter.xref(this);
}
- public String toAsciiDoc(
- final @NonNull J2aContext j2aContext) {
+ public Document toAsciiDoc(
+ final @NonNull J2AContext j2aContext) {
val doc = AsciiDocFactory.doc();
@@ -99,6 +100,14 @@ public class J2aUnit {
val toAdocConverter = JavaToAsciiDoc.of(j2aContext);
+
+ // -- title
+
+ val title = String.format("%s : _%s_\n\n",
+ getName(),
+ getDeclarationKeyword());
+
+ doc.setTitle(title);
// -- intro
@@ -120,14 +129,14 @@ public class J2aUnit {
cds.forEach(cd->{
java.append(String.format("\n %s // <.>\n",
- J2aUnits.toNormalizedConstructorDeclaration(cd)));
+ J2AUnits.toNormalizedConstructorDeclaration(cd)));
});
mds.forEach(md->{
java.append(String.format("\n %s // <.>\n",
- J2aUnits.toNormalizedMethodDeclaration(md)));
+ J2AUnits.toNormalizedMethodDeclaration(md)));
});
@@ -165,17 +174,15 @@ public class J2aUnit {
methodDescriptionBlock.setSource(methodDescriptions.toString());
- try {
- val title = String.format("%s : _%s_\n\n",
- getName(),
- getDeclarationKeyword());
-
- doc.setTitle(title);
- return AsciiDocWriter.toString(doc);
- } catch (Exception e) {
- e.printStackTrace();
- return "ERROR: " + e.getMessage();
- }
+ return doc;
+
+// try {
+//
+// return AsciiDocWriter.toString(doc);
+// } catch (Exception e) {
+// e.printStackTrace();
+// return "ERROR: " + e.getMessage();
+// }
}
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnits.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnits.java
similarity index 99%
rename from tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnits.java
rename to tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnits.java
index 09f1b45..cdcfaa0 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2aUnits.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AUnits.java
@@ -27,7 +27,7 @@ import org.apache.isis.tooling.javamodel.ast.Javadocs;
import lombok.NonNull;
import lombok.val;
-final class J2aUnits {
+final class J2AUnits {
/**
* Whether to include given {@link TypeDeclaration} with the index.
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/JavaToAsciiDoc.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/JavaToAsciiDoc.java
index e9b8513..0893eba 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/JavaToAsciiDoc.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/JavaToAsciiDoc.java
@@ -51,7 +51,7 @@ import lombok.val;
@Value(staticConstructor = "of")
final class JavaToAsciiDoc {
- private final J2aContext j2aContext;
+ private final J2AContext j2aContext;
public String constructorDeclaration(final @NonNull ConstructorDeclaration cd) {
val isDeprecated = cd.getAnnotations().stream()
@@ -204,7 +204,7 @@ final class JavaToAsciiDoc {
}
}
- public String xref(final @NonNull J2aUnit unit) {
+ public String xref(final @NonNull J2AUnit unit) {
return String.format("xref:%s[%s]",
String.format(j2aContext.getXrefPageIdFormat(), unit.getName()),
unit.getName());
diff --git a/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2aTest.java b/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2aTest.java
index e2c5d29..c448797 100644
--- a/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2aTest.java
+++ b/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2aTest.java
@@ -31,7 +31,7 @@ import org.apache.isis.commons.internal.base._Files;
import org.apache.isis.commons.internal.base._Text;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.functions._Predicates;
-import org.apache.isis.tooling.j2adoc.J2aContext;
+import org.apache.isis.tooling.j2adoc.J2AContext;
import org.apache.isis.tooling.j2adoc.util.AsciiDocIncludeTagFilter;
import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
@@ -42,7 +42,7 @@ import guru.nidi.codeassert.config.Language;
import static guru.nidi.codeassert.config.Language.JAVA;
-class J2aTest {
+class J2ATest {
@Test //@Disabled
void testJavaDocMining() {
@@ -51,7 +51,7 @@ class J2aTest {
.maven(ProjectSampler.apacheIsisApplib(), Language.JAVA)
.main();
- val j2aContext = J2aContext
+ val j2aContext = J2AContext
//.javaSourceWithFootNotesFormat()
.compactFormat()
.xrefPageIdFormat("system:generated:index/%s.adoc")
diff --git a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocWriter.java b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocWriter.java
index 8ae4cbe..c0d83ad 100644
--- a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocWriter.java
+++ b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocWriter.java
@@ -18,13 +18,20 @@
*/
package org.apache.isis.tooling.model4adoc;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
+import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
+import javax.annotation.Nullable;
+
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.ast.Block;
import org.asciidoctor.ast.Document;
@@ -58,7 +65,7 @@ public class AsciiDocWriter {
* the inverse of {@link Asciidoctor#load(String, java.util.Map)}}
*/
@SneakyThrows
- public static String toString(Document doc) {
+ public static String toString(final @Nullable Document doc) {
if(doc==null) {
return "";
}
@@ -67,23 +74,60 @@ public class AsciiDocWriter {
adocWriter.write(doc, stringWriter);
return stringWriter.toString();
}
+
+ /**
+ * Print to given {@link File}
+ * @param doc
+ * @param file
+ */
+ @SneakyThrows
+ public static void writeToFile(final @Nullable Document doc, final @Nullable File file) {
+ if(doc==null
+ || file==null) {
+ return;
+ }
+ val adocWriter = new AsciiDocWriter();
+ try(val writer = new FileWriter(file, StandardCharsets.UTF_8)) {
+ adocWriter.write(doc, writer);
+ }
+ }
+
+ /**
+ * Print to given {@link PrintStream}
+ * @param doc
+ * @param out
+ */
+ @SneakyThrows
+ public static void print(final @Nullable Document doc, final @Nullable PrintStream out) {
+ if(doc==null
+ || out==null) {
+ return;
+ }
+ val adocWriter = new AsciiDocWriter();
+ adocWriter.write(doc, new PrintWriter(out));
+ }
+
+ /**
+ * Print to {@link System#out}
+ * @param doc
+ */
+ @SneakyThrows
+ public static void print(final @Nullable Document doc) {
+ print(doc, System.out);
+ }
/**
* the inverse of {@link Asciidoctor#load(String, java.util.Map)}}
- * @throws IOException
*/
- public void write(Document doc, Writer writer) throws IOException {
-
- if(doc==null) {
+ @SneakyThrows
+ public void write(final @Nullable Document doc, final @Nullable Writer writer) throws IOException {
+ if(doc==null
+ || writer==null) {
return;
}
-
val formatWriter = new FormatWriter(writer);
-
formatWriter.ifNonEmpty("= %s\n\n", doc.getTitle());
-
writeChildNodes(doc.getBlocks(), formatWriter);
-
}
// -- CHILDREN