You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/02/04 09:54:36 UTC

[isis] branch ISIS-2504 updated: ISIS-2504: removes classic datasource configurations

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-2504
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/ISIS-2504 by this push:
     new 33b4194  ISIS-2504: removes classic datasource configurations
33b4194 is described below

commit 33b41949e2ca1c6b1b30961ae84216258a204996
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Feb 4 10:54:17 2021 +0100

    ISIS-2504: removes classic datasource configurations
---
 ... => DatanucleusAutocreateNoValidate.properties} |  15 ++--
 .../isis/core/config/presets/H2InMemory.properties |  21 -----
 .../presets/H2InMemory_withUniqueSchema.properties |  21 -----
 .../core/config/presets/HsqlDbInMemory.properties  |  21 -----
 .../isis/core/config/presets/IsisPresets.java      |   9 +-
 .../src/main/java/demoapp/dom/DemoModule.java      |   3 +-
 .../demo/domain/src/main/resources/application.yml |  37 ++++----
 .../jdo/datanucleus/IsisModuleJdoDatanucleus.java  |  20 ++---
 .../{DnSettings.java => DnConfigurationBean.java}  | 100 +++++++++++----------
 .../jdo/datanucleus/config/DnSettings.java         |   2 +-
 .../jdo/datanucleus/schema/JdoSchemaService.java   |   4 +-
 .../jdo/datanucleus/schema/_DnApplication.java     |   6 +-
 .../shiro/ShiroSecmanLdap_restfulStressTest.java   |   7 +-
 .../testdomain/conf/Configuration_usingJdo.java    |   3 +-
 .../conf/Configuration_usingJdoAndShiro.java       |   4 +-
 .../testdomain/conf/Configuration_usingJpa.java    |   3 +-
 .../conf/Configuration_usingSpringDataJpa.java     |   2 +-
 .../testdomain/jdo/isis-persistence.properties     |  26 ------
 .../integtests/ExcelModuleIntegTestAbstract.java   |   3 +-
 .../FakeDataModuleIntegTestAbstract.java           |   3 +-
 20 files changed, 103 insertions(+), 207 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/core/config/presets/DataNucleusAutoCreate.properties b/core/config/src/main/java/org/apache/isis/core/config/presets/DatanucleusAutocreateNoValidate.properties
similarity index 65%
rename from core/config/src/main/java/org/apache/isis/core/config/presets/DataNucleusAutoCreate.properties
rename to core/config/src/main/java/org/apache/isis/core/config/presets/DatanucleusAutocreateNoValidate.properties
index 2e78a1a..1a275af 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/presets/DataNucleusAutoCreate.properties
+++ b/core/config/src/main/java/org/apache/isis/core/config/presets/DatanucleusAutocreateNoValidate.properties
@@ -16,11 +16,14 @@
 #  under the License.
 
 # don't do validations that consume setup time
-isis.persistence.jdo-datanucleus.impl.datanucleus.schema.autoCreateAll = true
-isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateAll = false
+datanucleus.schema.autoCreateAll = true
+datanucleus.schema.validateAll = false
+#datanucleus.schema.validateTables=true
+#datanucleus.schema.validateConstraints=true
 
 # other properties as per WEB-INF/persistor_datanucleus.properties
