1616package software .amazon .awssdk .codegen .poet .client .specs ;
1717
1818import static software .amazon .awssdk .codegen .model .intermediate .Protocol .AWS_JSON ;
19+ import static javax .lang .model .element .Modifier .PRIVATE ;
1920
2021import com .squareup .javapoet .ClassName ;
2122import com .squareup .javapoet .CodeBlock ;
@@ -167,12 +168,18 @@ public Optional<CodeBlock> errorResponseHandler(OperationModel opModel) {
167168 String protocolFactory = protocolFactoryLiteral (model , opModel );
168169
169170 CodeBlock .Builder builder = CodeBlock .builder ();
170- ParameterizedTypeName metadataMapperType = ParameterizedTypeName .get (
171- ClassName .get (Function .class ),
172- ClassName .get (String .class ),
173- ParameterizedTypeName .get (Optional .class , ExceptionMetadata .class ));
174171
175- builder .add ("\n $T exceptionMetadataMapper = errorCode -> {\n " , metadataMapperType );
172+ builder .add ("$T<$T> errorResponseHandler = createErrorResponseHandler($L, operationMetadata, this::exceptionMetadataMapper);" ,
173+ HttpResponseHandler .class , AwsServiceException .class , protocolFactory );
174+
175+ return Optional .of (builder .build ());
176+ }
177+
178+ @ Override
179+ public Optional <MethodSpec > errorResponseHandlerProvider (IntermediateModel model ) {
180+
181+ CodeBlock .Builder builder = CodeBlock .builder ();
182+
176183 builder .add ("if (errorCode == null) {\n " );
177184 builder .add ("return $T.empty();\n " , Optional .class );
178185 builder .add ("}\n " );
@@ -194,12 +201,13 @@ public Optional<CodeBlock> errorResponseHandler(OperationModel opModel) {
194201
195202 builder .add ("default: return $T.empty();\n " , Optional .class );
196203 builder .add ("}\n " );
197- builder .add ("};\n " );
198-
199- builder .add ("$T<$T> errorResponseHandler = createErrorResponseHandler($L, operationMetadata, exceptionMetadataMapper);" ,
200- HttpResponseHandler .class , AwsServiceException .class , protocolFactory );
201204
202- return Optional .of (builder .build ());
205+ MethodSpec .Builder method = MethodSpec .methodBuilder ("exceptionMetadataMapper" )
206+ .addModifiers (PRIVATE )
207+ .addParameter (String .class , "errorCode" )
208+ .addCode (builder .build ())
209+ .returns (ParameterizedTypeName .get (Optional .class , ExceptionMetadata .class ));
210+ return Optional .of (method .build ());
203211 }
204212
205213 @ Override
0 commit comments