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


Reply via email to