cdmlib-model/pom.xml -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/aspectj/PropertyChangeAspect.aj -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/datagenerator/TaxonGenerator.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/hibernate/HibernateProxyHelper.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/CdmNamespacePrefixMapper.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/DateTimeAdapter.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/jaxb/FormattedText.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ILoadableTerm.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IMultiLanguageText.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IParsable.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IProxyHelper.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IReferencedEntity.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IRelated.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PartialUserType.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PersistentMultiLanguageText.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/PersistentMultiLanguageTextType.java -text
-cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ProxyHelperHibernateImpl.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ReferencedEntityBase.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipBase.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/RelationshipTermBase.java -text
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
\r
-package eu.etaxonomy.cdm.model.common;\r
+package eu.etaxonomy.cdm.hibernate;\r
\r
import org.apache.log4j.Logger;\r
import org.hibernate.proxy.HibernateProxy;\r
* @created 03.03.2009\r
* @version 1.0\r
*/\r
-public class ProxyHelperHibernateImpl implements IProxyHelper {\r
+public class HibernateProxyHelper {\r
@SuppressWarnings("unused")\r
- private static final Logger logger = Logger.getLogger(ProxyHelperHibernateImpl.class);\r
+ private static final Logger logger = Logger.getLogger(HibernateProxyHelper.class);\r
\r
\r
// ************************** Hibernate proxies *******************/\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.model.common.IProxyHelper#deproxy(java.lang.Object, java.lang.Class)\r
*/\r
- public <T> T deproxy(Object object, Class<T> clazz) throws ClassCastException {\r
+ public static <T> T deproxy(Object object, Class<T> clazz) throws ClassCastException {\r
if (object instanceof HibernateProxy) {\r
return clazz.cast(((HibernateProxy) object).getHibernateLazyInitializer().getImplementation());\r
} else {\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.model.common.IProxyHelper#isInstanceOf(java.lang.Object, java.lang.Class)\r
*/\r
- public boolean isInstanceOf(Object object, Class clazz) throws ClassCastException {\r
+ public static boolean isInstanceOf(Object object, Class clazz) throws ClassCastException {\r
if (clazz == null){\r
return false;\r
}\r
import org.hibernate.search.annotations.DocumentId;
import org.joda.time.DateTime;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.jaxb.DateTimeAdapter;
import eu.etaxonomy.cdm.jaxb.UUIDAdapter;
import eu.etaxonomy.cdm.model.agent.Person;
@SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(CdmBase.class);
- private static IProxyHelper proxyHelper = new ProxyHelperHibernateImpl();
-
@Transient
@XmlTransient
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
* @return
* @throws ClassCastException
*/
- public <T extends CdmBase> T deproxy(Class<T> clazz) throws ClassCastException {
- return proxyHelper.deproxy(this, clazz);
+ //non-static does not work because javassist already unwrapps the proxy before calling the method
+ public static <T extends CdmBase> T deproxy(Object object, Class<T> clazz) throws ClassCastException {
+ return HibernateProxyHelper.deproxy(object, clazz);
}
public boolean isInstanceOf(Class<? extends CdmBase> clazz) throws ClassCastException {
- return proxyHelper.isInstanceOf(this, clazz);
+ return HibernateProxyHelper.isInstanceOf(this, clazz);
}
// ************* Object overrides *************************/
+++ /dev/null
-package eu.etaxonomy.cdm.model.common;\r
-\r
-public interface IProxyHelper {\r
-\r
- // ************************** Hibernate proxies *******************/\r
- /**\r
- * These methods are present due to HHH-1517 - that in a one-to-many\r
- * relationship with a superclass at the "one" end, the proxy created\r
- * by hibernate is the superclass, and not the subclass, resulting in\r
- * a classcastexception when you try to cast it.\r
- *\r
- * Hopefully this will be resolved through improvements with the creation of\r
- * proxy objects by hibernate and the following methods will become redundant,\r
- * but for the time being . . .\r
- * @param <T>\r
- * @param object\r
- * @param clazz\r
- * @return\r
- * @throws ClassCastException\r
- */\r
- public <T> T deproxy(Object object, Class<T> clazz)\r
- throws ClassCastException;\r
-\r
- public boolean isInstanceOf(Object object, Class clazz)\r
- throws ClassCastException;\r
-\r
-}
\ No newline at end of file