From 53e02a007766b888ede0940a46e05a173b544b26 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 01:37:43 +0100 Subject: [PATCH 1/7] flavour extra config yml #333 --- .../flavour/extra/FlavourExtraConfig.java | 13 ++++++++ .../extra/FlavourExtraConfigFacade.java | 33 +++++++++++++++++++ .../facade/flavour/extra/ParamConfig.java | 13 ++++++++ .../flavour-extra-config/quarks-3-config.yml | 5 +++ .../facade/TestFlavourExtraConfigFacade.java | 32 ++++++++++++++++++ 5 files changed, 96 insertions(+) create mode 100644 fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfig.java create mode 100644 fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfigFacade.java create mode 100644 fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/ParamConfig.java create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml create mode 100644 fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfig.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfig.java new file mode 100644 index 000000000..834792558 --- /dev/null +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfig.java @@ -0,0 +1,13 @@ +package org.fugerit.java.doc.project.facade.flavour.extra; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +public class FlavourExtraConfig { + + @Getter @Setter + private Map paramConfig; + +} diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfigFacade.java new file mode 100644 index 000000000..b8b90877e --- /dev/null +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/FlavourExtraConfigFacade.java @@ -0,0 +1,33 @@ +package org.fugerit.java.doc.project.facade.flavour.extra; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.fugerit.java.core.function.SafeFunction; + +import java.io.InputStream; + +public class FlavourExtraConfigFacade { + + private static final ObjectMapper MAPPER = new ObjectMapper( new YAMLFactory() ); + + private FlavourExtraConfigFacade() {} + + public static FlavourExtraConfig readConfigWithDefault(InputStream is, FlavourExtraConfig defaultConfig) { + return SafeFunction.get( () -> { + if ( is != null ) { + return MAPPER.readValue( is, FlavourExtraConfig.class ); + } else { + return defaultConfig; + } + } ); + } + + public static FlavourExtraConfig readConfigBlankDefault(InputStream is) { + return readConfigWithDefault( is, new FlavourExtraConfig() ); + } + + public static FlavourExtraConfig readConfig(InputStream is) { + return readConfigWithDefault( is, null ); + } + +} diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/ParamConfig.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/ParamConfig.java new file mode 100644 index 000000000..9b437ff0a --- /dev/null +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/flavour/extra/ParamConfig.java @@ -0,0 +1,13 @@ +package org.fugerit.java.doc.project.facade.flavour.extra; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +public class ParamConfig { + + @Getter @Setter + private List acceptOnly; + +} diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java new file mode 100644 index 000000000..ca509abf6 --- /dev/null +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java @@ -0,0 +1,32 @@ +package test.org.fugerit.java.doc.project.facade; + +import lombok.extern.slf4j.Slf4j; +import org.fugerit.java.core.lang.helpers.ClassHelper; +import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfig; +import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfigFacade; +import org.fugerit.java.doc.project.facade.flavour.extra.ParamConfig; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +@Slf4j +public class TestFlavourExtraConfigFacade { + + @Test + public void testReadConfig() throws IOException { + // test quarkus-3 config + try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/quarks-3-config.yml" ) ) { + FlavourExtraConfig configQuarkus3 = FlavourExtraConfigFacade.readConfigBlankDefault( is ); + Assert.assertTrue( ((ParamConfig)configQuarkus3.getParamConfig().get( "addLombok" )).getAcceptOnly().contains( "true" ) ); + } + // test config does not exist + try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/do-not-exist.yml" ) ) { + FlavourExtraConfig configNotExists = FlavourExtraConfigFacade.readConfig( is ); + Assert.assertNull( configNotExists ); + } + } + +} From 76666f991c4bc1ec3dc6f3a7e1f33c789bdf8616 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 02:29:43 +0100 Subject: [PATCH 2/7] test flavour facade extra config #333 --- .../doc/project/facade/FlavourFacade.java | 46 +++++++++++++++++++ ...arks-3-config.yml => quarkus-3-config.yml} | 0 .../facade/TestFlavourExtraConfigFacade.java | 31 +++++++++++-- 3 files changed, 74 insertions(+), 3 deletions(-) rename fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/{quarks-3-config.yml => quarkus-3-config.yml} (100%) diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java index 105e3b967..1aa0b2db3 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java @@ -9,11 +9,17 @@ import org.fugerit.java.core.io.StreamIO; import org.fugerit.java.core.lang.helpers.ClassHelper; import org.fugerit.java.core.lang.helpers.StringUtils; +import org.fugerit.java.core.lang.helpers.reflect.MethodHelper; import org.fugerit.java.core.util.PropsIO; import org.fugerit.java.doc.project.facade.flavour.FlavourConfig; import org.fugerit.java.doc.project.facade.flavour.ProcessEntry; +import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfig; +import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfigFacade; +import org.fugerit.java.doc.project.facade.flavour.extra.ParamConfig; import java.io.*; +import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.*; @Slf4j @@ -78,6 +84,7 @@ public static void checkFlavour( FlavourContext context, String actualFlavour ) } log.info( "checkFlavour {} done", actualFlavour ); checkFlavourVersion( context, actualFlavour ); + checkFlavourExtraConfig( context, actualFlavour ); } public static void checkFlavourVersion( FlavourContext context, String actualFlavour ) { @@ -91,6 +98,45 @@ public static void checkFlavourVersion( FlavourContext context, String actualFla } } + public static void checkFlavourExtraConfig( FlavourContext context, String actualFlavour ) { + FlavourExtraConfig flavourExtraConfig = SafeFunction.get( () -> { + String flavourConfigPath = String.format( "config/flavour-extra-config/%s-config.yml", actualFlavour ); + log.debug( "flavourConfigPath : {}", flavourConfigPath ); + try (InputStream is = ClassHelper.loadFromDefaultClassLoader( flavourConfigPath ) ) { + return FlavourExtraConfigFacade.readConfigBlankDefault( is ); + } + }); + SafeFunction.applyIfNotNull( flavourExtraConfig.getParamConfig(), () -> { + Field[] fields = FlavourContext.class.getDeclaredFields(); + for (Field field : fields) { + String fieldName = field.getName(); + ParamConfig paramConfig = flavourExtraConfig.getParamConfig().get( fieldName ); + if ( paramConfig != null ) { + Object value = readField( context, field, fieldName ); + log.debug( "fieldName : {}, value : {}", fieldName, value ); + if ( value != null && !paramConfig.getAcceptOnly().contains( value.toString() ) ) { + log.info( "accept only list : {} -> {}", fieldName, paramConfig.getAcceptOnly() ); + String message = String.format( "Value '%s' not valid for flavour '%s' and param '%s', refer to flavour documentation.", value, actualFlavour, fieldName ); + log.warn( message ); + throw new ConfigRuntimeException( message ); + } + } + } + } ); + } + + public static Object readField( FlavourContext context, Field field, String fieldName ) { + return SafeFunction.getSilent( () -> { + if (field.getType().getSimpleName().equalsIgnoreCase("boolean")) { + String methodName = String.format("is%s", MethodHelper.getUpFirstForProperty(fieldName)); + return MethodHelper.invoke(context, methodName, MethodHelper.NO_PARAM_TYPES, MethodHelper.NO_PARAM_VALUES); + } else { + return MethodHelper.invokeGetter(context, fieldName); + } + } + ); + } + private static void initFlavour( FlavourContext context, String actualFlavour ) throws IOException, TemplateException { // copy all resources String listFilePath = String.format( "config/flavour/%s-copy.txt", actualFlavour ); diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-config.yml similarity index 100% rename from fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarks-3-config.yml rename to fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-config.yml diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java index ca509abf6..9dad68490 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java @@ -1,24 +1,28 @@ package test.org.fugerit.java.doc.project.facade; import lombok.extern.slf4j.Slf4j; +import org.fugerit.java.core.cfg.ConfigRuntimeException; import org.fugerit.java.core.lang.helpers.ClassHelper; +import org.fugerit.java.doc.project.facade.FlavourContext; +import org.fugerit.java.doc.project.facade.FlavourFacade; import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfig; import org.fugerit.java.doc.project.facade.flavour.extra.FlavourExtraConfigFacade; import org.fugerit.java.doc.project.facade.flavour.extra.ParamConfig; import org.junit.Assert; import org.junit.Test; +import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.util.List; +import java.lang.reflect.Field; @Slf4j public class TestFlavourExtraConfigFacade { @Test - public void testReadConfig() throws IOException { + public void readConfig() throws IOException { // test quarkus-3 config - try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/quarks-3-config.yml" ) ) { + try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/quarkus-3-config.yml" ) ) { FlavourExtraConfig configQuarkus3 = FlavourExtraConfigFacade.readConfigBlankDefault( is ); Assert.assertTrue( ((ParamConfig)configQuarkus3.getParamConfig().get( "addLombok" )).getAcceptOnly().contains( "true" ) ); } @@ -29,4 +33,25 @@ public void testReadConfig() throws IOException { } } + @Test + public void testCheckFlavourExtraConfig() throws IOException, NoSuchFieldException { + File projectFolder = new File( "target/test-flavour-extra-config" ); + String groupId = "test-group"; + String artifactId = "test-artifact"; + String projectVersion = "1.0.0"; + String javaRelease = "21"; + String flavour = FlavourFacade.FLAVOUR_QUARKUS_3; + FlavourContext context = new FlavourContext( projectFolder, groupId, artifactId, projectVersion, javaRelease, flavour ); + context.setAddLombok( Boolean.TRUE ); + FlavourFacade.checkFlavourExtraConfig( context, flavour ); + context.setAddLombok( Boolean.FALSE ); + Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.checkFlavourExtraConfig( context, flavour ) ); + String testFlavourVersion = "3.19.4"; + String propertyFlavourVersion = "flavourVersion"; + context.setFlavourVersion( testFlavourVersion ); + Field fieldFlavourVersion = FlavourContext.class.getDeclaredField( propertyFlavourVersion ); + Assert.assertEquals( testFlavourVersion, FlavourFacade.readField( context, fieldFlavourVersion, propertyFlavourVersion ) ); + } + } + From 102c7550546783950bd0b3b9953b5149ec83dff0 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 08:20:23 +0100 Subject: [PATCH 3/7] improved testing #333 --- .../fugerit/java/doc/project/facade/FlavourFacade.java | 4 ++++ .../doc/project/facade/TestFlavourExtraConfigFacade.java | 9 ++++++--- .../config/flavour-extra-config/flavourtest-1-config.yml | 8 ++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 fj-doc-maven-plugin/src/test/resources/config/flavour-extra-config/flavourtest-1-config.yml diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java index 1aa0b2db3..08b4d63ac 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java @@ -106,6 +106,10 @@ public static void checkFlavourExtraConfig( FlavourContext context, String actua return FlavourExtraConfigFacade.readConfigBlankDefault( is ); } }); + checkFlavourExtraConfig( context, actualFlavour , flavourExtraConfig ); + } + + public static void checkFlavourExtraConfig( FlavourContext context, String actualFlavour, FlavourExtraConfig flavourExtraConfig ) { SafeFunction.applyIfNotNull( flavourExtraConfig.getParamConfig(), () -> { Field[] fields = FlavourContext.class.getDeclaredFields(); for (Field field : fields) { diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java index 9dad68490..6e833ff48 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java @@ -19,10 +19,13 @@ @Slf4j public class TestFlavourExtraConfigFacade { + private static final String FLAVOURTEST_1 = "flavourtest-1"; + @Test public void readConfig() throws IOException { // test quarkus-3 config - try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/quarkus-3-config.yml" ) ) { + String flavourConfigPath = String.format( "config/flavour-extra-config/%s-config.yml", FLAVOURTEST_1 ); + try (InputStream is = ClassHelper.loadFromDefaultClassLoader( flavourConfigPath ) ) { FlavourExtraConfig configQuarkus3 = FlavourExtraConfigFacade.readConfigBlankDefault( is ); Assert.assertTrue( ((ParamConfig)configQuarkus3.getParamConfig().get( "addLombok" )).getAcceptOnly().contains( "true" ) ); } @@ -34,13 +37,13 @@ public void readConfig() throws IOException { } @Test - public void testCheckFlavourExtraConfig() throws IOException, NoSuchFieldException { + public void testCheckFlavourExtraConfig() throws NoSuchFieldException { File projectFolder = new File( "target/test-flavour-extra-config" ); String groupId = "test-group"; String artifactId = "test-artifact"; String projectVersion = "1.0.0"; String javaRelease = "21"; - String flavour = FlavourFacade.FLAVOUR_QUARKUS_3; + String flavour = FLAVOURTEST_1; FlavourContext context = new FlavourContext( projectFolder, groupId, artifactId, projectVersion, javaRelease, flavour ); context.setAddLombok( Boolean.TRUE ); FlavourFacade.checkFlavourExtraConfig( context, flavour ); diff --git a/fj-doc-maven-plugin/src/test/resources/config/flavour-extra-config/flavourtest-1-config.yml b/fj-doc-maven-plugin/src/test/resources/config/flavour-extra-config/flavourtest-1-config.yml new file mode 100644 index 000000000..7aac34777 --- /dev/null +++ b/fj-doc-maven-plugin/src/test/resources/config/flavour-extra-config/flavourtest-1-config.yml @@ -0,0 +1,8 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true + javaRelease: + acceptOnly: + - 21 \ No newline at end of file From 47956f7ecb081bfeb0974a62f8a55bd241e77c1c Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 09:20:22 +0100 Subject: [PATCH 4/7] testing param config for flavours #333 --- .../java/doc/project/facade/FlavourFacade.java | 18 +++++++++++------- .../facade/TestFlavourExtraConfigFacade.java | 17 ++++++++++++++++- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java index 08b4d63ac..61d0d96d8 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java @@ -109,6 +109,16 @@ public static void checkFlavourExtraConfig( FlavourContext context, String actua checkFlavourExtraConfig( context, actualFlavour , flavourExtraConfig ); } + public static void checkFlavourExtraConfigParam( String fieldName, ParamConfig paramConfig, String actualFlavour, Object value ) { + log.debug( "fieldName : {}, value : {}", fieldName, value ); + if ( value != null && paramConfig.getAcceptOnly() != null && !paramConfig.getAcceptOnly().contains( value.toString() ) ) { + log.debug( "accept only list : {} -> {}", fieldName, paramConfig.getAcceptOnly() ); + String message = String.format( "Value '%s' not valid for flavour '%s' and param '%s', refer to flavour documentation.", value, actualFlavour, fieldName ); + log.warn( message ); + throw new ConfigRuntimeException( message ); + } + } + public static void checkFlavourExtraConfig( FlavourContext context, String actualFlavour, FlavourExtraConfig flavourExtraConfig ) { SafeFunction.applyIfNotNull( flavourExtraConfig.getParamConfig(), () -> { Field[] fields = FlavourContext.class.getDeclaredFields(); @@ -117,13 +127,7 @@ public static void checkFlavourExtraConfig( FlavourContext context, String actua ParamConfig paramConfig = flavourExtraConfig.getParamConfig().get( fieldName ); if ( paramConfig != null ) { Object value = readField( context, field, fieldName ); - log.debug( "fieldName : {}, value : {}", fieldName, value ); - if ( value != null && !paramConfig.getAcceptOnly().contains( value.toString() ) ) { - log.info( "accept only list : {} -> {}", fieldName, paramConfig.getAcceptOnly() ); - String message = String.format( "Value '%s' not valid for flavour '%s' and param '%s', refer to flavour documentation.", value, actualFlavour, fieldName ); - log.warn( message ); - throw new ConfigRuntimeException( message ); - } + checkFlavourExtraConfigParam( fieldName, paramConfig, actualFlavour, value ); } } } ); diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java index 6e833ff48..344e9e9f7 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java @@ -2,6 +2,7 @@ import lombok.extern.slf4j.Slf4j; import org.fugerit.java.core.cfg.ConfigRuntimeException; +import org.fugerit.java.core.function.SafeFunction; import org.fugerit.java.core.lang.helpers.ClassHelper; import org.fugerit.java.doc.project.facade.FlavourContext; import org.fugerit.java.doc.project.facade.FlavourFacade; @@ -15,19 +16,22 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; +import java.util.Arrays; @Slf4j public class TestFlavourExtraConfigFacade { private static final String FLAVOURTEST_1 = "flavourtest-1"; + private static final String PARAM_ADD_LOMBOK = "addLombok"; + @Test public void readConfig() throws IOException { // test quarkus-3 config String flavourConfigPath = String.format( "config/flavour-extra-config/%s-config.yml", FLAVOURTEST_1 ); try (InputStream is = ClassHelper.loadFromDefaultClassLoader( flavourConfigPath ) ) { FlavourExtraConfig configQuarkus3 = FlavourExtraConfigFacade.readConfigBlankDefault( is ); - Assert.assertTrue( ((ParamConfig)configQuarkus3.getParamConfig().get( "addLombok" )).getAcceptOnly().contains( "true" ) ); + Assert.assertTrue( ((ParamConfig)configQuarkus3.getParamConfig().get( PARAM_ADD_LOMBOK )).getAcceptOnly().contains( "true" ) ); } // test config does not exist try (InputStream is = ClassHelper.loadFromDefaultClassLoader( "config/flavour-extra-config/do-not-exist.yml" ) ) { @@ -54,6 +58,17 @@ public void testCheckFlavourExtraConfig() throws NoSuchFieldException { context.setFlavourVersion( testFlavourVersion ); Field fieldFlavourVersion = FlavourContext.class.getDeclaredField( propertyFlavourVersion ); Assert.assertEquals( testFlavourVersion, FlavourFacade.readField( context, fieldFlavourVersion, propertyFlavourVersion ) ); + // check params + Object value = null; + FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, null, FLAVOURTEST_1, null ); + FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, new ParamConfig(), FLAVOURTEST_1, null ); + FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, new ParamConfig(), FLAVOURTEST_1, Boolean.TRUE.toString() ); + final ParamConfig paramConfig = SafeFunction.get( () -> { + ParamConfig pc = new ParamConfig(); + pc.setAcceptOnly( Arrays.asList( Boolean.TRUE.toString() ) ); + return pc; + } ); + Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, paramConfig, FLAVOURTEST_1, Boolean.FALSE.toString() ) ); } } From 6e6af33a5ded8773d22fd57c6ef7caeb228da6b5 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 11:05:20 +0100 Subject: [PATCH 5/7] remove sonar cloud issues #333 --- .../java/doc/project/facade/TestFlavourExtraConfigFacade.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java index 344e9e9f7..1eafb55c7 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestFlavourExtraConfigFacade.java @@ -3,6 +3,7 @@ import lombok.extern.slf4j.Slf4j; import org.fugerit.java.core.cfg.ConfigRuntimeException; import org.fugerit.java.core.function.SafeFunction; +import org.fugerit.java.core.lang.helpers.BooleanUtils; import org.fugerit.java.core.lang.helpers.ClassHelper; import org.fugerit.java.doc.project.facade.FlavourContext; import org.fugerit.java.doc.project.facade.FlavourFacade; @@ -59,7 +60,6 @@ public void testCheckFlavourExtraConfig() throws NoSuchFieldException { Field fieldFlavourVersion = FlavourContext.class.getDeclaredField( propertyFlavourVersion ); Assert.assertEquals( testFlavourVersion, FlavourFacade.readField( context, fieldFlavourVersion, propertyFlavourVersion ) ); // check params - Object value = null; FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, null, FLAVOURTEST_1, null ); FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, new ParamConfig(), FLAVOURTEST_1, null ); FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, new ParamConfig(), FLAVOURTEST_1, Boolean.TRUE.toString() ); @@ -68,7 +68,7 @@ public void testCheckFlavourExtraConfig() throws NoSuchFieldException { pc.setAcceptOnly( Arrays.asList( Boolean.TRUE.toString() ) ); return pc; } ); - Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, paramConfig, FLAVOURTEST_1, Boolean.FALSE.toString() ) ); + Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.checkFlavourExtraConfigParam( PARAM_ADD_LOMBOK, paramConfig, FLAVOURTEST_1, BooleanUtils.BOOLEAN_FALSE ) ); } } From adc8808c98bc936ca8c7dccfd7761b52fdca2145 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 13:40:58 +0100 Subject: [PATCH 6/7] add extra config for all flavours #333 --- .../org/fugerit/java/doc/project/facade/FlavourFacade.java | 2 +- .../config/flavour-extra-config/micronaut-4-config.yml | 5 +++++ .../config/flavour-extra-config/openliberty-config.yml | 5 +++++ .../config/flavour-extra-config/quarkus-2-config.yml | 5 +++++ .../config/flavour-extra-config/quarkus-3-gradle-config.yml | 5 +++++ .../flavour-extra-config/quarkus-3-gradle-kts-config.yml | 5 +++++ .../flavour-extra-config/quarkus-3-properties-config.yml | 5 +++++ .../config/flavour-extra-config/springboot-3-config.yml | 5 +++++ .../test/org/fugerit/java/doc/project/facade/TestInit.java | 5 ++++- 9 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/micronaut-4-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/openliberty-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-2-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-kts-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-properties-config.yml create mode 100644 fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/springboot-3-config.yml diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java index 61d0d96d8..00ee69b5c 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourFacade.java @@ -101,7 +101,7 @@ public static void checkFlavourVersion( FlavourContext context, String actualFla public static void checkFlavourExtraConfig( FlavourContext context, String actualFlavour ) { FlavourExtraConfig flavourExtraConfig = SafeFunction.get( () -> { String flavourConfigPath = String.format( "config/flavour-extra-config/%s-config.yml", actualFlavour ); - log.debug( "flavourConfigPath : {}", flavourConfigPath ); + log.info( "flavourConfigPath : {}", flavourConfigPath ); try (InputStream is = ClassHelper.loadFromDefaultClassLoader( flavourConfigPath ) ) { return FlavourExtraConfigFacade.readConfigBlankDefault( is ); } diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/micronaut-4-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/micronaut-4-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/micronaut-4-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/openliberty-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/openliberty-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/openliberty-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-2-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-2-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-2-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-kts-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-kts-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-gradle-kts-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-properties-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-properties-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/quarkus-3-properties-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/springboot-3-config.yml b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/springboot-3-config.yml new file mode 100644 index 000000000..e6d5ffa8d --- /dev/null +++ b/fj-doc-maven-plugin/src/main/resources/config/flavour-extra-config/springboot-3-config.yml @@ -0,0 +1,5 @@ +--- +paramConfig: + addLombok: + acceptOnly: + - true diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestInit.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestInit.java index 52c7b1427..f650a5dc6 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestInit.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestInit.java @@ -94,11 +94,14 @@ public void testFlavourContext() { Assert.assertThrows( NullPointerException.class, () -> new FlavourContext( testFile, "group-id3", "artifact-id3", "1.0.0-SNAPSHOT", null, null ) ); Assert.assertThrows( NullPointerException.class, () -> new FlavourContext( testFile, "group-id4", "artifact-id4", "2.0.0-SNAPSHOT", "21", null ) ); FlavourContext context = new FlavourContext( testFile, "group-id5", "artifact-id5", "3.0.0-SNAPSHOT", "8", "unsupported" ); + context.setAddLombok( Boolean.TRUE ); Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.initProject( context ) ); Assert.assertThrows( ConfigRuntimeException.class, () -> ModuleFacade.toModuleList( "base,freemarker,unsupported" ) ); Assert.assertThrows( ConfigRuntimeException.class, () -> FlavourFacade.checkFlavour( context, FlavourFacade.FLAVOUR_QUARKUS_3 ) ); FlavourFacade.checkFlavour( context, FlavourFacade.FLAVOUR_QUARKUS_2 ); - FlavourFacade.checkFlavour( new FlavourContext( testFile, "group-id5", "artifact-id5", "3.0.0-SNAPSHOT", "11", "unsupported" ), FlavourFacade.FLAVOUR_QUARKUS_2 ); + FlavourContext contextQuarkus2 = new FlavourContext( testFile, "group-id5", "artifact-id5", "3.0.0-SNAPSHOT", "11", "unsupported" ); + contextQuarkus2.setAddLombok( Boolean.TRUE ); + FlavourFacade.checkFlavour( contextQuarkus2, FlavourFacade.FLAVOUR_QUARKUS_2 ); context.setFlavourVersion( "test" ); FlavourFacade.checkFlavourVersion( context, FlavourFacade.FLAVOUR_QUARKUS_2 ); Assert.assertEquals( "test", context.getFlavourVersion() ); From c0a4512dca256d25a022248c9276f9e0bb9b731a Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Fri, 21 Mar 2025 13:58:01 +0100 Subject: [PATCH 7/7] flavour extra config documentation #333 --- CHANGELOG.md | 1 + .../chapters/02_2_maven_plugin_init.adoc | 156 ++++++++++++++++++ 2 files changed, 157 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdf8d893b..639f102a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- [fj-doc-maven-plugin] flavour extra configurations - release notes integration - quarkus-version set to 3.19.4 across all the modules diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/02_2_maven_plugin_init.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/02_2_maven_plugin_init.adoc index 13e83b3a2..45d5f1d17 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/chapters/02_2_maven_plugin_init.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/02_2_maven_plugin_init.adoc @@ -29,9 +29,12 @@ Project folder will be `./${artifactId}/`. NOTE: it is possible to set any property from 'add' goal, except 'projectFolder' which is set to `./${artifactId}`. [#flavour-list] +===== Flavours list + [cols="25,20,55", options="header"] |==================================================================================================================================== | flavour | model | description +| vanilla | maven | Vanilla java, with maven packaging | quarkus-3 | maven | Based on link:https://quarkus.io/[Quarkus 3], with maven packaging (yaml) | quarkus-3-gradle | gradle | Based on link:https://quarkus.io/[Quarkus 3], with gradle packaging (yaml) | quarkus-3-gradle-kts | gradle-kts | Based on link:https://quarkus.io/[Quarkus 3], with gradle kotlin packaging (yaml) @@ -41,3 +44,156 @@ NOTE: it is possible to set any property from 'add' goal, except 'projectFolder' | springboot-3 | maven | Based on link:https://spring.io/projects/spring-boot[Sping Boot 3], with maven packaging | openliberty | maven | Based on link:https://openliberty.io/[Open Liberty], with maven packaging |==================================================================================================================================== + +[#flavour-extra-config] +===== Specific flavour configuration + +[#flavour-vanilla] +====== Vanilla + +Vanilla flavour accepts all configuration options. + +[#flavour-quarkus-3] +====== Quarkus 3 + +Quarkus 3 flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-quarkus-2] +====== Quarkus 2 + +Quarkus 2 flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _11+_ | this flavour does not support java lower than 11 +|==================================================================================================================================== + +[#flavour-quarkus-3-gradle] +====== Quarkus 3 Gradle + +Quarkus 3 Gradle flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Gradle* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-quarkus-3-gradle-kts] +====== Quarkus 3 Gradle KTS + +Quarkus 3 Gradle KTS flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Gradle with Kotlin DSL* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-quarkus-3-properties] +====== Quarkus 3 Properties + +Quarkus 3 properties flavour has the following specific configurations + +_Configuration_ : *properties* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-micronaut-4] +====== Micronaut 4 + +Micronaut 4 flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-micronaut-4] +====== Micronaut 4 + +Micronaut 4 flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-openliberty-properties] +====== Open Liberty + +Open Liberty flavour has the following specific configurations + +_Configuration_ : *properties* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== + +[#flavour-springboot-3] +====== Spring Boot 3 + +Spring Boot 3 flavour has the following specific configurations + +_Configuration_ : *YAML* + +_Java Packaging_ : *Maven* + +[cols="3*", options="header"] +|==================================================================================================================================== +| parameter | accepted value | note +| addLombok | _true_ | currently only generation with lombok is supported +| javaRelease | _17+_ | this flavour does not support java lower than 17 +|==================================================================================================================================== +