[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlbeans-dev
Subject: [jira] Resolved: (XMLBEANS-252) List<Type> returned by generated
From: "Radu Preotiuc-Pietro (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date: 2008-04-07 22:53:25
Message-ID: 2040210046.1207608805588.JavaMail.jira () brutus
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/XMLBEANS-252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]
Radu Preotiuc-Pietro resolved XMLBEANS-252.
-------------------------------------------
Resolution: Won't Fix
I am afraid we can't fix this one.
In XMLBeans, an XmlObject can be seen as a pointer to a place in the document. When \
one does
List l = parent.getFooList();
XmlObject o = l.get(1),
the elements in the list are pointers to the XML elements in the document. When one \
sets the content of the first element to some value, say
parent.setFooArray(1, o2)
then o will point to an element whose content has now changed (you don't even need an \
array to observe this). In particular, in the sort case if you have
XmlObject o1 = l.get(1);
XmlObject o2 = l.get(2);
l.set(1, o2);
after these operations, o1 has the same contents as o2 and if one wants a swap, then \
one needs to do:
XmlObject o1 = l.get(1).copy();
XmlObject o2 = l.get(2);
l.set(1, o2);
l.set(2, o1);
I know that it is kind of unintuitive, but this is how it always worked. I think \
between a change in behavior that will potentially cause pain to people who want to \
upgrade and depend (perhaps unknowkingly) on the existing behavior and a simple \
workaround for people who need this functionality, I would choose the latter.
So if one needs to sort the array "for read", one can do
List l2 = new ArrayList(l);
If one wants to sort the elements in the document, then one would do
List l2 = new ArrayList(l.size());
for (int i=0; i<l.size(); i++)
l2.add(l.get(i).copy());
Collections.sort(l2);
parent.setFooArray(l2.toArray());
> List<Type> returned by generated getFooList() is not sortable
> -------------------------------------------------------------
>
> Key: XMLBEANS-252
> URL: https://issues.apache.org/jira/browse/XMLBEANS-252
> Project: XMLBeans
> Issue Type: Bug
> Affects Versions: Version 2.1
> Environment: Win XP SP2, JRE 1.5.0_06-b05, XMLBeans 2.1.0
> Reporter: Erik Godding Boye
> Priority: Critical
>
> I am trying to sort the list returned by the generated getFooList() [multiple \
> occurrence method] using java.util.Collections#sort(java.util.List<Type>, \
> java.util.Comparator<Type>). The elements are not sorted, and no exception is \
> thrown. I would expect either, but I do not see any reason for the list to be \
> unmodifiable (and thus throwing exception when trying to sort it). A simple \
> workaround is to create a new list supplying the original list (from the generated \
> method) in the constructor. The new list is sortable without any problems.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic