Fixed doc generation

This commit is contained in:
Luca Frosini 2023-01-25 10:35:00 +01:00
parent f06dbb302c
commit 2975b5d613
4 changed files with 37 additions and 11 deletions

View File

@ -56,6 +56,13 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.nuiton.jrst/jrst -->
<dependency>
<groupId>org.nuiton.jrst</groupId>
<artifactId>jrst</artifactId>
<version>2.4</version>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>junit</groupId>

View File

@ -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<Package> getPackages(){
public List<Package> getPackages(){
List<Package> packages = new ArrayList<Package>();
@ -38,25 +37,32 @@ public class ClassesDiscoveryGenerator extends Generator {
Class<Element> clz = accessType.getTypeClass();
packages.add(clz.getPackage());
}
return packages;
}
public List<Package> getExtensionsPackages(){
List<Package> packages = new ArrayList<Package>();
ServiceLoader<? extends RegistrationProvider> regsitrationProviders = ServiceLoader
.load(RegistrationProvider.class);
for(RegistrationProvider registrationProvider : regsitrationProviders) {
packages.addAll(registrationProvider.getPackagesToRegister());
}
return packages;
}
public void generate() throws Exception {
List<Package> pkgs = getPackages();
generate(pkgs.toArray(new Package[pkgs.size()]));
List<Package> packages = getPackages();
packages.addAll(getExtensionsPackages());
generate(packages);
}
protected <E extends Element> void discover(AccessType at, Package[] packages) throws Exception {
protected <E extends Element> void discover(AccessType at, List<Package> packages) throws Exception {
ElementSpecilizationDiscovery<E> 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<Package> packages) throws Exception {
treeGenerator = new TreeGenerator();
AccessType[] types = new AccessType[] {
AccessType.PROPERTY,

View File

@ -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);

View File

@ -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();
}
}