Skip to content

Writers don't sort members from super to this #71

Open
@michael-o

Description

@michael-o

Have a model which references a superclass:
https://github.com/apache/maven/blob/72688805c4f95f8ab4ca9ab2ac2cd114667790c9/maven-settings/src/main/mdo/settings.mdo#L506-L508
The generated SettingsXpp3Writer sorts:

    private void writeServer( Server server, String tagName, XmlSerializer serializer )
        throws java.io.IOException
    {
        serializer.startTag( NAMESPACE, tagName );
        if ( server.getUsername() != null )
        {
            serializer.startTag( NAMESPACE, "username" ).text( server.getUsername() ).endTag( NAMESPACE, "username" );
        }
        if ( server.getPassword() != null )
        {
            serializer.startTag( NAMESPACE, "password" ).text( server.getPassword() ).endTag( NAMESPACE, "password" );
        }
        if ( server.getPrivateKey() != null )
        {
            serializer.startTag( NAMESPACE, "privateKey" ).text( server.getPrivateKey() ).endTag( NAMESPACE, "privateKey" );
        }
        if ( server.getPassphrase() != null )
        {
            serializer.startTag( NAMESPACE, "passphrase" ).text( server.getPassphrase() ).endTag( NAMESPACE, "passphrase" );
        }
        if ( server.getFilePermissions() != null )
        {
            serializer.startTag( NAMESPACE, "filePermissions" ).text( server.getFilePermissions() ).endTag( NAMESPACE, "filePermissions" );
        }
        if ( server.getDirectoryPermissions() != null )
        {
            serializer.startTag( NAMESPACE, "directoryPermissions" ).text( server.getDirectoryPermissions() ).endTag( NAMESPACE, "directoryPermissions" );
        }
        if ( server.getConfiguration() != null )
        {
            ((Xpp3Dom) server.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
        }
        if ( ( server.getId() != null ) && !server.getId().equals( "default" ) )
        {
            serializer.startTag( NAMESPACE, "id" ).text( server.getId() ).endTag( NAMESPACE, "id" );
        }
        serializer.endTag( NAMESPACE, tagName );
    } //-- void writeServer( Server, String, XmlSerializer )

All members from the super class at the end which makes the output look awkward. Super elements come last while the should be first.

Here is a sample output:

  <servers>
    <server>
      <username>maven</username>
      <password>***</password>
      <id>repoman</id>
    </server>
  </servers>

Expected output is:

super
super
..
super
this.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions