Author: adamw
Date: 2009-09-30 13:16:01 -0400 (Wed, 30 Sep 2009)
New Revision: 17587
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/event/AuditEventListener.java
core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
Log:
HHH-4449:
- applying patch
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/event/AuditEventListener.java
===================================================================
---
core/trunk/envers/src/main/java/org/hibernate/envers/event/AuditEventListener.java 2009-09-30
17:11:04 UTC (rev 17586)
+++
core/trunk/envers/src/main/java/org/hibernate/envers/event/AuditEventListener.java 2009-09-30
17:16:01 UTC (rev 17587)
@@ -104,7 +104,7 @@
toEntityName = session.bestGuessEntityName(newValue);
id =
hibernateProxy.getHibernateLazyInitializer().getIdentifier();
// We've got to initialize the object from the proxy to later read its state.
- newValue = Tools.getTargetFromProxy(hibernateProxy);
+ newValue = Tools.getTargetFromProxy(session.getFactory(), hibernateProxy);
} else {
toEntityName = session.guessEntityName(newValue);
@@ -124,7 +124,7 @@
toEntityName = session.bestGuessEntityName(oldValue);
id =
hibernateProxy.getHibernateLazyInitializer().getIdentifier();
// We've got to initialize the object as we'll read it's state
anyway.
- oldValue = Tools.getTargetFromProxy(hibernateProxy);
+ oldValue = Tools.getTargetFromProxy(session.getFactory(), hibernateProxy);
} else {
toEntityName = session.guessEntityName(oldValue);
Modified: core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2009-09-30
17:11:04 UTC (rev 17586)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/tools/Tools.java 2009-09-30
17:16:01 UTC (rev 17587)
@@ -25,6 +25,7 @@
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.engine.SessionImplementor;
+import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.Session;
import java.util.*;
@@ -66,20 +67,21 @@
return session.getEntityPersister(null, obj).getIdentifier(obj,
session.getEntityMode());
}
- public static Object getTargetFromProxy(HibernateProxy proxy) {
- if (!proxy.getHibernateLazyInitializer().isUninitialized()) {
- return proxy.getHibernateLazyInitializer().getImplementation();
- }
+ public static Object getTargetFromProxy(SessionFactoryImplementor
sessionFactoryImplementor, HibernateProxy proxy) {
+ if (!proxy.getHibernateLazyInitializer().isUninitialized()) {
+ return proxy.getHibernateLazyInitializer().getImplementation();
+ }
- Session tempSession =
proxy.getHibernateLazyInitializer().getSession().getFactory().openTemporarySession();
- try {
- proxy.getHibernateLazyInitializer().setSession((SessionImplementor) tempSession);
- proxy.getHibernateLazyInitializer().initialize();
- return proxy.getHibernateLazyInitializer().getImplementation();
- } finally {
- tempSession.close();
- }
- }
+ SessionImplementor sessionImplementor =
proxy.getHibernateLazyInitializer().getSession();
+ Session tempSession = sessionImplementor==null ?
sessionFactoryImplementor.openTemporarySession() :
sessionImplementor.getFactory().openTemporarySession();
+ try {
+ proxy.getHibernateLazyInitializer().setSession((SessionImplementor)
tempSession);
+ proxy.getHibernateLazyInitializer().initialize();
+ return proxy.getHibernateLazyInitializer().getImplementation();
+ } finally {
+ tempSession.close();
+ }
+ }
public static boolean objectsEqual(Object obj1, Object obj2) {
if (obj1 == null) {
@@ -113,7 +115,7 @@
}
/**
- * Transforms a list of arbitrary elements to a list of index-element pairs.
+ * Transforms a list of arbitrary elements to a list of index-element pairs.
* @param list List to transform.
* @return A list of pairs: ((0, element_at_index_0), (1, element_at_index_1), ...)
*/
Show replies by date