All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.wrzasq.commons.aws.lambda.HeartbeatHandler Maven / Gradle / Ivy

/*
 * This file is part of the pl.wrzasq.commons.
 *
 * @license http://mit-license.org/ The MIT license
 * @copyright 2019 © by Rafał Wrzeszcz - Wrzasq.pl.
 */

package pl.wrzasq.commons.aws.lambda;

import java.io.OutputStream;

import com.fasterxml.jackson.databind.JsonNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Handler that reacts to pre-warm case.
 */
public class HeartbeatHandler implements MultiHandler.CallHandler {
    /**
     * Default field name for discriminator.
     */
    private static final String DEFAULT_DISCRIMINATOR_FIELD = "wrzasqpl:event:type";

    /**
     * Default field value for discriminator.
     */
    private static final String DEFAULT_DISCRIMINATOR_VALUE = "wrzasqpl:heartbeat";

    /**
     * Logger.
     */
    private Logger logger = LoggerFactory.getLogger(HeartbeatHandler.class);

    /**
     * Event field name to rely on.
     */
    private String discriminatorField;

    /**
     * Event field value to rely on.
     */
    private String discriminatorValue;

    /**
     * Initializes handler for specific setup.
     *
     * @param discriminatorField Event field name.
     * @param discriminatorValue Expected field value.
     */
    public HeartbeatHandler(String discriminatorField, String discriminatorValue) {
        this.discriminatorField = discriminatorField;
        this.discriminatorValue = discriminatorValue;
    }

    /**
     * Initializes handler with default values.
     */
    public HeartbeatHandler() {
        this(HeartbeatHandler.DEFAULT_DISCRIMINATOR_FIELD, HeartbeatHandler.DEFAULT_DISCRIMINATOR_VALUE);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean handle(JsonNode input, OutputStream output) {
        if (input.has(this.discriminatorField)
            && input.get(this.discriminatorField).asText().equals(this.discriminatorValue)
        ) {
            this.logger.info("Heartbeat.");
            return true;
        } else {
            return false;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy