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

com.yahoo.jdisc.http.ServerConfig Maven / Gradle / Ivy

/**
 * This file is generated from a config definition file.
 * ------------   D O   N O T   E D I T !   ------------
 */

package com.yahoo.jdisc.http;

import java.util.*;
import java.nio.file.Path;
import edu.umd.cs.findbugs.annotations.NonNull;
import com.yahoo.config.*;

/**
 * This class represents the root node of server
 *
 * Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
 */
public final class ServerConfig extends ConfigInstance {

  public final static String CONFIG_DEF_MD5 = "0e952cdd916b35a41f35eb50c41074e4";
  public final static String CONFIG_DEF_NAME = "server";
  public final static String CONFIG_DEF_NAMESPACE = "jdisc.http";
  public final static String CONFIG_DEF_VERSION = "";
  public final static String[] CONFIG_DEF_SCHEMA = {
    "namespace=jdisc.http",
    "developerMode bool default=false",
    "responseCompressionLevel int default=6",
    "httpKeepAliveEnabled bool default=true",
    "maxKeepAliveRequests int default=0",
    "removeRawPostBodyForWwwUrlEncodedPost bool default=false",
    "filter[].id string",
    "filter[].binding string",
    "maxWorkerThreads int default = 200",
    "jmx.enabled bool default = false",
    "jmx.listenPort int default = 1099"
  };

  public static String getDefMd5()       { return CONFIG_DEF_MD5; }
  public static String getDefName()      { return CONFIG_DEF_NAME; }
  public static String getDefNamespace() { return CONFIG_DEF_NAMESPACE; }
  public static String getDefVersion()   { return CONFIG_DEF_VERSION; }

  public interface Producer extends ConfigInstance.Producer {
    void getConfig(Builder builder);
  }

  public static class Builder implements ConfigInstance.Builder {
    private Set __uninitialized = new HashSet();

    private Boolean developerMode = null;
    private Integer responseCompressionLevel = null;
    private Boolean httpKeepAliveEnabled = null;
    private Integer maxKeepAliveRequests = null;
    private Boolean removeRawPostBodyForWwwUrlEncodedPost = null;
    public List filter = new ArrayList<>();
    private Integer maxWorkerThreads = null;
    public Jmx.Builder jmx = new Jmx.Builder();

    public Builder() { }

    public Builder(ServerConfig config) {
      developerMode(config.developerMode());
      responseCompressionLevel(config.responseCompressionLevel());
      httpKeepAliveEnabled(config.httpKeepAliveEnabled());
      maxKeepAliveRequests(config.maxKeepAliveRequests());
      removeRawPostBodyForWwwUrlEncodedPost(config.removeRawPostBodyForWwwUrlEncodedPost());
      for (Filter f : config.filter()) {
        filter(new Filter.Builder(f));
      }
      maxWorkerThreads(config.maxWorkerThreads());
      jmx(new Jmx.Builder(config.jmx()));
    }

    private Builder override(Builder __superior) {
      if (__superior.developerMode != null)
        developerMode(__superior.developerMode);
      if (__superior.responseCompressionLevel != null)
        responseCompressionLevel(__superior.responseCompressionLevel);
      if (__superior.httpKeepAliveEnabled != null)
        httpKeepAliveEnabled(__superior.httpKeepAliveEnabled);
      if (__superior.maxKeepAliveRequests != null)
        maxKeepAliveRequests(__superior.maxKeepAliveRequests);
      if (__superior.removeRawPostBodyForWwwUrlEncodedPost != null)
        removeRawPostBodyForWwwUrlEncodedPost(__superior.removeRawPostBodyForWwwUrlEncodedPost);
      if (!__superior.filter.isEmpty())
        filter.addAll(__superior.filter);
      if (__superior.maxWorkerThreads != null)
        maxWorkerThreads(__superior.maxWorkerThreads);
      jmx(jmx.override(__superior.jmx));
      return this;
    }

    public Builder developerMode(boolean __value) {
      developerMode = __value;
      return this;
    }

    private Builder developerMode(String __value) {
      return developerMode(Boolean.valueOf(__value));
    }

    public Builder responseCompressionLevel(int __value) {
      responseCompressionLevel = __value;
      return this;
    }

    private Builder responseCompressionLevel(String __value) {
      return responseCompressionLevel(Integer.valueOf(__value));
    }

    public Builder httpKeepAliveEnabled(boolean __value) {
      httpKeepAliveEnabled = __value;
      return this;
    }

    private Builder httpKeepAliveEnabled(String __value) {
      return httpKeepAliveEnabled(Boolean.valueOf(__value));
    }

    public Builder maxKeepAliveRequests(int __value) {
      maxKeepAliveRequests = __value;
      return this;
    }

    private Builder maxKeepAliveRequests(String __value) {
      return maxKeepAliveRequests(Integer.valueOf(__value));
    }

    public Builder removeRawPostBodyForWwwUrlEncodedPost(boolean __value) {
      removeRawPostBodyForWwwUrlEncodedPost = __value;
      return this;
    }

