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:53:08 UTC

[isis] branch master updated: ISIS-2515: translates second 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 7b70085  ISIS-2515: translates second example to Java
7b70085 is described below

commit 7b700851035c29b1124250e07dcfad63a0d03c70
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Feb 1 13:52:51 2021 +0100

    ISIS-2515: translates second example to Java
---
 ...tionExample.java => ConfigurationExample1.java} |  2 +-
 ...tionExample.java => ConfigurationExample2.java} | 35 ++++++++++-----
 ...figurationTest.java => ConfigurationTest1.java} |  4 +-
 .../jdo/datanucleus/test/ConfigurationTest2.java   | 51 ++++++++++++++++++++++
 persistence/jdo/spring/README.adoc                 | 45 ++++++++++++++++++-
 5 files changed, 121 insertions(+), 16 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/ConfigurationExample1.java
similarity index 98%
copy from persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java
copy to persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample1.java
index 4009703..e9b5632 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/ConfigurationExample1.java
@@ -36,7 +36,7 @@ import lombok.val;
 @Import({
 })
 @EnableConfigurationProperties(JdoSettingsBean.class)
-public class ConfigurationExample {
+public class ConfigurationExample1 {
     
     @Bean
     public LocalPersistenceManagerFactoryBean myPmf(final JdoSettingsBean jdoSettings) {
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/ConfigurationExample2.java
similarity index 55%
rename from persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample.java
rename to persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationExample2.java
index 4009703..13088c5 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/ConfigurationExample2.java
@@ -18,14 +18,17 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus.test;
 
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import javax.jdo.PersistenceManagerFactory;
+import javax.sql.DataSource;
+
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.store.rdbms.datasource.dbcp2.BasicDataSource;
+import org.springframework.boot.jdbc.DataSourceBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.debug._Probe;
-import org.apache.isis.persistence.jdo.spring.integration.LocalPersistenceManagerFactoryBean;
 
 import lombok.val;
 
@@ -35,16 +38,26 @@ import lombok.val;
 @Configuration
 @Import({
 })
-@EnableConfigurationProperties(JdoSettingsBean.class)
-public class ConfigurationExample {
+public class ConfigurationExample2 {
     
-    @Bean
-    public LocalPersistenceManagerFactoryBean myPmf(final JdoSettingsBean jdoSettings) {
-
-        _Probe.errOut("jdoSettings:\n%s", _Maps.toString(jdoSettings.getAsProperties(), "\n"));
+    @Bean(destroyMethod = "close")
+    public DataSource getDataSource() {
+        val dataSourceBuilder = DataSourceBuilder.create().type(BasicDataSource.class);
+        dataSourceBuilder.driverClassName("org.h2.Driver");
+        dataSourceBuilder.url("jdbc:h2:mem:test");
+        dataSourceBuilder.username("sa");
+        dataSourceBuilder.password("");
+        return dataSourceBuilder.build();
+    }
+  
+    @Bean(destroyMethod = "close")
+    public PersistenceManagerFactory myPmf(final DataSource dataSource) {
+        
+        _Probe.errOut("dataSource: %s", dataSource);
         
-        val myPmf = new LocalPersistenceManagerFactoryBean();
-        myPmf.setJdoPropertyMap(jdoSettings.getAsProperties());
+        val myPmf = new JDOPersistenceManagerFactory();
+        myPmf.setConnectionFactory(dataSource);
+        myPmf.setNontransactionalRead(true);
         return myPmf;
     }
 
diff --git a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest.java b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest1.java
similarity index 97%
rename from persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest.java
rename to persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest1.java
index c17d0a7..97b8cca 100644
--- a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest.java
+++ b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest1.java
@@ -23,7 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest(
         classes = {
-                ConfigurationExample.class
+                ConfigurationExample1.class
         },
         properties = {
                 "isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE",
@@ -42,7 +42,7 @@ import org.springframework.boot.test.context.SpringBootTest;
                 "isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName=sa",
        }
 )
-class ConfigurationTest {
+class ConfigurationTest1 {
 
     @Test 
     void contextLoads() {
diff --git a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest2.java b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest2.java
new file mode 100644
index 0000000..5429381
--- /dev/null
+++ b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/test/ConfigurationTest2.java
@@ -0,0 +1,51 @@
+/*
+ *  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.
+ */
+package org.apache.isis.persistence.jdo.datanucleus.test;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest(
+        classes = {
+                ConfigurationExample2.class
+        },
+        properties = {
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.cache.level2.type=none",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.identifier.case=MixedCase",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.schema.autoCreateAll=true",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateAll=false",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateConstraints=true",
+//                "isis.persistence.jdo-datanucleus.impl.datanucleus.schema.validateTables=true",
+//                
+//                "isis.persistence.jdo-datanucleus.impl.javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.api.jdo.JDOPersistenceManagerFactory",
+                "spring.datasource.url=jdbc:h2:mem:test",
+                "spring.datasource.driver-class-name=org.h2.Driver",
+                "spring.datasource.username=sa",
+                "spring.datasource.password=",
+       }
+)
+class ConfigurationTest2 {
+
+    @Test 
+    void contextLoads() {
+    }
+    
+}
diff --git a/persistence/jdo/spring/README.adoc b/persistence/jdo/spring/README.adoc
index 80b2152..7c9a7cb 100644
--- a/persistence/jdo/spring/README.adoc
+++ b/persistence/jdo/spring/README.adoc
@@ -81,7 +81,6 @@ public class ConfigurationExample {
     
     @Bean
     public LocalPersistenceManagerFactoryBean myPmf(final JdoSettingsBean jdoSettings) {
-        
         var myPmf = new LocalPersistenceManagerFactoryBean();
         myPmf.setJdoPropertyMap(jdoSettings.getAsProperties());
         return myPmf;
@@ -101,7 +100,7 @@ JDBC `DataSource`, passed into the connectionFactory property. For example, for
 JDO implementation https://www.datanucleus.org/[DataNucleus],
 this is the XML configuration of the PersistenceManagerFactory implementation:
 
-.Beans Configuration (XML)
+.Option 1 - Beans Configuration (XML)
 [%collapsible]
 ====
 [source,xml]
@@ -124,6 +123,48 @@ this is the XML configuration of the PersistenceManagerFactory implementation:
 ----
 ====
 
+.Option 2 - Java Beans
+[%collapsible]
+====
+[source,java]
+----
+import javax.jdo.PersistenceManagerFactory;
+import javax.sql.DataSource;
+
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.store.rdbms.datasource.dbcp2.BasicDataSource;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration
+@Import({
+})
+public class ConfigurationExample {
+    
+    @Bean(destroyMethod = "close")
+    public DataSource getDataSource() {
+        var dataSourceBuilder = DataSourceBuilder.create().type(BasicDataSource.class);
+        dataSourceBuilder.driverClassName("org.h2.Driver");
+        dataSourceBuilder.url("jdbc:h2:mem:test");
+        dataSourceBuilder.username("sa");
+        dataSourceBuilder.password("");
+        return dataSourceBuilder.build();
+    }
+  
+    @Bean(destroyMethod = "close")
+    public PersistenceManagerFactory myPmf(final DataSource dataSource) {
+        var myPmf = new JDOPersistenceManagerFactory();
+        myPmf.setConnectionFactory(dataSource);
+        myPmf.setNontransactionalRead(true);
+        return myPmf;
+    }
+
+}
+----
+====
+
 You can also set up JDO `PersistenceManagerFactory` in the JNDI environment of a Java EE application server,
 usually through the JCA connector provided by the particular JDO implementation. _Spring_'s standard
 `JndiObjectFactoryBean / <jee:jndi-lookup>` can be used to retrieve and expose such a