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>.