@@ -85,8 +85,8 @@ final class StructureGenerator implements Runnable {
8585 required .add (member );
8686 }
8787 }
88- this .requiredMembers = filterMessageMembers (required );
89- this .optionalMembers = filterMessageMembers (optional );
88+ this .requiredMembers = filterPropertyMembers (required );
89+ this .optionalMembers = filterPropertyMembers (optional );
9090 this .recursiveShapes = recursiveShapes ;
9191 }
9292
@@ -242,18 +242,23 @@ private void writeClassDocs(boolean isError) {
242242 }
243243 }
244244
245- private List <MemberShape > filterMessageMembers (List <MemberShape > members ) {
246- // Only apply this to structures that are errors.
245+ private List <MemberShape > filterPropertyMembers (List <MemberShape > members ) {
247246 if (!shape .hasTrait (ErrorTrait .class )) {
248- return members ;
247+ return members . stream (). filter ( this :: filterEventStreamMember ). toList () ;
249248 }
250249 // We replace modeled message members with a static `message` member. Serialization
251250 // and deserialization will handle assigning them properly.
252251 return members .stream ()
253252 .filter (member -> !isErrorMessage (model , member ))
253+ .filter (this ::filterEventStreamMember )
254254 .collect (Collectors .toList ());
255255 }
256256
257+ private boolean filterEventStreamMember (MemberShape member ) {
258+ var target = model .expectShape (member .getTarget ());
259+ return !(target .isUnionShape () && target .hasTrait (StreamingTrait .class ));
260+ }
261+
257262 private String getDefaultValue (PythonWriter writer , MemberShape member ) {
258263 // The default value is defined in the model is a exposed as generic
259264 // json, so we need to convert it to the proper type based on the target.
0 commit comments