geronimo-xbean-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher Sahnwaldt (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (XBEAN-95) register PropertyEditors locally, not globally
Date Thu, 18 Oct 2007 13:14:50 GMT

    [ https://issues.apache.org/jira/browse/XBEAN-95?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12535910
] 

jcsahnwaldt edited comment on XBEAN-95 at 10/18/07 6:13 AM:
----------------------------------------------------------------------

I think this can be fixed by a small change in org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.registerCustomEditors().

Current version (SVN revision 517909):

{code}
/**
 * Registers whatever custom editors we need
 */
public static void registerCustomEditors(DefaultListableBeanFactory beanFactory) {
  PropertyEditorHelper.registerCustomEditors();
}
{code}

New version:

{code}
/**
 * Registers whatever custom editors we need
 */
public static void registerCustomEditors(DefaultListableBeanFactory beanFactory) {
  PropertyEditorRegistrar registrar =
  new PropertyEditorRegistrar()
  {
    public void registerCustomEditors( PropertyEditorRegistry registry )
    {
      registry.registerCustomEditor(java.io.File.class, new org.apache.xbean.spring.context.impl.FileEditor());
      registry.registerCustomEditor(java.net.URI.class, new org.apache.xbean.spring.context.impl.URIEditor());
      registry.registerCustomEditor(java.util.Date.class, new org.apache.xbean.spring.context.impl.DateEditor());
      registry.registerCustomEditor(javax.management.ObjectName.class, new org.apache.xbean.spring.context.impl.ObjectNameEditor());
    }
  };

  beanFactory.addPropertyEditorRegistrar(registrar);
}
{code}

Two new imports are needed:

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;


PropertyEditorHelper.registerCustomEditors() is also called by the static initializers of
org.apache.xbean.spring.context.v2c.XBeanBeanDefinitionParserDelegate and org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.
I would think that these static initializers can simply be removed, but I'm not sure.

      was (Author: jcsahnwaldt):
    I think this can be fixed by a small change in org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.registerCustomEditors().

Current version (SVN revision 517909):

/**
 * Registers whatever custom editors we need
 */
public static void registerCustomEditors(DefaultListableBeanFactory beanFactory) {
  PropertyEditorHelper.registerCustomEditors();
}

New version:

/**
 * Registers whatever custom editors we need
 */
public static void registerCustomEditors(DefaultListableBeanFactory beanFactory) {
  PropertyEditorRegistrar registrar =
  new PropertyEditorRegistrar()
  {
    public void registerCustomEditors( PropertyEditorRegistry registry )
    {
      registry.registerCustomEditor(java.io.File.class, new org.apache.xbean.spring.context.impl.FileEditor());
      registry.registerCustomEditor(java.net.URI.class, new org.apache.xbean.spring.context.impl.URIEditor());
      registry.registerCustomEditor(java.util.Date.class, new org.apache.xbean.spring.context.impl.DateEditor());
      registry.registerCustomEditor(javax.management.ObjectName.class, new org.apache.xbean.spring.context.impl.ObjectNameEditor());
    }
  };

  beanFactory.addPropertyEditorRegistrar(registrar);
}

Two new imports are needed:

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;


PropertyEditorHelper.registerCustomEditors() is also called by the static initializers of
org.apache.xbean.spring.context.v2c.XBeanBeanDefinitionParserDelegate and org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.
I would think that these static initializers can simply be removed, but I'm not sure.
  
> register PropertyEditors locally, not globally
> ----------------------------------------------
>
>                 Key: XBEAN-95
>                 URL: https://issues.apache.org/jira/browse/XBEAN-95
>             Project: XBean
>          Issue Type: Bug
>          Components: spring
>            Reporter: Christopher Sahnwaldt
>
> org.apache.xbean.spring.context.impl.PropertyEditorHelper registers PropertyEditors for
java.io.File, java.net.URI, java.util.Date and javax.management.ObjectName using java.beans.PropertyEditorManager.registerEditor().
This may cause problems:
> - the usual problem with global variables: another application running in the same JVM
may register a different PropertyEditor, e.g. for java.util.Date. One of the applications
will then use the PropertyEditor that was registered by the other application. Which application
'wins' depends on the order of the calls to PropertyEditorManager.registerEditor().
> - java.beans.PropertyEditorManager keeps a strong reference to the registered classes.
The xbean PropertyEditor classes are loaded by the context class loader, (which is the webapp
class loader if running in Tomcat etc.). The class java.beans.PropertyEditorManager is loaded
by the bootstrap class loader. This means that there is a strong reference from the bootstrap
class loader to the webapp class loader, which means that the webapp class loader cannot be
unloaded, which means that the webapp is not garbage collected when it is undeployed.

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


Mime
View raw message