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
This commit is contained in:
Britt Park
2006-12-05 16:28:58 +00:00
parent e1c6452bc2
commit 331bba1249
2 changed files with 23 additions and 12 deletions

View File

@@ -42,12 +42,10 @@ import org.alfresco.service.cmr.avm.LayeringDescriptor;
import org.alfresco.service.cmr.avm.VersionDescriptor; import org.alfresco.service.cmr.avm.VersionDescriptor;
import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentReader; 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.cmr.repository.ContentWriter;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.hibernate.proxy.HibernateProxy;
/** /**
* This or AVMStore are * This or AVMStore are
@@ -1108,11 +1106,6 @@ public class AVMRepository
private AVMStore getAVMStoreByName(String name) private AVMStore getAVMStoreByName(String name)
{ {
AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByName(name); AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByName(name);
if (store instanceof HibernateProxy)
{
store =
(AVMStore)((HibernateProxy)store).getHibernateLazyInitializer().getImplementation();
}
return store; return store;
} }

View File

@@ -17,6 +17,7 @@
package org.alfresco.repo.avm.hibernate; package org.alfresco.repo.avm.hibernate;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; 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.AVMStoreDAO;
import org.alfresco.repo.avm.AVMStoreImpl; import org.alfresco.repo.avm.AVMStoreImpl;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.proxy.HibernateProxy;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/** /**
@@ -75,7 +77,13 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
public List<AVMStore> getAll() public List<AVMStore> getAll()
{ {
Query query = getSession().createQuery("from AVMStoreImpl r"); Query query = getSession().createQuery("from AVMStoreImpl r");
return (List<AVMStore>)query.list(); List<AVMStore> result = (List<AVMStore>)query.list();
List<AVMStore> ret = new ArrayList<AVMStore>(result.size());
for (AVMStore store : result)
{
ret.add(forceNonLazy(store));
}
return ret;
} }
/** /**
@@ -92,7 +100,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
} }
if (id != null) 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 " + Query query = getSession().createQuery("from AVMStoreImpl st " +
"where st.name = :name"); "where st.name = :name");
@@ -105,7 +113,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
fNameCache.put(name, result.getId()); 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 " + Query query = getSession().createQuery("from AVMStoreImpl st " +
"where st.root = :root"); "where st.root = :root");
query.setEntity("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) 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) /* (non-Javadoc)
@@ -145,4 +154,13 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
{ {
fNameCache.clear(); fNameCache.clear();
} }
private AVMStore forceNonLazy(AVMStore store)
{
if (store instanceof HibernateProxy)
{
return (AVMStore)((HibernateProxy)store).getHibernateLazyInitializer().getImplementation();
}
return store;
}
} }