Thanks for sharing ;-)
Ihar Tsimoshka wrote:
> I've created this annotation:
>
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.TYPE)
> public @interface XMLSequence {
> String[] value();
> }
>
> This is example of use (write before class definition):
> @XMLSequence({
> "accountIds",
> "addresses",
> "birthDate",
> "contact",
> "name",
> "status",
> })
>
> Then I've overrided FieldKeySorter :
>
> public class SequenceFieldKeySorter implements FieldKeySorter {
> @Override
> public Map sort(final Class type, final Map keyedByFieldKey) {
> Annotation sequence = type.getAnnotation(XMLSequence.class);
> if (sequence != null) {
> final String[] fieldsOrder = ((XMLSequence) sequence).value();
> Map result = new OrderRetainingMap();
> Set<Map.Entry<FieldKey, Field>> fields =
> keyedByFieldKey.entrySet(); for (String fieldName :
> fieldsOrder) {
> if (fieldName != null) {
> for (Map.Entry<FieldKey, Field> fieldEntry : fields) {
> if
> (fieldName.equals(fieldEntry.getKey().getFieldName())) {
> result.put(fieldEntry.getKey(),
> fieldEntry.getValue());
> }
> }
> }
> }
> return result;
> } else {
> return keyedByFieldKey;
> }
>
> }
> }
>
> And this is how I've instanced XStream:
> XStream x = new XStream(new PureJavaReflectionProvider(new
> FieldDictionary(new SequenceFieldKeySorter())));
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email