silentbalanceyh/vertx-zero

View on GitHub
vertx-gaia/vertx-co/src/main/jib/io/vertx/up/uca/stable/ForbiddenInsurer.java

Summary

Maintainability
A
0 mins
Test Coverage
package io.vertx.up.uca.stable;

import io.horizon.exception.ProgramException;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.up.exception.daemon.ForbiddenFieldException;
import io.vertx.up.fn.Fn;
import io.vertx.up.util.Ut;

public class ForbiddenInsurer extends AbstractInsurer {
    /**
     * @param data input data that should be verified.
     * @param rule rule config data
     *
     * @throws ProgramException Insure exception
     */
    @Override
    public void flumen(final JsonObject data, final JsonObject rule) throws ProgramException {
        // 1. If rule is null, skip
        Fn.bugAt(() -> {
            // 2. Extract rule from config.
            if (rule.containsKey(Rules.FORBIDDEN)) {
                final JsonArray fields = Ut.toJArray(rule.getValue(Rules.FORBIDDEN));
                Fn.bugIt(fields, String.class, (field, index) -> {
                    // 3. Check if data contains field.
                    Fn.outBug(data.containsKey(field), this.getLogger(),
                        ForbiddenFieldException.class,
                        this.getClass(), data, field);
                });
            }
        }, rule, data);
    }
}