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