-isis.persistence.jdo-datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit = false
-isis.persistence.jdo-datanucleus.impl.datanucleus.identifier.case = MixedCase
-isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.type = none
-isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.mode = ENABLE_SELECTIVE
+datanucleus.persistenceByReachabilityAtCommit = false
+datanucleus.identifier.case = MixedCase
+datanucleus.cache.level2.type = none
+datanucleus.cache.level2.mode = ENABLE_SELECTIVE
+
diff --git a/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory.properties b/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory.properties
deleted file mode 100644
index 6a6502f..0000000
--- a/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:test
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
\ No newline at end of file
diff --git a/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory_withUniqueSchema.properties b/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory_withUniqueSchema.properties
deleted file mode 100644
index 28643a2..0000000
--- a/core/config/src/main/java/org/apache/isis/core/config/presets/H2InMemory_withUniqueSchema.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:T${random.long[1,9999999]}
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
\ No newline at end of file
diff --git a/core/config/src/main/java/org/apache/isis/core/config/presets/HsqlDbInMemory.properties b/core/config/src/main/java/org/apache/isis/core/config/presets/HsqlDbInMemory.properties
deleted file mode 100644
index 919a624..0000000
--- a/core/config/src/main/java/org/apache/isis/core/config/presets/HsqlDbInMemory.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:hsqldb:mem:test
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.hsqldb.jdbcDriver
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
diff --git a/core/config/src/main/java/org/apache/isis/core/config/presets/IsisPresets.java b/core/config/src/main/java/org/apache/isis/core/config/presets/IsisPresets.java
index 0f0b9ac..1e54d23 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/presets/IsisPresets.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/presets/IsisPresets.java
@@ -36,13 +36,7 @@ public final class IsisPresets  {
     public static final String IntrospectLazily = "classpath:/org/apache/isis/core/config/presets/IntrospectLazily.properties";
     public static final String IntrospectFully = "classpath:/org/apache/isis/core/config/presets/IntrospectFully.properties";
 
-    public static final String H2InMemory = "classpath:/org/apache/isis/core/config/presets/H2InMemory.properties";
-
-    /** randomized (unique) database name, eg. to allow for concurrent testing */
-    public static final String H2InMemory_withUniqueSchema = "classpath:/org/apache/isis/core/config/presets/H2InMemory_withUniqueSchema.properties";
-    
-    public static final String HsqlDbInMemory = "classpath:/org/apache/isis/core/config/presets/HsqlDbInMemory.properties";
-    public static final String DataNucleusAutoCreate = "classpath:/org/apache/isis/core/config/presets/DataNucleusAutoCreate.properties";
+    public static final String DatanucleusAutocreateNoValidate = "classpath:/org/apache/isis/core/config/presets/DatanucleusAutocreateNoValidate.properties";
     
     public static final String DebugPersistence = "classpath:/org/apache/isis/core/config/presets/DebugPersistence.properties";
     public static final String DebugRequestScopedServices = "classpath:/org/apache/isis/core/config/presets/DebugRequestScopedServices.properties";
@@ -61,7 +55,6 @@ public final class IsisPresets  {
     
     public static final String SilenceWicket = "classpath:/org/apache/isis/core/config/presets/SilenceWicket.properties";
     public static final String UseLog4j2Test = "classpath:/org/apache/isis/core/config/presets/UseLog4j2Test.properties";
-    
 
 
     /**
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/DemoModule.java b/examples/demo/domain/src/main/java/demoapp/dom/DemoModule.java
index b439b69..55cf5b5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/DemoModule.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/DemoModule.java
@@ -49,10 +49,9 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
 
 })
 @PropertySources({
-    @PropertySource(IsisPresets.H2InMemory),
     @PropertySource(IsisPresets.NoTranslations),
     @PropertySource(IsisPresets.SilenceWicket),
-    @PropertySource(IsisPresets.DataNucleusAutoCreate),
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
 })
 @ComponentScan(
         basePackageClasses= {
diff --git a/examples/demo/domain/src/main/resources/application.yml b/examples/demo/domain/src/main/resources/application.yml
index 3d4c3ac..cc85196 100644
--- a/examples/demo/domain/src/main/resources/application.yml
+++ b/examples/demo/domain/src/main/resources/application.yml
@@ -19,7 +19,6 @@
 #
 isis:
 
-
   applib:
     annotation:
       action:
@@ -101,24 +100,24 @@ isis:
       dialog-mode: sidebar
       dialog-mode-for-menu: modal
 
-  persistence:
-    jdo-datanucleus:
-      impl:
-        # note that properties under 'isis.persistor.datanucleus.impl' are passed through directly
-        # to DataNucleus, and must use camelCase rather than kebab-case
-        datanucleus:
-          schema:
-            validateTables: true
-            validateConstraints: true
-
-          persistenceByReachabilityAtCommit: false
-          identifier:
-            case: MixedCase
-
-          cache:
-            level2:
-              type: none
-              mode: ENABLE_SELECTIVE
+# schema auto creation etc. ...
+#  persistence:
+
+    
+# note that properties under 'datanucleus' must use camelCase rather than kebab-case
+datanucleus:
+  schema:
+    validateTables: true
+    validateConstraints: true
+
+  persistenceByReachabilityAtCommit: false
+  identifier:
+    case: MixedCase
+
+  cache:
+    level2:
+      type: none
+      mode: ENABLE_SELECTIVE
 
 resteasy:
   jaxrs:
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
index cab7ccd..4398a30 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
@@ -18,14 +18,11 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import javax.inject.Named;
 import javax.inject.Provider;
 import javax.jdo.PersistenceManagerFactory;
 
-import org.springframework.boot.context.properties.ConfigurationProperties;
+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;
@@ -35,8 +32,8 @@ import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.transaction.changetracking.EntityChangeTracker;
 import org.apache.isis.persistence.jdo.datanucleus.changetracking.JdoLifecycleListener;
+import org.apache.isis.persistence.jdo.datanucleus.config.DnConfigurationBean;
 import org.apache.isis.persistence.jdo.datanucleus.config.DnEntityDiscoveryListener;
-import org.apache.isis.persistence.jdo.datanucleus.config.DnSettings;
 import org.apache.isis.persistence.jdo.datanucleus.entities.DnEntityStateProvider;
 import org.apache.isis.persistence.jdo.datanucleus.jdosupport.JdoSupportServiceDefault;
 import org.apache.isis.persistence.jdo.datanucleus.metamodel.JdoDataNucleusProgrammingModel;
@@ -53,7 +50,7 @@ import org.apache.isis.persistence.jdo.spring.integration.TransactionAwarePersis
 import lombok.val;
 
 /**
- * @since 1.x {@index}
+ * @since 2.0 {@index}
  */
 @Configuration
 @Import({
@@ -72,19 +69,12 @@ import lombok.val;
     Persistable_downloadJdoMetadata.class,
 
     // @Service's
-    DnSettings.class,
     JdoSupportServiceDefault.class,
     JdoSchemaService.class,
 })
+@EnableConfigurationProperties(DnConfigurationBean.class)
 public class IsisModuleJdoDatanucleus {
 
-    // reserved for datanucleus' own config props
-    @ConfigurationProperties(prefix = "isis.persistence.jdo-datanucleus.impl")
-    @Bean("dn-settings")
-    public Map<String, String> getAsMap() {
-        return new HashMap<>();
-    }
-
     /**
      * {@link TransactionAwarePersistenceManagerFactoryProxy} was retired by the Spring Framework, recommended usage is still online [1].
      * Sources have been recovered from [2].
@@ -108,7 +98,7 @@ public class IsisModuleJdoDatanucleus {
             final MetaModelContext metaModelContext,
             final EventBusService eventBusService,
             final Provider<EntityChangeTracker> entityChangeTrackerProvider,
-            final DnSettings dnSettings) {
+            final DnConfigurationBean dnSettings) {
 
         val lpmfBean = new LocalPersistenceManagerFactoryBean() {
             @Override
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnConfigurationBean.java
similarity index 59%
copy from persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java
copy to persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnConfigurationBean.java
index 0efb8dc..15e7cb2 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnConfigurationBean.java
@@ -21,57 +21,61 @@ package org.apache.isis.persistence.jdo.datanucleus.config;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.datanucleus.PropertyNames;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
 
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.commons.internal.collections._Maps;
-
-import lombok.val;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.log4j.Log4j2;
 
 /**
  * @since 2.0
  */
 @Configuration
-@Named("isis.persistence.jdo.DnSettings")
-@Order(OrderPrecedence.EARLY)
+@Named("isis.persistence.jdo.DnConfigurationBean")
 @Primary
-@Qualifier("Default")
+@Qualifier("Dn5")
+@ConfigurationProperties(prefix = "")
 @Log4j2
-public class DnSettings {
+public class DnConfigurationBean {
 
-    @Inject @Named("dn-settings") 
-    private Map<String, String> dnSettings;
+    @Getter @Setter 
+    private Map<String, String> datanucleus; //mapped by "datanucleus"
+    @Getter @Setter 
+    private Map<String, String> javax; //mapped by "javax" filtered later for "javax.jdo"
     
     private final Object lock = new Object();
-    private boolean amended = false;
-    
-    public Map<String, String> getAsMap() {
+    private Map<String, Object> properties;
+
+    public Map<String, Object> getAsProperties() {
         synchronized(lock) {
-            if(!amended) {
-                addDataNucleusPropertiesAsRequired();
-                amended = true;
+            if(properties==null) {
+                properties = new HashMap<>();
+                
+                if(datanucleus!=null) {
+                    datanucleus.forEach((k, v)->properties.put("datanucleus." + k, v));
+                }
+                
+                if(javax!=null) {
+                    javax.entrySet().stream()
+                    .filter(e->e.getKey().startsWith("jdo."))
+                    .forEach(e->properties.put("javax." + e.getKey(), e.getValue()));
+                }
+                
+                amendProperties(properties);
             }
         }
-        return dnSettings;
-    }
-    
-    public Map<String, Object> getAsProperties() {
-        return _Maps.mapValues(getAsMap(), HashMap::new, Object.class::cast);
+        return properties;
     }
     
-    // -- HELPER
-    
-    private void addDataNucleusPropertiesAsRequired() {
+    private void amendProperties(final Map<String, Object> props) {
         
-        val props = dnSettings;
+        // add optional defaults if needed
 
         String connectionFactoryName = (String) props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
         if(connectionFactoryName != null) {
@@ -96,29 +100,29 @@ public class DnSettings {
         } else {
             // use JDBC connection properties; put if not present
 
-            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
-            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
-            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
-            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
-
-            if(log.isInfoEnabled()) {
-                log.info("using JDBC connection '{}'", 
-                        props.get("javax.jdo.option.ConnectionURL"));
-            }
+//XXX let Spring handle datasources instead            
+//            putIfNotPresent(props, "javax.jdo.option.ConnectionDriverName", "org.hsqldb.jdbcDriver");
+//            putIfNotPresent(props, "javax.jdo.option.ConnectionURL", "jdbc:hsqldb:mem:test");
+//            putIfNotPresent(props, "javax.jdo.option.ConnectionUserName", "sa");
+//            putIfNotPresent(props, "javax.jdo.option.ConnectionPassword", "");
+//
+//            if(log.isInfoEnabled()) {
+//                log.info("using JDBC connection '{}'", 
+//                        props.get("javax.jdo.option.ConnectionURL"));
+//            }
         }
         
     }
 
-    private static void putIfNotPresent(
-            final Map<String, String> props,
-            final String key,
-            final String value) {
-        
-        if(!props.containsKey(key)) {
-            props.put(key, value);
-        }
-    }
-
-
+//    private static void putIfNotPresent(
+//            final Map<String, Object> props,
+//            final String key,
+//            final String value) {
+//        
+//        if(!props.containsKey(key)) {
+//            props.put(key, value);
+//        }
+//    }
+    
     
-}
+}
\ No newline at end of file
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java
index 0efb8dc..da7ae33 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/config/DnSettings.java
@@ -45,7 +45,7 @@ import lombok.extern.log4j.Log4j2;
 @Primary
 @Qualifier("Default")
 @Log4j2
-public class DnSettings {
+class DnSettings {
 
     @Inject @Named("dn-settings") 
     private Map<String, String> dnSettings;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
index 8d22bb4..c157826 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/JdoSchemaService.java
@@ -34,7 +34,7 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.events.MetamodelEvent;
-import org.apache.isis.persistence.jdo.datanucleus.config.DnSettings;
+import org.apache.isis.persistence.jdo.datanucleus.config.DnConfigurationBean;
 import org.apache.isis.persistence.jdo.spring.integration.TransactionAwarePersistenceManagerFactoryProxy;
 
 import lombok.extern.log4j.Log4j2;
@@ -60,7 +60,7 @@ public class JdoSchemaService {
     @Inject PlatformTransactionManager txManager;
 
     @Inject IsisBeanTypeRegistry isisBeanTypeRegistry;
-    @Inject DnSettings dnSettings;
+    @Inject DnConfigurationBean dnSettings;
 
     @PostConstruct
     public void init() {
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/_DnApplication.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/_DnApplication.java
index 9a7a012..965865a 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/_DnApplication.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/schema/_DnApplication.java
@@ -21,7 +21,7 @@ package org.apache.isis.persistence.jdo.datanucleus.schema;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.persistence.jdo.datanucleus.config.DnSettings;
+import org.apache.isis.persistence.jdo.datanucleus.config.DnConfigurationBean;
 import org.apache.isis.persistence.jdo.datanucleus.config.JdoEntityTypeRegistry;
 
 import lombok.val;
@@ -35,7 +35,7 @@ public class _DnApplication {
 
     public _DnApplication(
             final MetaModelContext metaModelContext,
-            final DnSettings dnSettings) {
+            final DnConfigurationBean dnSettings) {
 
         dnApplicationComponents = createDataNucleusApplicationComponents(
                 metaModelContext,
@@ -50,7 +50,7 @@ public class _DnApplication {
 
     private _DnApplicationComponents createDataNucleusApplicationComponents(
             final MetaModelContext metaModelContext,
-            final DnSettings dnSettings) {
+            final DnConfigurationBean dnSettings) {
 
         val configuration = metaModelContext.getConfiguration();
         val isisBeanTypeRegistry = metaModelContext.getServiceRegistry()
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
index 38d7d7d..17ed621 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/shiro/ShiroSecmanLdap_restfulStressTest.java
@@ -28,6 +28,8 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -58,8 +60,6 @@ import lombok.val;
         properties = {
                 //"logging.config=log4j2-test.xml",
                 "logging.config=log4j2-debug-persistence.xml",
-                IsisPresets.DataNucleusAutoCreate,
-                "datanucleus.schema.autoCreateDatabase=true",
                 "server.servlet.session.persistent=false", // defaults to false
         },
         webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@@ -78,6 +78,9 @@ import lombok.val;
     IsisModuleExtSecmanPersistenceJdo.class,
     IsisModuleExtSecmanEncryptionJbcrypt.class,
 })
+@PropertySources({
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate)
+})
 //XXX "does not work, when executed in sequence with other regressiontests
 class ShiroSecmanLdap_restfulStressTest extends AbstractShiroTest {
 
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdo.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdo.java
index 7db0d71..f89af1f 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdo.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdo.java
@@ -47,9 +47,8 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
                 JdoTestDomainModule.class
         })
 @PropertySources({
-    @PropertySource("classpath:/org/apache/isis/testdomain/jdo/isis-persistence.properties"),
-    @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
     @PropertySource(IsisPresets.NoTranslations),
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
 })
 public class Configuration_usingJdo {
     
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdoAndShiro.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdoAndShiro.java
index 7c9ab28..c901255 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdoAndShiro.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJdoAndShiro.java
@@ -51,10 +51,8 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
                 JdoTestDomainModule.class
         })
 @PropertySources({
-    //@PropertySource("classpath:/org/apache/isis/testdomain/conf/application.properties"),
-    @PropertySource("classpath:/org/apache/isis/testdomain/jdo/isis-persistence.properties"),
-    @PropertySource(IsisPresets.H2InMemory),
     @PropertySource(IsisPresets.NoTranslations),
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
 })
 public class Configuration_usingJdoAndShiro {
 
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJpa.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJpa.java
index b0fcd30..da82d60 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJpa.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingJpa.java
@@ -51,9 +51,8 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
     ,KVStoreForTesting.class, // Helper for JUnit Tests
 })
 @PropertySources({
-    //@PropertySource("classpath:/org/apache/isis/testdomain/jdo/isis-persistence.properties"),
-    @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
     @PropertySource(IsisPresets.NoTranslations),
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
 })
 public class Configuration_usingJpa {
     
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingSpringDataJpa.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingSpringDataJpa.java
index 7e52ae0..1c8e799 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingSpringDataJpa.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingSpringDataJpa.java
@@ -48,8 +48,8 @@ import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
     ,KVStoreForTesting.class, // Helper for JUnit Tests
 })
 @PropertySources({
-    @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
     @PropertySource(IsisPresets.NoTranslations),
+    @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
 })
 public class Configuration_usingSpringDataJpa {
     
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/isis-persistence.properties b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/isis-persistence.properties
deleted file mode 100644
index c1ccd0f..0000000
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/isis-persistence.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-isis.persistence.jdo-datanucleus.impl.datanucleus.schema.autoCreateAll=true
-isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateTables=true
-isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateConstraints=true
-
-isis.persistence.jdo-datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
-isis.persistence.jdo-datanucleus.impl.datanucleus.identifier.case=MixedCase
-isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.type=none
-isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
-
diff --git a/subdomains/excel/integtests/src/test/java/org/apache/isis/subdomains/excel/integtests/ExcelModuleIntegTestAbstract.java b/subdomains/excel/integtests/src/test/java/org/apache/isis/subdomains/excel/integtests/ExcelModuleIntegTestAbstract.java
index e8e2bad..d5c623f 100644
--- a/subdomains/excel/integtests/src/test/java/org/apache/isis/subdomains/excel/integtests/ExcelModuleIntegTestAbstract.java
+++ b/subdomains/excel/integtests/src/test/java/org/apache/isis/subdomains/excel/integtests/ExcelModuleIntegTestAbstract.java
@@ -45,9 +45,8 @@ public abstract class ExcelModuleIntegTestAbstract extends IsisIntegrationTestAb
 
     @Configuration
     @PropertySources({
-            @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
             @PropertySource(IsisPresets.NoTranslations),
-            @PropertySource(IsisPresets.DataNucleusAutoCreate),
+            @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
     })
     @Import({
             IsisModuleCoreRuntimeServices.class,
diff --git a/testing/fakedata/integtests/src/test/java/org/apache/isis/testing/fakedata/integtests/FakeDataModuleIntegTestAbstract.java b/testing/fakedata/integtests/src/test/java/org/apache/isis/testing/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
index 5483300..cd5cedc 100644
--- a/testing/fakedata/integtests/src/test/java/org/apache/isis/testing/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
+++ b/testing/fakedata/integtests/src/test/java/org/apache/isis/testing/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
@@ -46,9 +46,8 @@ public abstract class FakeDataModuleIntegTestAbstract extends IsisIntegrationTes
 
         @Configuration
         @PropertySources({
-                @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
                 @PropertySource(IsisPresets.NoTranslations),
-                @PropertySource(IsisPresets.DataNucleusAutoCreate),
+                @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
         })
         @Import({
                 IsisModuleCoreRuntimeServices.class,