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/13 08:17:10 UTC
[isis] branch master updated: ISIS-2473: j2adoc: adds support for
annotation types
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 89f2f20 ISIS-2473: j2adoc: adds support for annotation types
89f2f20 is described below
commit 89f2f2027f052813611718609806477bd9f0c12e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Dec 13 09:16:58 2020 +0100
ISIS-2473: j2adoc: adds support for annotation types
---
.../org/apache/isis/tooling/j2adoc/J2AdocUnit.java | 29 +++++----------
.../tooling/j2adoc/convert/J2AdocConverter.java | 3 ++
.../j2adoc/convert/J2AdocConverterDefault.java | 30 +++++++++++++---
.../isis/tooling/j2adoc/format/UnitFormatter.java | 10 +++---
.../j2adoc/format/UnitFormatterAbstract.java | 30 ++++++++++++----
.../UnitFormatterWithSourceAndFootNotes.java | 42 ++++++++++++++--------
.../isis/tooling/j2adoc/test/J2AdocTest.java | 2 +-
.../javamodel/ast/AnnotationDeclarations.java | 34 +++++++++++++++++-
...ions.java => AnnotationMemberDeclarations.java} | 20 ++++++++---
.../tooling/javamodel/ast/AnyTypeDeclaration.java | 27 ++++++++++----
.../javamodel/ast/ConstructorDeclarations.java | 6 +++-
.../javamodel/ast/EnumConstantDeclarations.java | 4 +--
.../tooling/javamodel/ast/FieldDeclarations.java | 8 +++--
.../isis/tooling/javamodel/ast/Javadocs.java | 9 +++++
.../tooling/javamodel/ast/MethodDeclarations.java | 6 +++-
15 files changed, 191 insertions(+), 69 deletions(-)
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocUnit.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocUnit.java
index 9b86bc9..745022c 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocUnit.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocUnit.java
@@ -23,14 +23,11 @@ import java.util.Optional;
import java.util.stream.Stream;
import com.github.javaparser.StaticJavaParser;
-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.javadoc.Javadoc;
import org.asciidoctor.ast.Document;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.tooling.j2adoc.util.AsciiDocIncludeTagFilter;
import org.apache.isis.tooling.javamodel.ast.AnyTypeDeclaration;
import org.apache.isis.tooling.javamodel.ast.CompilationUnits;
@@ -74,6 +71,10 @@ public final class J2AdocUnit {
}
+ public AnyTypeDeclaration getTypeDeclaration() {
+ return atd;
+ }
+
/**
* Returns the recursively resolved (nested) type name.
* Same as {@link #getSimpleName()} if type is not nested.
@@ -86,24 +87,12 @@ public final class J2AdocUnit {
return atd.getSimpleName();
}
- public String getDeclarationKeyword() {
- return atd.getKind().name().toLowerCase();
- }
-
- public Stream<EnumConstantDeclaration> streamEnumConstantDeclarations() {
- return atd.getEnumConstantDeclarations().stream();
- }
-
- public Stream<FieldDeclaration> streamPublicFieldDeclarations() {
- return atd.getPublicFieldDeclarations().stream();
+ public String getDeclarationKeywordFriendlyName() {
+ return _Strings.capitalize(atd.getKind().name().toLowerCase());
}
- public Stream<ConstructorDeclaration> streamPublicConstructorDeclarations() {
- return atd.getPublicConstructorDeclarations().stream();
- }
-
- public Stream<MethodDeclaration> streamPublicMethodDeclarations() {
- return atd.getPublicMethodDeclarations().stream();
+ public String getDeclarationKeyword() {
+ return atd.getKind().getJavaKeyword();
}
@Getter(lazy = true)
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverter.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverter.java
index 5ef2857..4ff054d 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverter.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.tooling.j2adoc.convert;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
@@ -35,6 +36,8 @@ public interface J2AdocConverter {
Document javadoc(Javadoc javadoc);
+ String annotationMemberDeclaration(AnnotationMemberDeclaration amd);
+
String enumConstantDeclaration(EnumConstantDeclaration ecd);
String fieldDeclaration(FieldDeclaration fd);
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverterDefault.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverterDefault.java
index 2ca09f9..41a2a64 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverterDefault.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/convert/J2AdocConverterDefault.java
@@ -23,6 +23,7 @@ import java.util.stream.Stream;
import javax.annotation.Nullable;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
@@ -44,7 +45,9 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal._Constants;
import org.apache.isis.tooling.j2adoc.J2AdocContext;
import org.apache.isis.tooling.j2adoc.J2AdocUnit;
+import org.apache.isis.tooling.javamodel.ast.AnnotationMemberDeclarations;
import org.apache.isis.tooling.javamodel.ast.ConstructorDeclarations;
+import org.apache.isis.tooling.javamodel.ast.EnumConstantDeclarations;
import org.apache.isis.tooling.javamodel.ast.FieldDeclarations;
import org.apache.isis.tooling.javamodel.ast.Javadocs;
import org.apache.isis.tooling.javamodel.ast.MethodDeclarations;
@@ -60,6 +63,25 @@ final class J2AdocConverterDefault implements J2AdocConverter {
private final J2AdocContext j2aContext;
@Override
+ public String annotationMemberDeclaration(AnnotationMemberDeclaration amd) {
+ val isDeprecated = amd.getAnnotations().stream()
+ .anyMatch(a->a.getNameAsString().equals("Deprecated"))
+ || amd.getJavadoc()
+ .map(Javadocs::hasDeprecated)
+ .orElse(false);
+
+ val memberNameFormat = isDeprecated
+ ? j2aContext.getDeprecatedStaticMemberNameFormat()
+ : j2aContext.getStaticMemberNameFormat();
+
+ val annotMemberFormat = j2aContext.getFormatter().getAnnotationMemberFormat();
+
+ return String.format(annotMemberFormat,
+ type(amd.getType()),
+ String.format(memberNameFormat, AnnotationMemberDeclarations.asNormalizedName(amd)));
+ }
+
+ @Override
public String enumConstantDeclaration(final @NonNull EnumConstantDeclaration ecd) {
val isDeprecated = ecd.getAnnotations().stream()
.anyMatch(a->a.getNameAsString().equals("Deprecated"))
@@ -74,7 +96,7 @@ final class J2AdocConverterDefault implements J2AdocConverter {
val enumConstFormat = j2aContext.getFormatter().getEnumConstantFormat();
return String.format(enumConstFormat,
- String.format(memberNameFormat, ecd.getNameAsString()));
+ String.format(memberNameFormat, EnumConstantDeclarations.asNormalized(ecd)));
}
@Override
@@ -97,7 +119,7 @@ final class J2AdocConverterDefault implements J2AdocConverter {
return String.format(fieldFormat,
type(fd.getCommonType()),
- String.format(memberNameFormat, FieldDeclarations.toNormalizedFieldDeclaration(fd)));
+ String.format(memberNameFormat, FieldDeclarations.asNormalizedName(fd)));
}
@Override
@@ -126,7 +148,7 @@ final class J2AdocConverterDefault implements J2AdocConverter {
val args = Can.<Object>of(
isGenericMember ? typeParamters(typeParams) : null, // Cans do ignored null
- String.format(memberNameFormat, cd.getNameAsString()),
+ String.format(memberNameFormat, ConstructorDeclarations.asNormalizedName(cd)),
parameters(cd.getParameters().stream())
);
@@ -161,7 +183,7 @@ final class J2AdocConverterDefault implements J2AdocConverter {
val args = Can.<Object>of(
isGenericMember ? typeParamters(typeParams) : null, // Cans do ignored null
type(md.getType()),
- String.format(memberNameFormat, md.getNameAsString()),
+ String.format(memberNameFormat, MethodDeclarations.asNormalizedName(md)),
parameters(md.getParameters().stream())
);
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatter.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatter.java
index 360f940..524e6c0 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatter.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatter.java
@@ -35,6 +35,11 @@ extends Function<J2AdocUnit, Document> {
/**
* type | name
*/
+ String getAnnotationMemberFormat();
+
+ /**
+ * type | name
+ */
String getFieldFormat();
/**
@@ -56,11 +61,6 @@ extends Function<J2AdocUnit, Document> {
* method-generic-type | return-type | name | param-list
*/
String getGenericMethodFormat();
-
-// /**
-// * member | description
-// */
-// String getMemberDescriptionFormat();
}
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 d1c7b1d..8c50ae8 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
@@ -50,8 +50,13 @@ implements UnitFormatter {
}
@Override
+ public String getAnnotationMemberFormat() {
+ return "`%2$s` : `%1$s`";
+ }
+
+ @Override
public String getFieldFormat() {
- return "`%1$s %2$s`";
+ return "`%2$s` : `%1$s`";
}
@Override
@@ -78,7 +83,7 @@ implements UnitFormatter {
return Optional.of(
String.format("%s : _%s_",
unit.getName(),
- unit.getDeclarationKeyword()));
+ unit.getDeclarationKeywordFriendlyName().toLowerCase()));
}
protected void intro(final J2AdocUnit unit, final StructuralNode parent) {
@@ -105,7 +110,8 @@ implements UnitFormatter {
val ul = getMemberDescriptionContainer(parent);
- unit.streamEnumConstantDeclarations()
+
+ unit.getTypeDeclaration().getEnumConstantDeclarations().stream()
.filter(Javadocs::presentAndNotHidden)
.forEach(ecd->{
ecd.getJavadoc()
@@ -117,7 +123,7 @@ implements UnitFormatter {
});
});
- unit.streamPublicFieldDeclarations()
+ unit.getTypeDeclaration().getPublicFieldDeclarations().stream()
.filter(Javadocs::presentAndNotHidden)
.forEach(fd->{
@@ -131,7 +137,19 @@ implements UnitFormatter {
});
- unit.streamPublicConstructorDeclarations()
+ unit.getTypeDeclaration().getAnnotationMemberDeclarations().stream()
+ .filter(Javadocs::presentAndNotHidden)
+ .forEach(ecd->{
+ ecd.getJavadoc()
+ .ifPresent(javadoc->{
+
+ appendMemberDescription(ul,
+ getConverter().annotationMemberDeclaration(ecd),
+ getConverter().javadoc(javadoc));
+ });
+ });
+
+ unit.getTypeDeclaration().getPublicConstructorDeclarations().stream()
.filter(Javadocs::presentAndNotHidden)
.forEach(cd->{
@@ -145,7 +163,7 @@ implements UnitFormatter {
});
- unit.streamPublicMethodDeclarations()
+ unit.getTypeDeclaration().getPublicMethodDeclarations().stream()
.filter(Javadocs::presentAndNotHidden)
.forEach(md->{
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterWithSourceAndFootNotes.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterWithSourceAndFootNotes.java
index 8df174a..0760c06 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterWithSourceAndFootNotes.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/format/UnitFormatterWithSourceAndFootNotes.java
@@ -24,6 +24,7 @@ import org.asciidoctor.ast.StructuralNode;
import org.apache.isis.tooling.j2adoc.J2AdocContext;
import org.apache.isis.tooling.j2adoc.J2AdocUnit;
+import org.apache.isis.tooling.javamodel.ast.AnnotationMemberDeclarations;
import org.apache.isis.tooling.javamodel.ast.ConstructorDeclarations;
import org.apache.isis.tooling.javamodel.ast.EnumConstantDeclarations;
import org.apache.isis.tooling.javamodel.ast.FieldDeclarations;
@@ -48,47 +49,58 @@ extends UnitFormatterAbstract {
unit.getDeclarationKeyword(),
unit.getSimpleName()));
- unit.streamEnumConstantDeclarations()
+ unit.getTypeDeclaration().getEnumConstantDeclarations().stream()
.filter(Javadocs::notExplicitlyHidden)
.forEach(ecd->{
- val memberFormat = memberSourceFormat(ecd.getJavadoc().isPresent());
+ val memberFormat = javaSourceMemberFormat(ecd.getJavadoc().isPresent());
java.append(String.format(memberFormat,
- EnumConstantDeclarations.toNormalizedEnumConstantDeclaration(ecd)));
+ EnumConstantDeclarations.asNormalized(ecd)));
});
- unit.streamPublicFieldDeclarations()
+ unit.getTypeDeclaration().getPublicFieldDeclarations().stream()
.filter(Javadocs::notExplicitlyHidden)
.forEach(fd->{
- val memberFormat = memberSourceFormat(fd.getJavadoc().isPresent());
+ val memberFormat = javaSourceMemberFormat(fd.getJavadoc().isPresent());
java.append(String.format(memberFormat,
- FieldDeclarations.toNormalizedFieldDeclaration(fd)));
+ FieldDeclarations.asNormalized(fd)));
});
- unit.streamPublicConstructorDeclarations()
+ unit.getTypeDeclaration().getAnnotationMemberDeclarations().stream()
+ .filter(Javadocs::notExplicitlyHidden)
+ .forEach(fd->{
+
+ val memberFormat = javaSourceMemberFormat(fd.getJavadoc().isPresent());
+
+ java.append(String.format(memberFormat,
+ AnnotationMemberDeclarations.asNormalized(fd)));
+
+ });
+
+ unit.getTypeDeclaration().getPublicConstructorDeclarations().stream()
.filter(Javadocs::notExplicitlyHidden)
.forEach(cd->{
- val memberFormat = memberSourceFormat(cd.getJavadoc().isPresent());
+ val memberFormat = javaSourceMemberFormat(cd.getJavadoc().isPresent());
java.append(String.format(memberFormat,
- ConstructorDeclarations.toNormalizedConstructorDeclaration(cd)));
+ ConstructorDeclarations.asNormalized(cd)));
});
- unit.streamPublicMethodDeclarations()
+ unit.getTypeDeclaration().getPublicMethodDeclarations().stream()
.filter(Javadocs::notExplicitlyHidden)
.forEach(md->{
- val memberFormat = memberSourceFormat(md.getJavadoc().isPresent());
+ val memberFormat = javaSourceMemberFormat(md.getJavadoc().isPresent());
java.append(String.format(memberFormat,
- MethodDeclarations.toNormalizedMethodDeclaration(md)));
+ MethodDeclarations.asNormalized(md)));
});
@@ -99,7 +111,9 @@ extends UnitFormatterAbstract {
AsciiDocFactory.SourceFactory.java(java.toString(), "Java Sources"));
}
-
+
+//XXX java language syntax (for footnote text), but not used any more
+//
// @Override
// public String getEnumConstantFormat() {
// return "`%s`";
@@ -138,7 +152,7 @@ extends UnitFormatterAbstract {
// -- HELPER
- private String memberSourceFormat(boolean addFootnote) {
+ private String javaSourceMemberFormat(boolean addFootnote) {
return addFootnote
? "\n %s // <.>\n"
: "\n %s\n";
diff --git a/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2AdocTest.java b/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2AdocTest.java
index ebc1910..8f83183 100644
--- a/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2AdocTest.java
+++ b/tooling/java2adoc/src/test/java/org/apache/isis/tooling/j2adoc/test/J2AdocTest.java
@@ -61,7 +61,7 @@ class J2AdocTest {
//.filter(source->source.toString().contains("ExecutionMode"))
//.filter(source->source.toString().contains("FactoryService"))
.filter(source->source.toString().contains("Action"))
- .peek(source->System.out.println("parsing source: " + source))
+ //.peek(source->System.out.println("parsing source: " + source))
.forEach(j2aContext::add);
j2aContext.streamUnits()
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
index 3085ca9..b04b38b 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
@@ -18,6 +18,38 @@
*/
package org.apache.isis.tooling.javamodel.ast;
-public class AnnotationDeclarations {
+import java.util.stream.Stream;
+
+import com.github.javaparser.ast.body.AnnotationDeclaration;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
+import com.github.javaparser.ast.body.FieldDeclaration;
+import com.github.javaparser.ast.body.MethodDeclaration;
+
+import lombok.NonNull;
+
+public final class AnnotationDeclarations {
+
+ // ANNOTATION MEMBER
+
+ public static <T> Stream<AnnotationMemberDeclaration> streamAnnotationMemberDeclarations(
+ final @NonNull AnnotationDeclaration typeDeclaration) {
+ return typeDeclaration.getMembers().stream()
+ .filter(member->member instanceof AnnotationMemberDeclaration)
+ .map(AnnotationMemberDeclaration.class::cast);
+ }
+
+ // -- FIELDS
+
+ public static <T> Stream<FieldDeclaration> streamFieldDeclarations(
+ final @NonNull AnnotationDeclaration typeDeclaration) {
+ return typeDeclaration.getFields().stream();
+ }
+
+ // -- METHODS
+
+ public static <T> Stream<MethodDeclaration> streamMethodDeclarations(
+ final @NonNull AnnotationDeclaration typeDeclaration) {
+ return typeDeclaration.getMethods().stream();
+ }
}
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationMemberDeclarations.java
similarity index 56%
copy from tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java
copy to tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationMemberDeclarations.java
index 06704d3..7b966f9 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationMemberDeclarations.java
@@ -18,17 +18,27 @@
*/
package org.apache.isis.tooling.javamodel.ast;
-import com.github.javaparser.ast.body.EnumConstantDeclaration;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
+import com.github.javaparser.printer.PrettyPrinterConfiguration;
import lombok.NonNull;
-public final class EnumConstantDeclarations {
+public final class AnnotationMemberDeclarations {
+
+ private static PrettyPrinterConfiguration printingConf = new PrettyPrinterConfiguration();
+ static {
+ printingConf.setPrintJavadoc(false);
+ }
/**
- * Returns given {@link EnumConstantDeclaration} as normal text, without formatting.
+ * Returns given {@link AnnotationMemberDeclaration} as normal text, without formatting.
*/
- public static String toNormalizedEnumConstantDeclaration(final @NonNull EnumConstantDeclaration ecd) {
- return ecd.toString().trim();
+ public static String asNormalized(final @NonNull AnnotationMemberDeclaration amd) {
+ return amd.toString(printingConf).trim();
+ }
+
+ public static String asNormalizedName(final @NonNull AnnotationMemberDeclaration amd) {
+ return amd.getNameAsString().trim();
}
}
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnyTypeDeclaration.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnyTypeDeclaration.java
index 417ee15..50f9881 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnyTypeDeclaration.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnyTypeDeclaration.java
@@ -22,6 +22,7 @@ import java.util.Optional;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.body.AnnotationDeclaration;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
@@ -44,12 +45,15 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public final class AnyTypeDeclaration {
+ @RequiredArgsConstructor
public static enum Kind {
- ANNOTATION,
- CLASS,
- ENUM,
- INTERFACE
+ ANNOTATION("@interface"),
+ CLASS("class"),
+ ENUM("enum"),
+ INTERFACE("interface")
;
+ @Getter private final String javaKeyword;
+ public boolean isAnnotation() { return this == ANNOTATION; }
public boolean isClass() { return this == CLASS; }
public boolean isEnum() { return this == ENUM; }
public boolean isInterface() { return this == INTERFACE; }
@@ -61,6 +65,7 @@ public final class AnyTypeDeclaration {
private final ClassOrInterfaceDeclaration classOrInterfaceDeclaration;
private final EnumDeclaration enumDeclaration;
+ private final Can<AnnotationMemberDeclaration> annotationMemberDeclarations;
private final Can<EnumConstantDeclaration> enumConstantDeclarations;
private final Can<FieldDeclaration> publicFieldDeclarations;
private final Can<ConstructorDeclaration> publicConstructorDeclarations;
@@ -78,11 +83,15 @@ public final class AnyTypeDeclaration {
annotationDeclaration,
null,
null,
+ //members
+ AnnotationDeclarations.streamAnnotationMemberDeclarations(annotationDeclaration)
+ .collect(Can.toCan()),
Can.empty(),
+ AnnotationDeclarations.streamFieldDeclarations(annotationDeclaration)
+ .collect(Can.toCan()),
Can.empty(),
- Can.empty(),
- Can.empty()
- //TODO add annotation processing
+ AnnotationDeclarations.streamMethodDeclarations(annotationDeclaration)
+ .collect(Can.toCan())
);
}
@@ -94,6 +103,8 @@ public final class AnyTypeDeclaration {
null,
classOrInterfaceDeclaration,
null,
+ //members
+ Can.empty(),
Can.empty(),
ClassOrInterfaceDeclarations.streamPublicFieldDeclarations(classOrInterfaceDeclaration)
.collect(Can.toCan()),
@@ -112,6 +123,8 @@ public final class AnyTypeDeclaration {
null,
null,
enumDeclaration,
+ //members
+ Can.empty(),
EnumDeclarations.streamEnumConstantDeclarations(enumDeclaration)
.collect(Can.toCan()),
EnumDeclarations.streamPublicFieldDeclarations(enumDeclaration)
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ConstructorDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ConstructorDeclarations.java
index 703175e..46badaf 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ConstructorDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ConstructorDeclarations.java
@@ -34,13 +34,17 @@ public final class ConstructorDeclarations {
/**
* Returns given {@link ConstructorDeclaration} as normal text, without formatting.
*/
- public static String toNormalizedConstructorDeclaration(final @NonNull ConstructorDeclaration cd) {
+ public static String asNormalized(final @NonNull ConstructorDeclaration cd) {
val clone = cd.clone();
clone.getParameters()
.forEach(p->p.getAnnotations().clear());
return clone.getDeclarationAsString(false, false, true);
}
+ public static String asNormalizedName(final @NonNull ConstructorDeclaration cd) {
+ return cd.getNameAsString().trim();
+ }
+
public static Can<TypeParameter> getTypeParameters(final @NonNull ConstructorDeclaration cd) {
return Can.ofStream(cd.getTypeParameters().stream());
}
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java
index 06704d3..6174eaf 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/EnumConstantDeclarations.java
@@ -27,8 +27,8 @@ public final class EnumConstantDeclarations {
/**
* Returns given {@link EnumConstantDeclaration} as normal text, without formatting.
*/
- public static String toNormalizedEnumConstantDeclaration(final @NonNull EnumConstantDeclaration ecd) {
- return ecd.toString().trim();
+ public static String asNormalized(final @NonNull EnumConstantDeclaration ecd) {
+ return ecd.getNameAsString().trim();
}
}
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
index faf18ef..de8d298 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
@@ -33,8 +33,12 @@ public final class FieldDeclarations {
/**
* Returns given {@link FieldDeclaration} as normal text, without formatting.
*/
- public static String toNormalizedFieldDeclaration(final @NonNull FieldDeclaration fd) {
- return fd.toString().trim();
+ public static String asNormalized(final @NonNull FieldDeclaration fd) {
+ return fd.toString().trim(); //TODO might miss the fields type here
+ }
+
+ public static String asNormalizedName(final @NonNull FieldDeclaration fd) {
+ return fd.toString().trim(); //TODO might have the fields type to remove here
}
public static Can<TypeParameter> getTypeParameters(final @NonNull FieldDeclaration fd) {
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 9057f99..ef839a6 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
@@ -21,6 +21,7 @@ package org.apache.isis.tooling.javamodel.ast;
import java.util.Optional;
import java.util.stream.Stream;
+import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
@@ -51,6 +52,10 @@ public final class Javadocs {
// -- PREDICATES FOR STREAMS (PRESENT AND NOT HIDDEN)
+ public static boolean presentAndNotHidden(final @NonNull AnnotationMemberDeclaration amd) {
+ return presentAndNotHidden(amd.getJavadoc());
+ }
+
public static boolean presentAndNotHidden(final @NonNull FieldDeclaration fd) {
return presentAndNotHidden(fd.getJavadoc());
}
@@ -69,6 +74,10 @@ public final class Javadocs {
// -- 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());
}
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/MethodDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/MethodDeclarations.java
index 8cbab22..4616f79 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/MethodDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/MethodDeclarations.java
@@ -35,13 +35,17 @@ public final class MethodDeclarations {
/**
* Returns given {@link MethodDeclaration} as normal text, without formatting.
*/
- public static String toNormalizedMethodDeclaration(final @NonNull MethodDeclaration md) {
+ public static String asNormalized(final @NonNull MethodDeclaration md) {
val clone = md.clone();
clone.getParameters()
.forEach(p->p.getAnnotations().clear());
return clone.getDeclarationAsString(false, false, true);
}
+ public static String asNormalizedName(final @NonNull MethodDeclaration md) {
+ return md.getNameAsString().trim();
+ }
+
public static Can<TypeParameter> getTypeParameters(final @NonNull MethodDeclaration md) {
return Can.ofStream(md.getTypeParameters().stream());
}