private CodeBlock acceptor()

in codegen/src/main/java/software/amazon/awssdk/codegen/poet/waiters/BaseWaiterClassSpec.java [450:508]


    private CodeBlock acceptor(Acceptor acceptor) {
        CodeBlock.Builder result = CodeBlock.builder();

        switch (acceptor.getState()) {
            case "success":
                result.add("$T.success", WaiterAcceptor.class);
                break;
            case "failure":
                result.add("$T.error", WaiterAcceptor.class);
                break;
            case "retry":
                result.add("$T.retry", WaiterAcceptor.class);
                break;
            default:
                throw new IllegalArgumentException("Unsupported acceptor state: " + acceptor.getState());
        }

        switch (acceptor.getMatcher()) {
            case "path":
                result.add("OnResponseAcceptor(");
                result.add(pathAcceptorBody(acceptor));
                addFailureMessageForPathMatcher(acceptor, result);
                result.add(")");
                break;
            case "pathAll":
                result.add("OnResponseAcceptor(");
                result.add(pathAllAcceptorBody(acceptor));
                addFailureMessageForPathMatcher(acceptor, result);
                result.add(")");
                break;
            case "pathAny":
                result.add("OnResponseAcceptor(");
                result.add(pathAnyAcceptorBody(acceptor));
                addFailureMessageForPathMatcher(acceptor, result);
                result.add(")");
                break;
            case "status":
                // Note: Ignores the result we've built so far because this uses a special acceptor implementation.
                int expected = Integer.parseInt(acceptor.getExpected().asText());
                return CodeBlock.of("new $T($L, $T.$L)", poetExtensions.waitersRuntimeClass()
                                                                       .nestedClass("ResponseStatusAcceptor"),
                                    expected, WaiterState.class, waiterState(acceptor));
            case "error":
                if (acceptor.getExpected() instanceof JrsBoolean) {
                    result.add(booleanValueErrorBlock(acceptor, Boolean.parseBoolean(acceptor.getExpected().asText())).build());
                } else {
                    result.add("OnExceptionAcceptor(");
                    result.add(errorAcceptorBody(acceptor));
                    addAcceptorFailureMessage(result, acceptor, () -> String.format(FAILURE_MESSAGE_FORMAT_FOR_ERROR_MATCHER,
                                                                                    expectedValue(acceptor)));
                    result.add(")");
                }
                break;
            default:
                throw new IllegalArgumentException("Unsupported acceptor matcher: " + acceptor.getMatcher());
        }

        return result.build();
    }