jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sandrine Raffalli (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-2046) No Filter on method finalize for Proxy
Date Sat, 28 Mar 2009 22:32:50 GMT
No Filter on method finalize for Proxy

                 Key: JCR-2046
                 URL: https://issues.apache.org/jira/browse/JCR-2046
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-ocm
            Reporter: Sandrine Raffalli

The InvocationHandler of a proxy is called when the method finalize() is called, that means
the proxy loads the object when the GC tries to delete it.
Adding a CallbackFilter to the Enhancer could be a solution to avoid that :

public class ProxyManagerImpl implements ProxyManager {

	private static final CallbackFilter FINALIZE_FILTER = new CallbackFilter() {
		public int accept(Method method) {
			if (method.getParameterTypes().length == 0 && method.getName().equals("finalize"))
				return 1;
			} else {
				return 0;
	public Object createBeanProxy(BeanConverter beanConverter, String path, Session session,
Node parentNode, BeanDescriptor beanDescriptor,
			ClassDescriptor beanClassDescriptor, Class beanClass, Object parent) {
		return Enhancer.create(beanClass, getInterfaces(beanClass), FINALIZE_FILTER, new Callback[]
{ loader });
	public Object createCollectionProxy(Session session, CollectionConverter collectionConverter,
Node parentNode,
			CollectionDescriptor collectionDescriptor, Class collectionFieldClass) {
		return Enhancer.create(collectionFieldClass, getInterfaces(collectionFieldClass), FINALIZE_FILTER,
new Callback[] { loader });


Maybe you may consider other methods such as "equals", "hashCode"...

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message