package fr.openwide.core.wicket.more.util.convert; import org.apache.wicket.IConverterLocator; import org.apache.wicket.util.convert.IConverter; import org.hibernate.proxy.HibernateProxy; /** * Allows to get converters even for hibernate-proxyfied objects. */ public class HibernateProxyAwareConverterLocator implements IConverterLocator { private static final long serialVersionUID = -8086786353007241785L; private final IConverterLocator delegate; public HibernateProxyAwareConverterLocator(IConverterLocator delegate) { this.delegate = delegate; } @Override @SuppressWarnings("unchecked") public <C> IConverter<C> getConverter(Class<C> type) { if (HibernateProxy.class.isAssignableFrom(type)) { return (IConverter<C>) delegate.getConverter(type.getSuperclass()); // NOSONAR } else { return delegate.getConverter(type); } } }