Skip to content

Commit d6ea2d4

Browse files
committed
Call setter with Collection argument only after Collection has been
fully populated This closes #266
1 parent 43aa6f4 commit d6ea2d4

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

modello-plugins/modello-plugin-xpp3/src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3ReaderGenerator.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,8 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
715715

716716
String adder;
717717

718+
boolean requireSetter = false;
719+
718720
if ( wrappedItems )
719721
{
720722
sc.add( tagComparison );
@@ -735,7 +737,7 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
735737
}
736738
sc.add( associationType + " " + associationName + " = " + defaultValue + ";" );
737739

738-
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
740+
requireSetter = true;
739741

740742
adder = associationName + ".add";
741743
}
@@ -789,8 +791,8 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
789791

790792
sc.add( associationName + " = " + defaultValue + ";" );
791793

792-
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
793-
794+
requireSetter = true;
795+
794796
sc.unindent();
795797
sc.add( "}" );
796798

@@ -848,15 +850,14 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
848850

849851
sc.unindent();
850852
sc.add( "}" );
851-
852-
sc.unindent();
853-
sc.add( "}" );
854853
}
855-
else
854+
if (requireSetter)
856855
{
857-
sc.unindent();
858-
sc.add( "}" );
856+
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
859857
}
858+
sc.unindent();
859+
sc.add( "}" );
860+
860861
}
861862
else
862863
{

0 commit comments

Comments
 (0)