=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/AbstractNode.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/AbstractNode.java 2015-03-11 08:04:51 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/AbstractNode.java 2015-07-16 06:54:49 +0000 @@ -60,6 +60,8 @@ protected List children = Lists.newArrayList(); + protected ImmutableList sortedChildren; + protected Property property; protected AbstractNode( String name, NodeType nodeType ) @@ -188,6 +190,8 @@ children.add( child ); ((AbstractNode) child).setParent( this ); + sortedChildren = null; + return child; } @@ -198,6 +202,8 @@ { children.remove( child ); } + + sortedChildren = null; } @Override @@ -212,9 +218,14 @@ @Override public List getChildren() { - List clone = Lists.newArrayList( children ); - Collections.sort( clone, OrderComparator.INSTANCE ); - return ImmutableList.copyOf( clone ); + if ( sortedChildren == null ) + { + List clone = Lists.newArrayList( children ); + Collections.sort( clone, OrderComparator.INSTANCE ); + sortedChildren = ImmutableList.copyOf( clone ); + } + + return sortedChildren; } @Override === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/node/AbstractNodeSerializer.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/node/AbstractNodeSerializer.java 2015-07-16 06:27:31 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/node/AbstractNodeSerializer.java 2015-07-16 06:54:49 +0000 @@ -115,10 +115,10 @@ for ( Node node : complexNode.getChildren() ) { dispatcher( node ); - flushStream(); } endWriteComplexNode( complexNode ); + flushStream(); } protected abstract void endWriteComplexNode( ComplexNode complexNode ) throws Exception; @@ -137,10 +137,10 @@ for ( Node node : collectionNode.getChildren() ) { dispatcher( node ); - flushStream(); } endWriteCollectionNode( collectionNode ); + flushStream(); } protected abstract void endWriteCollectionNode( CollectionNode collectionNode ) throws Exception;