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/01 12:17:47 UTC

[isis] branch master updated: ISIS-2515: translates first example to Java

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


The following commit(s) were added to refs/heads/master by this push:
     new 25c657c  ISIS-2515: translates first example to Java
25c657c is described below

commit 25c657c49cd252d55574d34517394229540c4e9f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Feb 1 13:17:31 2021 +0100

    ISIS-2515: translates first example to Java
---
 .../jdo/datanucleus/test/ConfigurationExample.java | 16 +------
 .../jdo/datanucleus/test/JdoSettingsBean.java      | 33 +++++++-------
 persistence/jdo/spring/README.adoc                 | 53 +++++++++++++++++++++-
 3 files changed, 70 insertions(+), 32 deletions(-)

diff --git a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java
index 014d998..4009703 100644
--- a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java
+++ b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java
@@ -18,10 +18,6 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus.test;
 
-import java.util.HashMap;
-import java.util.Map;
-
-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;
@@ -38,22 +34,14 @@ import lombok.val;
  */
 @Configuration
 @Import({
-    JdoSettingsBean.class
 })
-@EnableConfigurationProperties
+@EnableConfigurationProperties(JdoSettingsBean.class)
 public class ConfigurationExample {
     
-    // DatanNucleus config properties
-    @ConfigurationProperties(prefix = "isis.persistence.jdo-datanucleus.impl")
-    @Bean("jdo-settings")
-    public Map<String, String> getJdoSettings() {
-        return new HashMap<String, String>();
-    }
-    
     @Bean
     public LocalPersistenceManagerFactoryBean myPmf(final JdoSettingsBean jdoSettings) {
 
-        _Probe.errOut("jdoSettings %s", _Maps.toString(jdoSettings.getAsProperties(), "\n"));
+        _Probe.errOut("jdoSettings:\n%s", _Maps.toString(jdoSettings.getAsProperties(), "\n"));
         
         val myPmf = new LocalPersistenceManagerFactoryBean();
         myPmf.setJdoPropertyMap(jdoSettings.getAsProperties());
diff --git a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/JdoSettingsBean.java b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/JdoSettingsBean.java
index a9df354..de83017 100644
--- a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/JdoSettingsBean.java
+++ b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/JdoSettingsBean.java
@@ -21,38 +21,37 @@ package org.apache.isis.persistence.jdo.datanucleus.test;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
-import org.apache.isis.commons.internal.collections._Maps;
+import lombok.Getter;
+import lombok.Setter;
 
 @Configuration
+@ConfigurationProperties(prefix = "isis.persistence.jdo-datanucleus")
+@Named("jdo-settings")
 public class JdoSettingsBean {
 
-    @Inject @Named("jdo-settings") 
-    private Map<String, String> jdoSettings;
+    @Getter @Setter 
+    private Map<String, String> impl; //mapped by "isis.persistence.jdo-datanucleus.impl"
     
     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) {
-                amendProperties();
-                amended = true;
+            if(properties==null) {
+                properties = new HashMap<>();
+                properties.putAll(impl);
+                amendProperties(properties);
             }
         }
-        return jdoSettings;
+        return properties;
     }
-
-    public Map<String, Object> getAsProperties() {
-        return _Maps.mapValues(getAsMap(), HashMap::new, Object.class::cast);
-    }
-    
     
-    private void amendProperties() {
+    private void amendProperties(final Map<String, Object> properties) {
         // add optional defaults if needed
     }
 
diff --git a/persistence/jdo/spring/README.adoc b/persistence/jdo/spring/README.adoc
index 9e3228a..80b2152 100644
--- a/persistence/jdo/spring/README.adoc
+++ b/persistence/jdo/spring/README.adoc
@@ -27,7 +27,7 @@ style as the _Hibernate_ support. The corresponding integration classes reside i
 _Spring_ provides a `LocalPersistenceManagerFactoryBean` class that allows you to define a
 local JDO `PersistenceManagerFactory` within a _Spring_ application context:
 
-.Beans Configuration (XML)
+.Option 1 - Beans Configuration (XML)
 [%collapsible]
 ====
 [source,xml]
@@ -42,6 +42,57 @@ local JDO `PersistenceManagerFactory` within a _Spring_ application context:
 ----
 ====
 
+.Option 2 - Java Beans
+[%collapsible]
+====
+[source,java]
+----
+@Configuration
+@ConfigurationProperties(prefix = "isis.persistence.jdo-datanucleus")
+@Named("jdo-settings")
+public class JdoSettingsBean {
+
+    @Getter @Setter 
+    private Map<String, String> impl; //mapped by "isis.persistence.jdo-datanucleus.impl"
+    
+    private final Object lock = new Object();
+    private Map<String, Object> properties;
+
+    public Map<String, Object> getAsProperties() {
+        synchronized(lock) {
+            if(properties==null) {
+                properties = new HashMap<>();
+                properties.putAll(impl);
+                amendProperties(properties);
+            }
+        }
+        return properties;
+    }
+    
+    private void amendProperties(final Map<String, Object> properties) {
+        // add optional defaults if needed
+    }
+
+}
+
+@Configuration
+@EnableConfigurationProperties(JdoSettingsBean.class)
+public class ConfigurationExample {
+    
+    @Bean
+    public LocalPersistenceManagerFactoryBean myPmf(final JdoSettingsBean jdoSettings) {
+        
+        var myPmf = new LocalPersistenceManagerFactoryBean();
+        myPmf.setJdoPropertyMap(jdoSettings.getAsProperties());
+        return myPmf;
+    }
+
+}
+
+----
+====
+
+
 Alternatively, you can set up a `PersistenceManagerFactory` through direct instantiation of a
 `PersistenceManagerFactory` implementation class. A JDO `PersistenceManagerFactory` implementation
 class follows the JavaBeans pattern, just like a JDBC `DataSource` implementation class, which is a