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 2018/01/05 10:46:10 UTC
[isis] 11/16: ISIS-1754 proper DN class-loading
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-1779-jax-rs-2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit b5f2586129fd0fef665535fab94de6540208aba6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 22 12:08:32 2017 +0100
ISIS-1754 proper DN class-loading
---
.../core/runtime/system/context/IsisContext.java | 24 ++++++++++++++-----
.../DataNucleusApplicationComponents.java | 27 +++++++++++-----------
.../wicket/viewer/IsisWicketApplication.java | 2 ++
3 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index f26b6d9..9aaf71b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -19,15 +19,14 @@
package org.apache.isis.core.runtime.system.context;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
-import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
-import org.apache.log4j.BasicConfigurator;
import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
+import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
+import org.apache.log4j.BasicConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Simply a static field holding the {@link IsisSessionFactory} singleton, and convenience methods to obtain the
@@ -97,19 +96,31 @@ public final class IsisContext {
public static void destroy() {
sessionFactory = null;
metamodelInvalidException = null;
+ classLoader = null;
log.info("destroyed");
resetLogging();
}
// -- CLASS LOADING
+ private static ClassLoader classLoader;
+
/**
*
* @return the framework's default class-loader
*/
public static ClassLoader getClassLoader() {
+ if(classLoader==null) {
+ classLoader = Thread.currentThread().getContextClassLoader();
+ }
+ return classLoader;
//TODO requires skinny-war testing on glassfish, payara, wildfly, tomee, ...
- return Thread.currentThread().getContextClassLoader();
+ //return ClassLoaderProvider.getManagedOrElseDefault();
+ //Thread.currentThread().getContextClassLoader();
+ }
+
+ public static void setClassLoader(ClassLoader classLoader) {
+ IsisContext.classLoader = classLoader;
}
// -- HELPER
@@ -124,4 +135,5 @@ public final class IsisContext {
}
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
index a68ce06..8fafca8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/DataNucleusApplicationComponents.java
@@ -25,26 +25,26 @@ import java.util.Set;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Maps;
-
-import org.datanucleus.PersistenceNucleusContext;
-import org.datanucleus.PropertyNames;
-import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
-import org.datanucleus.metadata.MetaDataListener;
-import org.datanucleus.metadata.MetaDataManager;
-import org.datanucleus.store.StoreManager;
-import org.datanucleus.store.schema.SchemaAwareStoreManager;
-
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.factory.InstanceUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata;
import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPropertiesAware;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoNamedQuery;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.query.JdoQueryFacet;
+import org.datanucleus.PersistenceNucleusContext;
+import org.datanucleus.PropertyNames;
+import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.datanucleus.metadata.MetaDataListener;
+import org.datanucleus.metadata.MetaDataManager;
+import org.datanucleus.store.StoreManager;
+import org.datanucleus.store.schema.SchemaAwareStoreManager;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Maps;
public class DataNucleusApplicationComponents implements ApplicationScopedComponent {
@@ -148,8 +148,9 @@ public class DataNucleusApplicationComponents implements ApplicationScopedCompon
datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_TABLES, "true"); // but have DN do everything else...
datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_COLUMNS, "true");
datanucleusProps.put(PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_CONSTRAINTS, "true");
-
- persistenceManagerFactory = JDOHelper.getPersistenceManagerFactory(datanucleusProps);
+
+ persistenceManagerFactory = JDOHelper
+ .getPersistenceManagerFactory(datanucleusProps, IsisContext.getClassLoader() );
createSchema(persistenceManagerFactory, persistableClassNameSet, datanucleusProps);
} else {
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index d15ac12..e09bb6e 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -333,6 +333,8 @@ public class IsisWicketApplication
List<Future<Object>> futures = null;
try {
super.init();
+
+ IsisContext.setClassLoader(this.getClass().getClassLoader());
futures = startBackgroundInitializationThreads();
--
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.