diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/GlobalSettings.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/GlobalSettings.java index 12e9052c79f..6780ac695bd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/GlobalSettings.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/GlobalSettings.java @@ -38,12 +38,13 @@ public class GlobalSettings { private static final Logger LOGGER = LoggerFactory.getLogger(GlobalSettings.class); - private static ThreadLocal properties = new InheritableThreadLocal() { + private static ThreadLocal properties = new InheritableThreadLocal<>() { @Override protected Properties initialValue() { // avoid using System.getProperties().clone() which is broken in Gradle - see https://github.com/gradle/gradle/issues/17344 Properties copy = new Properties(); - copy.putAll(System.getProperties()); + System.getProperties() + .forEach((k,v) -> copy.put(String.valueOf(k), String.valueOf(v))); return copy; } }; @@ -69,8 +70,10 @@ public class GlobalSettings { } public static void log() { - StringWriter stringWriter = new StringWriter(); - properties.get().list(new PrintWriter(stringWriter)); - LOGGER.debug("GlobalSettings: {}", stringWriter); + if(LOGGER.isDebugEnabled()) { + StringWriter stringWriter = new StringWriter(); + properties.get().list(new PrintWriter(stringWriter)); + LOGGER.debug("GlobalSettings: {}", stringWriter); + } } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/GlobalSettingsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/GlobalSettingsTest.java new file mode 100644 index 00000000000..fadea5ff40f --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/GlobalSettingsTest.java @@ -0,0 +1,36 @@ +package org.openapitools.codegen.config; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import java.util.Properties; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatNoException; +import org.slf4j.LoggerFactory; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** + * Test class for {@link GlobalSettings} + * @author Edoardo Patti + */ +public class GlobalSettingsTest { + + private static final Object OBJECT = new Object(); + + @BeforeClass + public void setUp() { + ((Logger) LoggerFactory.getLogger(GlobalSettings.class)).setLevel(Level.DEBUG); + Properties props = new Properties(2); + props.put("test1", OBJECT); + props.put(OBJECT, "test2"); + System.getProperties().putAll(props); + } + + @Test + public void testNonStringSystemProperties() { + assertThat(GlobalSettings.getProperty(OBJECT.toString())).isNotNull(); + assertThat(GlobalSettings.getProperty("test1")).isNotNull(); + assertThatNoException().isThrownBy(GlobalSettings::log); + } + +} \ No newline at end of file