@@ -76,13 +76,10 @@ public void encode(final BsonWriter writer, final T value, final EncoderContext
76
76
writer .writeStartDocument ();
77
77
78
78
encodeIdProperty (writer , value , encoderContext , classModel .getIdPropertyModelHolder ());
79
-
80
- if (classModel .useDiscriminator ()) {
81
- writer .writeString (classModel .getDiscriminatorKey (), classModel .getDiscriminator ());
82
- }
79
+ encodeDiscriminatorProperty (writer );
83
80
84
81
for (PropertyModel <?> propertyModel : classModel .getPropertyModels ()) {
85
- if (propertyModel . equals ( classModel . getIdPropertyModel () )) {
82
+ if (idProperty ( propertyModel ) || discriminatorProperty ( propertyModel )) {
86
83
continue ;
87
84
}
88
85
encodeProperty (writer , value , encoderContext , propertyModel );
@@ -140,6 +137,23 @@ private <S> void encodeIdProperty(final BsonWriter writer, final T instance, fin
140
137
}
141
138
}
142
139
140
+ private boolean idProperty (final PropertyModel <?> propertyModel ) {
141
+ return propertyModel .equals (classModel .getIdPropertyModel ());
142
+ }
143
+
144
+ private void encodeDiscriminatorProperty (final BsonWriter writer ) {
145
+ if (classModel .useDiscriminator ()) {
146
+ writer .writeString (classModel .getDiscriminatorKey (), classModel .getDiscriminator ());
147
+ }
148
+ }
149
+
150
+ private boolean discriminatorProperty (final PropertyModel <?> propertyModel ) {
151
+ if (classModel .useDiscriminator ()) {
152
+ return propertyModel .getReadName ().equals (classModel .getDiscriminatorKey ());
153
+ }
154
+ return false ;
155
+ }
156
+
143
157
private <S > void encodeProperty (final BsonWriter writer , final T instance , final EncoderContext encoderContext ,
144
158
final PropertyModel <S > propertyModel ) {
145
159
if (propertyModel != null && propertyModel .isReadable ()) {
0 commit comments