class Pac4jHTTPPostDecoder extends AbstractPac4jDecoder {

    /**
     * <p>Constructor for Pac4jHTTPPostDecoder.</p>
     *
     * @param context a {@link CallContext} object
     */
    public Pac4jHTTPPostDecoder(final CallContext context) {
        super(context);
    }

    /** {@inheritDoc} */
    @Override
    protected void doDecode() throws MessageDecodingException {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override
    public String getBindingURI(final SAML2MessageContext messageContext) {
        if (messageContext.getSOAP11Context().getEnvelope() != null) {
            return SAMLConstants.SAML2_SOAP11_BINDING_URI;
        } else {
            return SAMLConstants.SAML2_POST_BINDING_URI;
        }
    }
}

        val messageContext = new SAML2MessageContext(callContext);

        if (WebContextHelper.isPost(callContext.webContext())) {
            val relayState = this.callContext.webContext().getRequestParameter("RelayState").orElse(null);
            LOGGER.debug("Decoded SAML relay state of: {}", relayState);
            SAMLBindingSupport.setRelayState(messageContext.getMessageContext(), relayState);
            val base64DecodedMessage = this.getBase64DecodedMessage();
            val xmlObject = this.unmarshallMessage(new ByteArrayInputStream(base64DecodedMessage));
            SAML2Utils.logProtocolMessage(xmlObject);
            final SAMLObject inboundMessage;
            if (xmlObject instanceof Envelope soapMessage) {
                messageContext.getSOAP11Context().setEnvelope(soapMessage);
                try {
                    new SAMLSOAPDecoderBodyHandler().invoke(messageContext.getMessageContext());
                } catch (final MessageHandlerException e) {
                    throw new MessageDecodingException("Cannot decode SOAP envelope", e);
                }
            } else {
                inboundMessage = (SAMLObject) xmlObject;
                messageContext.getMessageContext().setMessage(inboundMessage);
            }
            LOGGER.debug("Decoded SAML message");
            this.populateBindingContext(messageContext);
            this.setMessageContext(messageContext.getMessageContext());

        } else {
            throw new MessageDecodingException("This message decoder only supports the HTTP POST method");
        }
    
<methods>public non-sealed void <init>() ,public abstract java.lang.String getBindingURI(org.pac4j.saml.context.SAML2MessageContext) ,public void setParserPool(net.shibboleth.shared.xml.ParserPool) <variables>static final java.lang.String[] SAML_PARAMETERS,protected final non-sealed CallContext callContext,protected net.shibboleth.shared.xml.ParserPool parserPool