3030 */
3131public final class DataLocation {
3232
33+ /** shared empty instance */
34+ final static DataLocation EMPTY = new DataLocation (null );
35+
3336 /* members */
3437 /** associated Rule */
3538 private final Rule rule ;
@@ -51,6 +54,20 @@ public final class DataLocation {
5154 this .rule = rule ;
5255 }
5356
57+ /**
58+ * Clear the temporary state (cleanup)
59+ */
60+ void cleanup () {
61+ if (!isEmpty ()) {
62+ values .trimToSize ();
63+ limits .trimToSize ();
64+ expecteds .trimToSize ();
65+ rows .trimToSize ();
66+ cols .trimToSize ();
67+ details .trimToSize ();
68+ }
69+ }
70+
5471 /* ------------ ALL HELPER FOR DIFFERENT ARGUMENTS --------------- */
5572 // Value
5673 // 1
@@ -385,14 +402,15 @@ private void setValues(Object value, Object limit, String expected, Integer row,
385402
386403 private void ensureCapacity () {
387404 if (isEmpty ()) {
388- values = new ArrayList <Object >(10 );
389- limits = new ArrayList <Object >(10 );
390- expecteds = new ArrayList <String >(10 );
391- rows = new ArrayList <Integer >(10 );
392- cols = new ArrayList <Integer >(10 );
393- details = new ArrayList <String >(10 );
405+ final int newSize = 10 ;
406+ values = new ArrayList <Object >(newSize );
407+ limits = new ArrayList <Object >(newSize );
408+ expecteds = new ArrayList <String >(newSize );
409+ rows = new ArrayList <Integer >(newSize );
410+ cols = new ArrayList <Integer >(newSize );
411+ details = new ArrayList <String >(newSize );
394412 } else {
395- final int newSize = values .size () + 1 ;
413+ final int newSize = values .size () * 2 ;
396414 values .ensureCapacity (newSize );
397415 limits .ensureCapacity (newSize );
398416 expecteds .ensureCapacity (newSize );
@@ -553,27 +571,27 @@ public StringBuilder toXML(final StringBuilder sb, final String ruleMessage, fin
553571 sb .append (" <data>\n " );
554572 sb .append (" <value>" ).append (getValues ().get (i )).append ("</value>\n " );
555573
556- Object limit = getLimits ().get (i );
574+ final Object limit = getLimits ().get (i );
557575 if (limit != null ) {
558576 sb .append (" <limit>" ).append (limit ).append ("</limit>\n " );
559577 }
560578
561- String expected = getExpecteds ().get (i );
579+ final String expected = getExpecteds ().get (i );
562580 if (expected != null ) {
563581 sb .append (" <expected>" ).append (expected ).append ("</expected>\n " );
564582 }
565583
566- Integer row = getRows ().get (i );
584+ final Integer row = getRows ().get (i );
567585 if (row != null ) {
568586 sb .append (" <row>" ).append (row ).append ("</row>\n " );
569587 }
570588
571- Integer col = getCols ().get (i );
589+ final Integer col = getCols ().get (i );
572590 if (col != null ) {
573591 sb .append (" <col>" ).append (col ).append ("</col>\n " );
574592 }
575593
576- String detail = getDetails ().get (i );
594+ final String detail = getDetails ().get (i );
577595 if (detail != null ) {
578596 sb .append (" <detail>" ).append (detail ).append ("</detail>\n " );
579597 }
0 commit comments