I get this error when trying to add a task to a task list.
Cause:
com.thoughtworks.xstream.converters.ConversionException: Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList ---- Debugging information ---- required-type : java.util.Collections$SynchronizedRandomAccessList cause-message : Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList class : com.atlassian.confluence.extra.dynamictasklist.model.TaskList message : Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList line number : 3 path : /com.atlassian.confluence.extra.dynamictasklist.model.TaskList/tasks cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException -------------------------------
com.thoughtworks.xstream.converters.ConversionException: Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList
---- Debugging information ----
required-type : java.util.Collections$SynchronizedRandomAccessList
cause-message : Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList
class : com.atlassian.confluence.extra.dynamictasklist.model.TaskList
message : Cannot construct java.util.Collections$SynchronizedRandomAccessList: java.util.Collections$SynchronizedRandomAccessList
line number : 3
path : /com.atlassian.confluence.extra.dynamictasklist.model.TaskList/tasks
cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
- is duplicated by
-
CONFSERVER-5314 Incompatibility between dynamic tasklist entries created on JDK 1.4 and JDK 5
-
- Closed
-
-
CONFSERVER-8235 Dynamic Task List macro throws ObjectAccessException: Invalid final field java.util.Collections$SynchronizedCollection
-
- Closed
-
-
CONFSERVER-8229 Dynamic Tasklist broken with JDK6
-
- Closed
-
I've changed the dynamic task list model to not persist the internal java.util.Collections implementation of a synchronized list. This list is marked as transient and is constructed as necessary on creation and deserialization.
When conversion exceptions are thrown we now attempt to convert the task to the new model via a quick SAX converter. When this process is finished a new task list is returned. When lists are saved, they will be persisted in the new, much simpler task list model which will deserialize cleanly without any conversion necessary.