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