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/03/31 17:41:55 UTC
[isis] branch master updated: ISIS-2593: Recognize eclipselink.*
configuration options and pass them over to the EclipseLink integration
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 8ec6a6d ISIS-2593: Recognize eclipselink.* configuration options and pass them over to the EclipseLink integration
8ec6a6d is described below
commit 8ec6a6df4132716c6338c9f6f6e9554a2e3ad1c3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 31 19:41:38 2021 +0200
ISIS-2593: Recognize eclipselink.* configuration options and pass them
over to the EclipseLink integration
---
.../isis/core/config/IsisModuleCoreConfig.java | 1 +
.../confmenu/ConfigurationViewServiceDefault.java | 1 +
.../jdo/datanucleus/config/DnSettings.java | 26 +------
.../jpa/eclipselink/IsisModuleJpaEclipselink.java | 17 ++---
.../jpa/eclipselink/config/ElSettings.java | 79 ++++++++++++++++++++++
5 files changed, 88 insertions(+), 36 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisModuleCoreConfig.java b/core/config/src/main/java/org/apache/isis/core/config/IsisModuleCoreConfig.java
index 966cc88..1111ab7 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisModuleCoreConfig.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisModuleCoreConfig.java
@@ -70,6 +70,7 @@ public class IsisModuleCoreConfig {
private Map<String, String> isis = Collections.emptyMap();
private Map<String, String> resteasy = Collections.emptyMap();
private Map<String, String> datanucleus = Collections.emptyMap();
+ private Map<String, String> eclipselink = Collections.emptyMap();
}
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
index fc6dca4..c16cd86 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
@@ -143,6 +143,7 @@ implements
configProps.getIsis().forEach((k, v)->add("isis." + k, v, map));
configProps.getResteasy().forEach((k, v)->add("resteasy." + k, v, map));
configProps.getDatanucleus().forEach((k, v)->add("datanucleus." + k, v, map));
+ configProps.getEclipselink().forEach((k, v)->add("eclipselink." + k, v, map));
} else {
// if properties are not visible, show at least the policy
add("Configuration Property Visibility Policy",
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 8bad341..06e3f47 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
@@ -46,6 +46,7 @@ public class 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"
@@ -97,32 +98,9 @@ public class DnSettings {
log.info("... and config properties for second '-nontx' JNDI datasource also found; {}", connectionFactory2Name);
}
// nothing further to do
- } else {
- // use JDBC connection properties; put if not present
-
-//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, 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/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
index 0c33cd6..c20a55c 100644
--- a/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
+++ b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
@@ -19,17 +19,15 @@
package org.apache.isis.persistence.jpa.eclipselink;
import java.sql.SQLException;
-import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.sql.DataSource;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.dao.DataAccessException;
@@ -42,10 +40,9 @@ import org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect;
import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
import org.springframework.transaction.jta.JtaTransactionManager;
-import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.persistence.jpa.eclipselink.inject.BeanManagerForEntityListeners;
+import org.apache.isis.persistence.jpa.eclipselink.config.ElSettings;
import org.apache.isis.persistence.jpa.integration.IsisModuleJpaIntegration;
import lombok.SneakyThrows;
@@ -66,10 +63,11 @@ import lombok.extern.log4j.Log4j2;
@Import({
IsisModuleJpaIntegration.class
})
+@EnableConfigurationProperties(ElSettings.class)
@Log4j2
public class IsisModuleJpaEclipselink extends JpaBaseConfiguration {
- @Inject private Provider<ServiceInjector> serviceInjectorProvider;
+ @Inject private ElSettings elSettings;
protected IsisModuleJpaEclipselink(
IsisConfiguration isisConfiguration,
@@ -98,12 +96,7 @@ public class IsisModuleJpaEclipselink extends JpaBaseConfiguration {
@Override
protected Map<String, Object> getVendorProperties() {
- HashMap<String, Object> jpaProps = new HashMap<>();
- jpaProps.put(PersistenceUnitProperties.WEAVING, "false");
-// jpaProps.put(PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_DATABASE_SCHEMAS, "true");
- jpaProps.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.CREATE_OR_EXTEND);
- jpaProps.put(PersistenceUnitProperties.CDI_BEANMANAGER, new BeanManagerForEntityListeners(serviceInjectorProvider));
- return jpaProps;
+ return elSettings.asMap();
}
/**
diff --git a/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/config/ElSettings.java b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/config/ElSettings.java
new file mode 100644
index 0000000..ed0fe91
--- /dev/null
+++ b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/config/ElSettings.java
@@ -0,0 +1,79 @@
+/*
+ * 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.jpa.eclipselink.config;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Provider;
+
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+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.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.persistence.jpa.eclipselink.inject.BeanManagerForEntityListeners;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.val;
+
+/**
+ * @since 2.0
+ */
+@Configuration
+@Named("isis.persistence.jpa.ElSettings")
+@Primary
+@Qualifier("Eclipselink")
+@ConfigurationProperties(prefix = "")
+public class ElSettings {
+
+ @Inject private Provider<ServiceInjector> serviceInjectorProvider;
+
+ @Getter @Setter
+ private Map<String, String> eclipselink; //mapped by "eclipselink"
+
+ public Map<String, Object> asMap() {
+ return map.get();
+ }
+
+ // -- HELPER
+
+ private final _Lazy<Map<String, Object>> map = _Lazy.threadSafe(this::createMap);
+
+ protected Map<String, Object> createMap() {
+ val jpaProps = new HashMap<String, Object>();
+
+ // setup defaults
+ jpaProps.put(PersistenceUnitProperties.WEAVING, "false");
+// jpaProps.put(PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_DATABASE_SCHEMAS, "true");
+ jpaProps.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.CREATE_OR_EXTEND);
+ jpaProps.put(PersistenceUnitProperties.CDI_BEANMANAGER, new BeanManagerForEntityListeners(serviceInjectorProvider));
+
+ // potentially overrides defaults from above
+ getEclipselink().forEach((k, v)->jpaProps.put("eclipselink." + k, v));
+ return jpaProps;
+ }
+
+}