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