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 17:48:48 UTC
[isis] 26/32: ISIS-1756 remove reflective access to DN's
EnhancementHelper since we've got a dedicated method instead
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 32df2f1b02d8df27310c1c1635f996e781c64bdb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Dec 9 09:55:21 2017 +0100
ISIS-1756 remove reflective access to DN's EnhancementHelper since we've
got a dedicated method instead
---
.../datanucleus/DataNucleusLifeCycleHelper.java | 57 +++++++++++++---------
1 file changed, 34 insertions(+), 23 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
index 93ba482..fc5669e 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
@@ -52,31 +52,39 @@ public class DataNucleusLifeCycleHelper {
try {
final ClassLoader cl = IsisContext.getClassLoader();
-
- if(persistenceManagerFactory instanceof JDOPersistenceManagerFactory) {
-
- final JDOPersistenceManagerFactory jdoPMF =
- (JDOPersistenceManagerFactory) persistenceManagerFactory;
- final PersistenceNucleusContext nucleusContext = jdoPMF.getNucleusContext();
- final AbstractStoreManager storeManager =
- (AbstractStoreManager)nucleusContext.getStoreManager();
-
-
- persistenceManagerFactory.getManagedClasses()
- .forEach(clazz->{
- final ClassLoaderResolver clr = nucleusContext.getClassLoaderResolver(cl);
-
- // Un-manage from the store
- storeManager.unmanageClass(clr, clazz.getName(), false);
-
- // Unload the meta-data for this class
- nucleusContext.getMetaDataManager().unloadMetaDataForClass(clazz.getName());
- });
- }
+
+// XXX not needed according to https://github.com/datanucleus/datanucleus-core/issues/272
+//
+// if(persistenceManagerFactory instanceof JDOPersistenceManagerFactory) {
+//
+// final JDOPersistenceManagerFactory jdoPMF =
+// (JDOPersistenceManagerFactory) persistenceManagerFactory;
+// final PersistenceNucleusContext nucleusContext = jdoPMF.getNucleusContext();
+// final AbstractStoreManager storeManager =
+// (AbstractStoreManager)nucleusContext.getStoreManager();
+//
+//
+// persistenceManagerFactory.getManagedClasses()
+// .forEach(clazz->{
+// final ClassLoaderResolver clr = nucleusContext.getClassLoaderResolver(cl);
+//
+// // Un-manage from the store
+// storeManager.unmanageClass(clr, clazz.getName(), false);
+//
+// // Unload the meta-data for this class
+// nucleusContext.getMetaDataManager().unloadMetaDataForClass(clazz.getName());
+// });
+// }
persistenceManagerFactory.close();
- dnUnregisterClassesManagedBy(cl);
+ // XXX uses reflection prior to DN v5.1.5
+ // remove once DN v5.1.5 is released
+ // dnUnregisterClassesManagedBy(cl);
+
+ // XXX for info, why we do this see
+ // https://github.com/datanucleus/datanucleus-core/issues/272
+ EnhancementHelper.getInstance().unregisterClasses(cl);
} catch (Exception e) {
// ignore, since it only affects re-deploy-ability, which is nice to have but not critical
@@ -86,7 +94,8 @@ public class DataNucleusLifeCycleHelper {
// -- HELPER
- private static void dnUnregisterClassesManagedBy(ClassLoader cl) {
+ // TODO remove once DN v5.1.5 is released
+ private static void dnUnregisterClassesManagedBy(ClassLoader cl) {
if(cl==null)
return;
visitDNRegisteredClasses(map->
@@ -97,6 +106,7 @@ public class DataNucleusLifeCycleHelper {
// -- LOW LEVEL REFLECTION
+ // TODO remove once DN v5.1.5 is released
private final static MethodHandle getRegisteredClassesMH;
static {
MethodHandle mh;
@@ -112,6 +122,7 @@ public class DataNucleusLifeCycleHelper {
getRegisteredClassesMH = mh;
}
+ // TODO remove once DN v5.1.5 is released
private static void visitDNRegisteredClasses(Consumer<Map<Class<?>, ?>> visitor){
try {
visitor.accept( (Map<Class<?>, ?>) getRegisteredClassesMH.invoke() );
--
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.