From: <fc...@us...> - 2007-09-03 09:11:25
|
Revision: 427 http://openutils.svn.sourceforge.net/openutils/?rev=427&view=rev Author: fcarone Date: 2007-09-03 01:05:11 -0700 (Mon, 03 Sep 2007) Log Message: ----------- getThis method added to catch the proxy again. This change is needed for security reason, since after the first proxy method is called, the target is directly invoked (and we lose control). Modified Paths: -------------- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java Modified: trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java =================================================================== --- trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2007-08-31 17:03:23 UTC (rev 426) +++ trunk/openutils-bshd5/src/main/java/it/openutils/dao/hibernate/HibernateDAOImpl.java 2007-09-03 08:05:11 UTC (rev 427) @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; +import org.aopalliance.aop.AspectException; import org.hibernate.Criteria; import org.hibernate.Hibernate; import org.hibernate.HibernateException; @@ -19,6 +20,7 @@ import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.type.Type; +import org.springframework.aop.framework.AopContext; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; @@ -145,24 +147,7 @@ @SuppressWarnings("unchecked") public List<T> findAll(final Order[] orderProperties) { - - return (List<T>) getHibernateTemplate().execute(new HibernateCallback() - { - - public Object doInHibernate(Session ses) throws HibernateException - { - Criteria crit = ses.createCriteria(getReferenceClass()); - if (null != orderProperties) - { - for (int j = 0; j < orderProperties.length; j++) - { - crit.addOrder(orderProperties[j]); - } - - } - return crit.list(); - } - }); + return getThis().findAll(orderProperties, null); } /** @@ -196,6 +181,7 @@ } }); } + /** * {@inheritDoc} */ @@ -342,7 +328,7 @@ */ public T findFilteredFirst(final T filter, List<Criterion> criteria) { - return getFirstInCollection(findFiltered(filter, null, getDefaultFilterMetadata(), 1, 0, criteria)); + return getFirstInCollection(findFiltered(filter, null, getDefaultFilterMetadata(), 1, 0, criteria)); } /** @@ -354,6 +340,24 @@ } /** + * @return + * This is needed as for http://opensource.atlassian.com/projects/spring/browse/SPR-2226 + */ + @SuppressWarnings("unchecked") + private HibernateDAO<T, K> getThis() + { + try + { + return (HibernateDAO<T, K>) AopContext.currentProxy(); + } + catch (AspectException exc) + { + logger.debug("Not running inside an AOP proxy, so no proxy can be returned: " + exc.getMessage()); + return this; + } + } + + /** * {@inheritDoc} */ public List<T> findFiltered(T filter, Order[] orderProperties) @@ -393,7 +397,7 @@ public List<T> findFiltered(final T filter, final Order[] customOrder, final Map<String, FilterMetadata> metadata, final int maxResults, final int page) { - return findFiltered(filter, customOrder, metadata, maxResults, page, null); + return getThis().findFiltered(filter, customOrder, metadata, maxResults, page, null); } /** @@ -435,6 +439,7 @@ { return (List< ? >) getHibernateTemplate().execute(new HibernateCallback() { + public Object doInHibernate(Session ses) throws HibernateException { Query q = ses.getNamedQuery(name); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |