You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/10/03 22:29:21 UTC
[isis] 01/03: ISIS-2086: wip,
converting DN config props to use IsisConfiguration
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 14324ffaa857e0b0392e02eeddd61e364ae7c965
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Oct 2 09:44:06 2019 +0100
ISIS-2086: wip, converting DN config props to use IsisConfiguration
(cherry picked from commit 0a9b39ba4ddceba0f5a2349e1a90eac8f5e6a3f5)
---
.../org/apache/isis/config/IsisConfiguration.java | 10 +++++-
.../additional-spring-configuration-metadata.json | 14 ++++++++
.../datanucleus/DataNucleusPropertiesAware.java | 4 +++
...rtiesAware.java => IsisConfigurationAware.java} | 6 ++--
.../CreateSchemaObjectFromClassMetadata.java | 37 ++++++++++++++--------
5 files changed, 54 insertions(+), 17 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 1c1516a..25135ee 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -109,6 +109,15 @@ public class IsisConfiguration {
private final Impl impl = new Impl();
@Data
public static class Impl {
+ private final DataNucleus datanucleus = new DataNucleus();
+ /**
+ * slightly different capitalization is intentional here; cannot have nested class with same name as parent.
+ * We rely on additional-spring-configuration-metadata.json to specify the desired property names.
+ */
+ @Data
+ public static class DataNucleus {
+ private String ConnectionPasswordDecrypter;
+ }
private final Javax javax = new Javax();
@Data
public static class Javax {
@@ -704,7 +713,6 @@ public class IsisConfiguration {
@Data
public static class Themes {
-// isis.viewer.wicket.themes.showChooser
/**
* A comma separated list of enabled theme names, as defined by https://bootswatch.com.
*/
diff --git a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index 351d7be..acbeb06 100644
--- a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -21,6 +21,11 @@
"description": "Password for the user account used by DataNucleus Object store to connect."
},
{
+ "name": "isis.persistor.datanucleus.impl.javax.datanucleus.ConnectionPasswordDecrypter",
+ "type": "java.lang.String",
+ "description": "Name of a class that implements org.datanucleus.store.connection.DecryptionProvider and should only be specified if the password is encrypted in the persistence properties"
+ },
+ {
"name": "isis.viewer.wicket.credit.1.url",
"type": "java.net.URL"
},
@@ -69,6 +74,15 @@
"target": "org.apache.isis.viewer.wicket.ui.components.widgets.themepicker.IsisWicketThemeSupport"
}
}]
+ },
+ {
+ "name": "isis.persistor.datanucleus.impl.javax.datanucleus.ConnectionPasswordDecrypter",
+ "providers": [{
+ "name": "class-reference",
+ "parameters": {
+ "target": "org.datanucleus.store.connection.DecryptionProvider"
+ }
+ }]
}
]
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java
index 3d2067f..1ead202 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java
@@ -20,6 +20,10 @@ package org.apache.isis.jdo.datanucleus;
import java.util.Map;
+/**
+ * @deprecated - should be able to replace with {@link IsisConfigurationAware} instead.
+ */
+@Deprecated
public interface DataNucleusPropertiesAware {
public void setDataNucleusProperties(final Map<String, String> properties);
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/IsisConfigurationAware.java
similarity index 84%
copy from core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java
copy to core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/IsisConfigurationAware.java
index 3d2067f..a645b7f 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/DataNucleusPropertiesAware.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/IsisConfigurationAware.java
@@ -20,7 +20,9 @@ package org.apache.isis.jdo.datanucleus;
import java.util.Map;
-public interface DataNucleusPropertiesAware {
+import org.apache.isis.config.IsisConfiguration;
- public void setDataNucleusProperties(final Map<String, String> properties);
+public interface IsisConfigurationAware {
+
+ void setIsisConfiguration(IsisConfiguration isisConfiguration);
}
diff --git a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/datanucleus/CreateSchemaObjectFromClassMetadata.java b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/datanucleus/CreateSchemaObjectFromClassMetadata.java
index aa44645..e3f0af4 100644
--- a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/datanucleus/CreateSchemaObjectFromClassMetadata.java
+++ b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/datanucleus/CreateSchemaObjectFromClassMetadata.java
@@ -25,6 +25,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;
+import org.apache.isis.config.IsisConfiguration;
import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.enhancer.EnhancementNucleusContextImpl;
import org.datanucleus.metadata.AbstractClassMetaData;
@@ -39,15 +40,12 @@ import lombok.extern.log4j.Log4j2;
* Implementation note: the methods in this class are <tt>protected</tt> to allow for easy subclassing.
*/
@Log4j2
-public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, DataNucleusPropertiesAware {
+public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, DataNucleusPropertiesAware, IsisConfigurationAware {
// -- persistenceManagerFactory, properties
private Map<String, String> properties;
- protected Map<String, String> getProperties() {
- return properties;
- }
-
+ private IsisConfiguration isisConfiguration;
// -- loaded (API)
@@ -62,9 +60,9 @@ public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, Da
Connection connection = null;
Statement statement = null;
- final String driverName = properties.get("javax.jdo.option.ConnectionDriverName");
- final String url = properties.get("javax.jdo.option.ConnectionURL");
- final String userName = properties.get("javax.jdo.option.ConnectionUserName");
+ final String driverName = isisConfiguration.getPersistor().getDatanucleus().getImpl().getJavax().getJdo().getOption().getConnectionDriverName();
+ final String url = isisConfiguration.getPersistor().getDatanucleus().getImpl().getJavax().getJdo().getOption().getConnectionUrl();
+ final String userName = isisConfiguration.getPersistor().getDatanucleus().getImpl().getJavax().getJdo().getOption().getConnectionUserName();
final String password = getConnectionPassword();
if(_Strings.isNullOrEmpty(driverName) || _Strings.isNullOrEmpty(url)) {
@@ -144,7 +142,7 @@ public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, Da
// db vendors without requiring lots of complex configuration of DataNucleus
//
- String url = getProperties().get("javax.jdo.option.ConnectionURL");
+ String url = isisConfiguration.getPersistor().getDatanucleus().getImpl().getJavax().getJdo().getOption().getConnectionUrl();
if(url.contains("postgres")) {
// in DN 4.0, was forcing lower case:
@@ -184,10 +182,10 @@ public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, Da
* @return Password
*/
private String getConnectionPassword() {
- String password = properties.get("javax.jdo.option.ConnectionPassword");
+ String password = isisConfiguration.getPersistor().getDatanucleus().getImpl().getJavax().getJdo().getOption().getConnectionPassword();
if (password != null)
{
- String decrypterName = properties.get("datanucleus.ConnectionPasswordDecrypter");
+ String decrypterName = isisConfiguration.getPersistor().getDatanucleus().getImpl().getDatanucleus().getConnectionPasswordDecrypter();
if (decrypterName != null)
{
// Decrypt the password using the provided class
@@ -209,11 +207,22 @@ public class CreateSchemaObjectFromClassMetadata implements MetaDataListener, Da
// -- injected dependencies
+
@Override
- public void setDataNucleusProperties(final Map<String, String> properties) {
- this.properties = properties;
+ public void setIsisConfiguration(IsisConfiguration isisConfiguration) {
+ this.isisConfiguration = isisConfiguration;
}
+ /**
+ *
+ * @param properties
+ *
+ * @deprecated - should be able to obtain these from {@link IsisConfiguration}, instead
+ */
+ @Deprecated
+ @Override
+ public void setDataNucleusProperties(final Map<String, String> properties) {
+ this.properties = properties;
-
+ }
}