From 2975b5d613a007a16b2d9235e30361a08de20f17 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 25 Jan 2023 10:35:00 +0100 Subject: [PATCH] Fixed doc generation --- pom.xml | 7 ++++++ .../generator/ClassesDiscoveryGenerator.java | 24 ++++++++++++------- .../model/DocumentationGenerator.java | 14 +++++++++-- .../utils/documentation/GenerateTest.java | 3 +++ 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index c924b3c..14b7c2a 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,13 @@ org.slf4j slf4j-api + + + org.nuiton.jrst + jrst + 2.4 + + junit diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java index ad3c4d7..8bdf5e3 100644 --- a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java +++ b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java @@ -1,7 +1,6 @@ package org.gcube.informationsystem.utils.documentation.generator; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.ServiceLoader; @@ -24,7 +23,7 @@ public class ClassesDiscoveryGenerator extends Generator { } - protected List getPackages(){ + public List getPackages(){ List packages = new ArrayList(); @@ -38,25 +37,32 @@ public class ClassesDiscoveryGenerator extends Generator { Class clz = accessType.getTypeClass(); packages.add(clz.getPackage()); } - + + return packages; + } + + public List getExtensionsPackages(){ + List packages = new ArrayList(); ServiceLoader regsitrationProviders = ServiceLoader .load(RegistrationProvider.class); for(RegistrationProvider registrationProvider : regsitrationProviders) { packages.addAll(registrationProvider.getPackagesToRegister()); } - return packages; } public void generate() throws Exception { - List pkgs = getPackages(); - generate(pkgs.toArray(new Package[pkgs.size()])); + List packages = getPackages(); + packages.addAll(getExtensionsPackages()); + generate(packages); } - protected void discover(AccessType at, Package[] packages) throws Exception { + protected void discover(AccessType at, List packages) throws Exception { ElementSpecilizationDiscovery discovery = new ElementSpecilizationDiscovery<>(at.getTypeClass(), false); if(Objects.nonNull(packages)) { - Arrays.stream(packages).forEach(p -> discovery.addPackage(p)); + for(Package p : packages) { + discovery.addPackage(p); + } } discovery.discover(); @@ -66,7 +72,7 @@ public class ClassesDiscoveryGenerator extends Generator { } } - protected void generate(Package[] packages) throws Exception { + public void generate(List packages) throws Exception { treeGenerator = new TreeGenerator(); AccessType[] types = new AccessType[] { AccessType.PROPERTY, diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java index 4985c2d..93c54a7 100644 --- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java +++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java @@ -30,6 +30,16 @@ public abstract class DocumentationGenerator { public static final String NO_ADDITIONAL_ATTRIBUTE = "This type does not define any additional attributes."; public static final String NO_SPECIFIC_KNOWN_USAGE = "No specific known usage for this type."; + protected static int defaultOffsetLevel = 0; + + public static int getDefaultOffsetLevel() { + return defaultOffsetLevel; + } + + public static void setDefaultOffsetLevel(int defaultOffsetLevel) { + DocumentationGenerator.defaultOffsetLevel = defaultOffsetLevel; + } + protected final Type type; protected final AccessType requiredType; protected String superClassToBeExcluded; @@ -46,7 +56,7 @@ public abstract class DocumentationGenerator { } this.requiredNumberOfColumns = DEFAULT_NUMBER_OF_COLUMNS; this.superClassToBeExcluded = null; - this.offsetLevel = 0; + this.offsetLevel = DocumentationGenerator.defaultOffsetLevel; } public void setLevel(int level) { @@ -338,7 +348,7 @@ public abstract class DocumentationGenerator { Section section = new Section(); int sectionLevel = level+offsetLevel; SectionType[] sectionTypes = SectionType.values(); - int maxSectionLevel = sectionTypes.length; + int maxSectionLevel = sectionTypes.length-1; sectionLevel = sectionLevel>=maxSectionLevel ? maxSectionLevel : sectionLevel; SectionType sectionType = SectionType.values()[sectionLevel]; section.setSectionType(sectionType); diff --git a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java index ebe3574..a476263 100644 --- a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java +++ b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java @@ -1,6 +1,7 @@ package org.gcube.informationsystem.utils.documentation; import org.gcube.informationsystem.utils.documentation.generator.ClassesDiscoveryGenerator; +import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator; import org.junit.Test; /** @@ -10,7 +11,9 @@ public class GenerateTest { @Test public void testDocGeneration() throws Exception { + DocumentationGenerator.setDefaultOffsetLevel(2); ClassesDiscoveryGenerator documentationGenerator = new ClassesDiscoveryGenerator(); documentationGenerator.generate(); } + }