XStream
  1. XStream
  2. XSTR-509

Rare NPE in Sun14ReflectionProvider

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Duplicate
    • Affects Version/s: 1.x Maintenance
    • Fix Version/s: 1.x Maintenance
    • Component/s: Core
    • Labels:
      None
    • JDK version and platform:
      Sun 1.4.2_17 for Windows

      Description

      Under unfavorable circumstances method getMungedConstructor in Sun14ReflectionProvider class might return null, what leads to NullPointerException in method newInstance. It occurs when GC has cleared the WeakReference. See stack trace below:

      ...
      Caused by: java.lang.NullPointerException
      at com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider.newInstance(Sun14ReflectionProvider.java:74)
      at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.instantiateNewInstance(AbstractReflectionConverter.java:2
      79)
      at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:149)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81)
      ... 49 more

      This happens as well with current SVN release (rev 1488)

      Proposed fix:

      private Constructor getMungedConstructor(Class type) throws NoSuchMethodException {
      final WeakReference ref = (WeakReference)constructorCache.get(type);
      Constructor ctor = null;
      if(ref != null)

      { ctor = (Constructor) ref.get(); }

      if (ctor == null)

      { ctor = reflectionFactory.newConstructorForSerialization(type, Object.class.getDeclaredConstructor(new Class[0])); constructorCache.put(type, new WeakReference(ctor)); }

      return ctor;
      }

        Issue Links

          People

          • Assignee:
            Jörg Schaible
            Reporter:
            Frank-Michael Jaeschke
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: