Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-15271

In java 6 bandana manager fails to store an ArrayList object that was initialised as Arrays.asList("foo")

    XMLWordPrintable

Details

    Description

      When using java6 and trying to persist a list that was initialized as Arrays.asList("foo") you get following exception (SAL cdk tests hit this problem. ):

      com.thoughtworks.xstream.converters.reflection.ObjectAccessException: Invalid final field java.util.Arrays$ArrayList.a
              at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.validateFieldAccess(PureJavaReflectionProvider.java:150)
              at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:105)
              at com.thoughtworks.xstream.converters.reflection.ReflectionConverter.marshal(ReflectionConverter.java:44)
              at com.thoughtworks.xstream.core.ReferenceByXPathMarshaller.convertAnother(ReferenceByXPathMarshaller.java:36)
              at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:46)
              at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.marshal(ReferenceByXPathMarshallingStrategy.java:17)
              at com.thoughtworks.xstream.XStream.marshal(XStream.java:489)
              at com.thoughtworks.xstream.XStream.marshal(XStream.java:479)
              at com.thoughtworks.xstream.XStream.toXML(XStream.java:464)
              at com.atlassian.confluence.setup.bandana.ConfluenceDaoBandanaPersister.store(ConfluenceDaoBandanaPersister.java:65)
              at sun.reflect.GeneratedMethodAccessor376.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
              at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
              at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
              at $Proxy9.store(Unknown Source)
              at com.atlassian.confluence.setup.bandana.ConfluenceCachingBandanaPersister.store(ConfluenceCachingBandanaPersister.java:92)
              at com.atlassian.bandana.DefaultBandanaManager.setValue(DefaultBandanaManager.java:74)
              ...
      

      xstream seems to be incapable of dealing of some 1.6 object. We are on version 1.1.1 which is pre - jre1.6. The earliest version that is 'buildable' with 1.6 is 1.2.2 - see http://xstream.codehaus.org/changes.html

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              akazatchkov Anatoli
              Votes:
              4 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated: