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

io.vertx.up.uca.options.DynamicVisitor Maven / Gradle / Ivy

The newest version!
package io.vertx.up.uca.options;

import io.horizon.eon.VMessage;
import io.horizon.eon.VValue;
import io.horizon.eon.em.container.ServerType;
import io.horizon.exception.ProgramException;
import io.vertx.core.http.HttpServerOptions;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.up.atom.Ruler;
import io.vertx.up.eon.KName;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * @author lang
 * Http options for dynamic extension.
 */
public class DynamicVisitor extends HttpServerVisitor {

    private transient ServerType type;

    @Override
    public ConcurrentMap visit(final String... key)
        throws ProgramException {
        final JsonArray serverData = this.serverPre(1, key);
        this.type = ServerType.valueOf(key[VValue.IDX]);
        this.logger().info(VMessage.Visitor.V_BEFORE, KName.SERVER, this.type, serverData.encode());
        Ruler.verify(KName.SERVER, serverData);
        final ConcurrentMap map =
            new ConcurrentHashMap<>();
        this.extract(serverData, map);
        if (!map.isEmpty()) {
            this.logger().info(VMessage.Visitor.V_AFTER, KName.SERVER, this.type, map.keySet());
        }
        return map;
    }

    @Override
    public boolean isServer(final JsonObject item) {
        return null != this.type && this.type.match(item.getString(KName.TYPE));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy