Skip to content

Commit c5ef5eb

Browse files
kwinhboutemy
authored andcommitted
Call setter with Collection argument only after Collection has been
fully populated This closes #266
1 parent 33c8523 commit c5ef5eb

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

+10-9
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,8 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
718718

719719
String adder;
720720

721+
boolean requireSetter = false;
722+
721723
if ( wrappedItems )
722724
{
723725
sc.add( tagComparison );
@@ -738,7 +740,7 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
738740
}
739741
sc.add( associationType + " " + associationName + " = " + defaultValue + ";" );
740742

741-
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
743+
requireSetter = true;
742744

743745
adder = associationName + ".add";
744746
}
@@ -792,8 +794,8 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
792794

793795
sc.add( associationName + " = " + defaultValue + ";" );
794796

795-
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
796-
797+
requireSetter = true;
798+
797799
sc.unindent();
798800
sc.add( "}" );
799801

@@ -851,15 +853,14 @@ private void processField( ModelField field, XmlFieldMetadata xmlFieldMetadata,
851853

852854
sc.unindent();
853855
sc.add( "}" );
854-
855-
sc.unindent();
856-
sc.add( "}" );
857856
}
858-
else
857+
if (requireSetter)
859858
{
860-
sc.unindent();
861-
sc.add( "}" );
859+
sc.add( objectName + ".set" + capFieldName + "( " + associationName + " );" );
862860
}
861+
sc.unindent();
862+
sc.add( "}" );
863+
863864
}
864865
else
865866
{

0 commit comments

Comments
 (0)