    private Builder removeRawPostBodyForWwwUrlEncodedPost(String __value) {
      return removeRawPostBodyForWwwUrlEncodedPost(Boolean.valueOf(__value));
    }

    /**
     * Add the given builder to this builder's list of Filter builders
     * @param __builder a builder
     * @return this builder
     */
    public Builder filter(Filter.Builder __builder) {
      filter.add(__builder);
      return this;
    }

    /**
     * Set the given list as this builder's list of Filter builders
     * @param __builders a list of builders
     * @return this builder
     */
    public Builder filter(List __builders) {
      filter = __builders;
      return this;
    }

    public Builder maxWorkerThreads(int __value) {
      maxWorkerThreads = __value;
      return this;
    }

    private Builder maxWorkerThreads(String __value) {
      return maxWorkerThreads(Integer.valueOf(__value));
    }

    public Builder jmx(Jmx.Builder __builder) {
      jmx = __builder;
      return this;
    }

    @java.lang.Override
    public final boolean dispatchGetConfig(ConfigInstance.Producer producer) {
      if (producer instanceof Producer) {
        ((Producer)producer).getConfig(this);
        return true;
      }
      return false;
    }

    @java.lang.Override
    public final String getDefMd5()       { return CONFIG_DEF_MD5; }
    @java.lang.Override
    public final String getDefName()      { return CONFIG_DEF_NAME; }
    @java.lang.Override
    public final String getDefNamespace() { return CONFIG_DEF_NAMESPACE; }
  }

  // Whether to enable developer mode, where stack traces etc are visible in response bodies.
  private final BooleanNode developerMode;
  // The gzip compression level to use, if compression is enabled in a request.
  private final IntegerNode responseCompressionLevel;
  // Whether to enable HTTP keep-alive for requests that support this.
  private final BooleanNode httpKeepAliveEnabled;
  // Maximum number of request per http connection before server will hangup.
  // Naming taken from apache http server.
  // 0 means never hangup.
  private final IntegerNode maxKeepAliveRequests;
  // Whether the request body of POSTed forms should be removed (form parameters are available as request parameters).
  private final BooleanNode removeRawPostBodyForWwwUrlEncodedPost;
  private final InnerNodeVector filter;
  // Max number of threads in pool
  private final IntegerNode maxWorkerThreads;
  private final Jmx jmx;

  public ServerConfig(Builder builder) {
    this(builder, true);
  }

  private ServerConfig(Builder builder, boolean throwIfUninitialized) {
    if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
      throw new IllegalArgumentException("The following builder parameters for " +
          "server must be initialized: " + builder.__uninitialized);

    developerMode = (builder.developerMode == null) ?
        new BooleanNode(false) : new BooleanNode(builder.developerMode);
    responseCompressionLevel = (builder.responseCompressionLevel == null) ?
        new IntegerNode(6) : new IntegerNode(builder.responseCompressionLevel);
    httpKeepAliveEnabled = (builder.httpKeepAliveEnabled == null) ?
        new BooleanNode(true) : new BooleanNode(builder.httpKeepAliveEnabled);
    maxKeepAliveRequests = (builder.maxKeepAliveRequests == null) ?
        new IntegerNode(0) : new IntegerNode(builder.maxKeepAliveRequests);
    removeRawPostBodyForWwwUrlEncodedPost = (builder.removeRawPostBodyForWwwUrlEncodedPost == null) ?
        new BooleanNode(false) : new BooleanNode(builder.removeRawPostBodyForWwwUrlEncodedPost);
    filter = Filter.createVector(builder.filter);
    maxWorkerThreads = (builder.maxWorkerThreads == null) ?
        new IntegerNode(200) : new IntegerNode(builder.maxWorkerThreads);
    jmx = new Jmx(builder.jmx, throwIfUninitialized);
  }

  /**
   * @return server.developerMode
   */
  public boolean developerMode() {
    return developerMode.value();
  }

  /**
   * @return server.responseCompressionLevel
   */
  public int responseCompressionLevel() {
    return responseCompressionLevel.value();
  }

  /**
   * @return server.httpKeepAliveEnabled
   */
  public boolean httpKeepAliveEnabled() {
    return httpKeepAliveEnabled.value();
  }

  /**
   * @return server.maxKeepAliveRequests
   */
  public int maxKeepAliveRequests() {
    return maxKeepAliveRequests.value();
  }

  /**
   * @return server.removeRawPostBodyForWwwUrlEncodedPost
   */
  public boolean removeRawPostBodyForWwwUrlEncodedPost() {
    return removeRawPostBodyForWwwUrlEncodedPost.value();
  }

  /**
   * @return server.filter[]
   */
  public List filter() {
    return filter;
  }

  /**
   * @param i the index of the value to return
   * @return server.filter[]
   */
  public Filter filter(int i) {
    return filter.get(i);
  }

