@SuppressWarnings("unchecked")
    protected Flash getFlashCookie(HttpServerExchange exchange) {
        Flash flash = Flash.create();
        
        final String cookieValue = getCookieValue(exchange, this.config.getFlashCookieName());
        if (StringUtils.isNotBlank(cookieValue)) {
            try {
                String decryptedValue = Application.getInstance(Crypto.class).decrypt(cookieValue, this.config.getFlashCookieEncryptionKey());
                JwtConsumer jwtConsumer = new JwtConsumerBuilder()
                    .setVerificationKey(new HmacKey(this.config.getFlashCookieSignKey().getBytes(StandardCharsets.UTF_8)))
                    .setJwsAlgorithmConstraints(new AlgorithmConstraints(ConstraintType.WHITELIST, AlgorithmIdentifiers.HMAC_SHA512))
                    .build();
                
                JwtClaims jwtClaims = jwtConsumer.processToClaims(decryptedValue);
                LocalDateTime expires = LocalDateTime.parse(jwtClaims.getClaimValue(ClaimKey.EXPIRES.toString(), String.class), DateUtils.formatter);
                
                if (expires.isAfter(LocalDateTime.now())) {
                    if (jwtClaims.hasClaim(ClaimKey.FORM.toString())) {
                        this.form = CodecUtils.deserializeFromBase64(jwtClaims.getClaimValue(ClaimKey.FORM.toString(), String.class));
                    } 
                    
                    flash = Flash.create()
                            .withContent(MangooUtils.copyMap(jwtClaims.getClaimValue(ClaimKey.DATA.toString(), Map.class))).setDiscard(true);
                }
            } catch (MalformedClaimException | InvalidJwtException  e) {
                LOG.error("Failed to parse flash cookie", e);
                flash.invalidate();
            } 
        }
        
        return flash;
    }
@ SuppressWarnings ( "unchecked" ) protected Flash getFlashCookie ( HttpServerExchange exchange ) { Flash flash = Flash . create ( ) ; final String cookieValue = getCookieValue ( exchange , this . config . getFlashCookieName ( ) ) ; if ( StringUtils . isNotBlank ( cookieValue ) ) { try { String decryptedValue = Application . getInstance ( Crypto . class ) . decrypt ( cookieValue , this . config . getFlashCookieEncryptionKey ( ) ) ; JwtConsumer jwtConsumer = new JwtConsumerBuilder ( ) . setVerificationKey ( new HmacKey ( this . config . getFlashCookieSignKey ( ) . getBytes ( StandardCharsets . UTF_8 ) ) ) . setJwsAlgorithmConstraints ( new AlgorithmConstraints ( ConstraintType . WHITELIST , AlgorithmIdentifiers . HMAC_SHA512 ) ) . build ( ) ; JwtClaims jwtClaims = jwtConsumer . processToClaims ( decryptedValue ) ; LocalDateTime expires = LocalDateTime . parse ( jwtClaims . getClaimValue ( ClaimKey . EXPIRES . toString ( ) , String . class ) , DateUtils . formatter ) ; if ( expires . isAfter ( LocalDateTime . now ( ) ) ) { if ( jwtClaims . hasClaim ( ClaimKey . FORM . toString ( ) ) ) { this . form = CodecUtils . deserializeFromBase64 ( jwtClaims . getClaimValue ( ClaimKey . FORM . toString ( ) , String . class ) ) ; } flash = Flash . create ( ) . withContent ( MangooUtils . copyMap ( jwtClaims . getClaimValue ( ClaimKey . DATA . toString ( ) , Map . class ) ) ) . setDiscard ( true ) ; } } catch ( MalformedClaimException | InvalidJwtException e ) { LOG . error ( "Failed to parse flash cookie" , e ) ; flash . invalidate ( ) ; } } return flash ; }
Retrieves the flash cookie from the current

@param exchange The Undertow HttpServerExchange