You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/11/22 07:20:06 UTC

(causeway) branch master updated: CAUSEWAY-3275: removes @Bean CausewayModuleCoreConfig.ConfigProps.class

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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new 375afcb55d CAUSEWAY-3275: removes @Bean CausewayModuleCoreConfig.ConfigProps.class
375afcb55d is described below

commit 375afcb55d67754aa5b14ff80bab62104a064b0a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 22 08:20:00 2023 +0100

    CAUSEWAY-3275: removes @Bean CausewayModuleCoreConfig.ConfigProps.class
    
    - fixes regression: missing primary props
---
 .../core/config/CausewayModuleCoreConfig.java      | 22 -----------
 .../confmenu/ConfigurationViewServiceDefault.java  | 45 +++++++++++++---------
 2 files changed, 26 insertions(+), 41 deletions(-)

diff --git a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
index 84961f4001..1c029f18f3 100644
--- a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
+++ b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
@@ -18,11 +18,7 @@
  */
 package org.apache.causeway.core.config;
 
-import java.util.Collections;
-import java.util.Map;
-
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
@@ -37,8 +33,6 @@ import org.apache.causeway.core.config.environment.CausewayTimeZoneInitializer;
 import org.apache.causeway.core.config.validators.PatternOptionalStringConstraintValidator;
 import org.apache.causeway.core.config.viewer.web.WebAppContextPath;
 
-import lombok.Data;
-
 @Configuration
 @Import({
 
@@ -55,9 +49,6 @@ import lombok.Data;
     CausewayBeanTypeRegistryDefault.class,
     CausewaySystemEnvironment.class,
     WebAppContextPath.class,
-
-    // @Bean
-    CausewayModuleCoreConfig.ConfigProps.class,
 })
 @EnableConfigurationProperties({
         CausewayConfiguration.class,
@@ -73,17 +64,4 @@ public class CausewayModuleCoreConfig {
 
     public static final String NAMESPACE = "causeway.config";
 
-    @Bean
-    public ConfigProps configProps() {
-        return new ConfigProps();
-    }
-
-    @Data
-    public static class ConfigProps {
-        private Map<String, String> causeway = Collections.emptyMap();
-        private Map<String, String> resteasy = Collections.emptyMap();
-        private Map<String, String> datanucleus = Collections.emptyMap();
-        private Map<String, String> eclipselink = Collections.emptyMap();
-    }
-
 }
diff --git a/core/webapp/src/main/java/org/apache/causeway/core/webapp/confmenu/ConfigurationViewServiceDefault.java b/core/webapp/src/main/java/org/apache/causeway/core/webapp/confmenu/ConfigurationViewServiceDefault.java
index cbf66e1e98..14e958be31 100644
--- a/core/webapp/src/main/java/org/apache/causeway/core/webapp/confmenu/ConfigurationViewServiceDefault.java
+++ b/core/webapp/src/main/java/org/apache/causeway/core/webapp/confmenu/ConfigurationViewServiceDefault.java
@@ -53,7 +53,6 @@ import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Maps;
 import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.CausewayConfiguration.Core.Config.ConfigurationPropertyVisibilityPolicy;
-import org.apache.causeway.core.config.CausewayModuleCoreConfig;
 import org.apache.causeway.core.config.datasources.DataSourceIntrospectionService;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
 import org.apache.causeway.core.config.util.ValueMaskingUtil;
@@ -82,7 +81,6 @@ implements
     private final CausewayConfiguration configuration;
     private final DataSourceIntrospectionService datasourceInfoService;
     private final List<WebModule> webModules;
-    private final CausewayModuleCoreConfig.ConfigProps configProps;
 
     private LocalDateTime startupTime = LocalDateTime.MIN; // so it is not uninitialized
 
@@ -139,7 +137,11 @@ implements
                 new ArrayList<Map<String, ConfigurationProperty>>();
 
         val env = loadEnvironment();
-        val primary = loadPrimary();
+        val primary = loadPrimary(List.of(
+                "causeway.",
+                "resteasy.",
+                "datanucleus.",
+                "eclipselink."));
         // we dont't want any duplicates to appear in secondary
         val secondary = loadSecondary(Stream.concat(env.keySet().stream(), primary.keySet().stream())
                 .distinct()
@@ -190,14 +192,16 @@ implements
         return map;
     }
 
-    private Map<String, ConfigurationProperty> loadPrimary() {
+    private Map<String, ConfigurationProperty> loadPrimary(final List<String> primaryPrefixes) {
         final Map<String, ConfigurationProperty> map = _Maps.newTreeMap();
         if(isShowConfigurationProperties()) {
-
-            configProps.getCauseway().forEach((k, v)->add("causeway." + k, v, map));
-            configProps.getResteasy().forEach((k, v)->add("resteasy." + k, v, map));
-            configProps.getDatanucleus().forEach((k, v)->add("datanucleus." + k, v, map));
-            configProps.getEclipselink().forEach((k, v)->add("eclipselink." + k, v, map));
+            final ConfigurableEnvironment springEnv = configuration.getEnvironment();
+            streamConfigurationPropertyNames(springEnv)
+            .filter(propName->primaryPrefixes.stream().anyMatch(propName::startsWith))
+            .forEach(propName -> {
+                String propertyValue = springEnv.getProperty(propName);
+                add(propName, propertyValue, map);
+            });
 
             val dsInfos = datasourceInfoService.getDataSourceInfos();
 
@@ -218,16 +222,8 @@ implements
     private Map<String, ConfigurationProperty> loadSecondary(final Set<String> toBeExcluded) {
         final Map<String, ConfigurationProperty> map = _Maps.newTreeMap();
         if(isShowConfigurationProperties()) {
-
-            ConfigurableEnvironment springEnv = configuration.getEnvironment();
-            MutablePropertySources propertySources = springEnv.getPropertySources();
-            StreamSupport
-            .stream(propertySources.spliterator(), false)
-            .filter(EnumerablePropertySource.class::isInstance)
-            .map(EnumerablePropertySource.class::cast)
-            .filter(ps->!"systemEnvironment".equalsIgnoreCase(ps.getName())) // exclude system env
-            .map(EnumerablePropertySource::getPropertyNames)
-            .flatMap(_NullSafe::stream)
+            final ConfigurableEnvironment springEnv = configuration.getEnvironment();
+            streamConfigurationPropertyNames(springEnv)
             .filter(propName->!toBeExcluded.contains(propName))
             .forEach(propName -> {
                 String propertyValue = springEnv.getProperty(propName);
@@ -271,4 +267,15 @@ implements
                 .orElseGet(()->new CausewayConfiguration.Core.Config().getConfigurationPropertyVisibilityPolicy());
     }
 
+    private static Stream<String> streamConfigurationPropertyNames(final ConfigurableEnvironment springEnv) {
+        MutablePropertySources propertySources = springEnv.getPropertySources();
+            return StreamSupport
+            .stream(propertySources.spliterator(), false)
+            .filter(EnumerablePropertySource.class::isInstance)
+            .map(EnumerablePropertySource.class::cast)
+            .filter(ps->!"systemEnvironment".equalsIgnoreCase(ps.getName())) // exclude system env
+            .map(EnumerablePropertySource::getPropertyNames)
+            .flatMap(_NullSafe::stream);
+    }
+
 }