From 331bba1249cad4073075349201d6162f8f651ac2 Mon Sep 17 00:00:00 2001 From: Britt Park Date: Tue, 5 Dec 2006 16:28:58 +0000 Subject: [PATCH] Cleaned up and generalized purported EnhancerByCGLIB workaround. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4523 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/avm/AVMRepository.java | 7 ----- .../avm/hibernate/AVMStoreDAOHibernate.java | 28 +++++++++++++++---- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/source/java/org/alfresco/repo/avm/AVMRepository.java b/source/java/org/alfresco/repo/avm/AVMRepository.java index 77184f2587..453f7caaa3 100644 --- a/source/java/org/alfresco/repo/avm/AVMRepository.java +++ b/source/java/org/alfresco/repo/avm/AVMRepository.java @@ -42,12 +42,10 @@ import org.alfresco.service.cmr.avm.LayeringDescriptor; import org.alfresco.service.cmr.avm.VersionDescriptor; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentReader; -import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.namespace.QName; import org.alfresco.util.Pair; import org.apache.log4j.Logger; -import org.hibernate.proxy.HibernateProxy; /** * This or AVMStore are @@ -1108,11 +1106,6 @@ public class AVMRepository private AVMStore getAVMStoreByName(String name) { AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByName(name); - if (store instanceof HibernateProxy) - { - store = - (AVMStore)((HibernateProxy)store).getHibernateLazyInitializer().getImplementation(); - } return store; } diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVMStoreDAOHibernate.java b/source/java/org/alfresco/repo/avm/hibernate/AVMStoreDAOHibernate.java index c207f1e5c8..83cf14c4d0 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVMStoreDAOHibernate.java +++ b/source/java/org/alfresco/repo/avm/hibernate/AVMStoreDAOHibernate.java @@ -17,6 +17,7 @@ package org.alfresco.repo.avm.hibernate; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import org.alfresco.repo.avm.AVMStore; import org.alfresco.repo.avm.AVMStoreDAO; import org.alfresco.repo.avm.AVMStoreImpl; import org.hibernate.Query; +import org.hibernate.proxy.HibernateProxy; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** @@ -75,7 +77,13 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements public List getAll() { Query query = getSession().createQuery("from AVMStoreImpl r"); - return (List)query.list(); + List result = (List)query.list(); + List ret = new ArrayList(result.size()); + for (AVMStore store : result) + { + ret.add(forceNonLazy(store)); + } + return ret; } /** @@ -92,7 +100,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements } if (id != null) { - return (AVMStore)getSession().get(AVMStoreImpl.class, id); + return forceNonLazy((AVMStore)getSession().get(AVMStoreImpl.class, id)); } Query query = getSession().createQuery("from AVMStoreImpl st " + "where st.name = :name"); @@ -105,7 +113,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements fNameCache.put(name, result.getId()); } } - return result; + return forceNonLazy(result); } /** @@ -118,7 +126,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements Query query = getSession().createQuery("from AVMStoreImpl st " + "where st.root = :root"); query.setEntity("root", root); - return (AVMStore)query.uniqueResult(); + return forceNonLazy((AVMStore)query.uniqueResult()); } /** @@ -135,7 +143,8 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements */ public AVMStore getByID(long id) { - return (AVMStore)getSession().get(AVMStoreImpl.class, id); + AVMStore result = (AVMStore)getSession().get(AVMStoreImpl.class, id); + return forceNonLazy(result); } /* (non-Javadoc) @@ -145,4 +154,13 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements { fNameCache.clear(); } + + private AVMStore forceNonLazy(AVMStore store) + { + if (store instanceof HibernateProxy) + { + return (AVMStore)((HibernateProxy)store).getHibernateLazyInitializer().getImplementation(); + } + return store; + } }