  /**
   * @return server.maxWorkerThreads
   */
  public int maxWorkerThreads() {
    return maxWorkerThreads.value();
  }

  /**
   * @return server.jmx
   */
  public Jmx jmx() {
    return jmx;
  }

  private ChangesRequiringRestart getChangesRequiringRestart(ServerConfig newConfig) {
    ChangesRequiringRestart changes = new ChangesRequiringRestart("server");
    return changes;
  }

  private static boolean containsFieldsFlaggedWithRestart() {
    return false;
  }

  /**
   * This class represents server.filter[]
   */
  public final static class Filter extends InnerNode { 

    public static class Builder implements ConfigBuilder {
      private Set __uninitialized = new HashSet(Arrays.asList(
        "id",
        "binding"
        ));

      private String id = null;
      private String binding = null;

      public Builder() { }

      public Builder(Filter config) {
        id(config.id());
        binding(config.binding());
      }

      private Builder override(Builder __superior) {
        if (__superior.id != null)
          id(__superior.id);
        if (__superior.binding != null)
          binding(__superior.binding);
        return this;
      }

      public Builder id(String __value) {
      if (__value == null) throw new IllegalArgumentException("Null value is not allowed.");
        id = __value;
        __uninitialized.remove("id");
        return this;
      }


      public Builder binding(String __value) {
      if (__value == null) throw new IllegalArgumentException("Null value is not allowed.");
        binding = __value;
        __uninitialized.remove("binding");
        return this;
      }

    }

    // The component ID of a filter
    private final StringNode id;
    // The binding of a filter
    private final StringNode binding;

    /**
     * @deprecated  Not for public use.
     *    Does not check for uninitialized fields.
     *    Replaced by Filter(Builder)
     */
    @Deprecated
    private Filter() {
      this(new Builder(), false);
    }

    public Filter(Builder builder) {
      this(builder, true);
    }

    private Filter(Builder builder, boolean throwIfUninitialized) {
      if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
        throw new IllegalArgumentException("The following builder parameters for " +
            "server.filter[] must be initialized: " + builder.__uninitialized);

      id = (builder.id == null) ?
          new StringNode() : new StringNode(builder.id);
      binding = (builder.binding == null) ?
          new StringNode() : new StringNode(builder.binding);
    }

    /**
     * @return server.filter[].id
     */
    public String id() {
      return id.value();
    }

    /**
     * @return server.filter[].binding
     */
    public String binding() {
      return binding.value();
    }

    private ChangesRequiringRestart getChangesRequiringRestart(Filter newConfig) {
      ChangesRequiringRestart changes = new ChangesRequiringRestart("filter");
      return changes;
    }

    private static InnerNodeVector createVector(List builders) {
        List elems = new ArrayList<>();
        for (Builder b : builders) {
            elems.add(new Filter(b));
        }
        return new InnerNodeVector(elems, new Filter());
    }
  }

  /**
   * This class represents server.jmx
   */
  public final static class Jmx extends InnerNode { 

    public static class Builder implements ConfigBuilder {
      private Set __uninitialized = new HashSet();

      private Boolean enabled = null;
      private Integer listenPort = null;

      public Builder() { }

      public Builder(Jmx config) {
        enabled(config.enabled());
        listenPort(config.listenPort());
      }

      private Builder override(Builder __superior) {
        if (__superior.enabled != null)
          enabled(__superior.enabled);
        if (__superior.listenPort != null)
          listenPort(__superior.listenPort);
        return this;
      }

      public Builder enabled(boolean __value) {
        enabled = __value;
        return this;
      }

      private Builder enabled(String __value) {
        return enabled(Boolean.valueOf(__value));
      }

      public Builder listenPort(int __value) {
        listenPort = __value;
        return this;
      }

      private Builder listenPort(String __value) {
        return listenPort(Integer.valueOf(__value));
      }
    }

    // Enable embedded JMX server. Note: only accessible through the loopback interface.
    private final BooleanNode enabled;
    // Listen port for the JMX server.
    private final IntegerNode listenPort;

    public Jmx(Builder builder) {
      this(builder, true);
    }

    private Jmx(Builder builder, boolean throwIfUninitialized) {
      if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
        throw new IllegalArgumentException("The following builder parameters for " +
            "server.jmx must be initialized: " + builder.__uninitialized);

      enabled = (builder.enabled == null) ?
          new BooleanNode(false) : new BooleanNode(builder.enabled);
      listenPort = (builder.listenPort == null) ?
          new IntegerNode(1099) : new IntegerNode(builder.listenPort);
    }

    /**
     * @return server.jmx.enabled
     */
    public boolean enabled() {
      return enabled.value();
    }

    /**
     * @return server.jmx.listenPort
     */
    public int listenPort() {
      return listenPort.value();
    }

    private ChangesRequiringRestart getChangesRequiringRestart(Jmx newConfig) {
      ChangesRequiringRestart changes = new ChangesRequiringRestart("jmx");
      return changes;
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy