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

com.yahoo.container.core.QrLoggingConfig Maven / Gradle / Ivy

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

package com.yahoo.container.core;

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 qr-logging
 *
 * Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
 */
public final class QrLoggingConfig extends ConfigInstance {

  public final static String CONFIG_DEF_MD5 = "7675f2fe68a77c6f59ef345903728e9c";
  public final static String CONFIG_DEF_NAME = "qr-logging";
  public final static String CONFIG_DEF_NAMESPACE = "container.core";
  public final static String CONFIG_DEF_VERSION = "";
  public final static String[] CONFIG_DEF_SCHEMA = {
    "namespace=container.core",
    "logger string default=\"com.yahoo\"",
    "speciallog[].name string",
    "speciallog[].type string",
    "speciallog[].filehandler.name string default=\"\"",
    "speciallog[].filehandler.pattern string default=\".%Y%m%d%H%M%S\"",
    "speciallog[].filehandler.rotation string default=\"0 60 ...\"",
    "speciallog[].filehandler.rotatescheme string default=\"date\"",
    "speciallog[].filehandler.symlink string default=\"\"",
    "speciallog[].cachehandler.name string default=\"\"",
    "speciallog[].cachehandler.size int default=1000"
  };

  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 String logger = null;
    public List speciallog = new ArrayList<>();

    public Builder() { }

    public Builder(QrLoggingConfig config) {
      logger(config.logger());
      for (Speciallog s : config.speciallog()) {
        speciallog(new Speciallog.Builder(s));
      }
    }

    private Builder override(Builder __superior) {
      if (__superior.logger != null)
        logger(__superior.logger);
      if (!__superior.speciallog.isEmpty())
        speciallog.addAll(__superior.speciallog);
      return this;
    }

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


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

    /**
     * Set the given list as this builder's list of Speciallog builders
     * @param __builders a list of builders
     * @return this builder
     */
    public Builder speciallog(List __builders) {
      speciallog = __builders;
      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; }
  }

  private final StringNode logger;
  private final InnerNodeVector speciallog;

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

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

    logger = (builder.logger == null) ?
        new StringNode("com.yahoo") : new StringNode(builder.logger);
    speciallog = Speciallog.createVector(builder.speciallog);
  }

  /**
   * @return qr-logging.logger
   */
  public String logger() {
    return logger.value();
  }

  /**
   * @return qr-logging.speciallog[]
   */
  public List speciallog() {
    return speciallog;
  }

  /**
   * @param i the index of the value to return
   * @return qr-logging.speciallog[]
   */
  public Speciallog speciallog(int i) {
    return speciallog.get(i);
  }

  private ChangesRequiringRestart getChangesRequiringRestart(QrLoggingConfig newConfig) {
    ChangesRequiringRestart changes = new ChangesRequiringRestart("qr-logging");
    return changes;
  }

  private static boolean containsFieldsFlaggedWithRestart() {
    return false;
  }

  /**
   * This class represents qr-logging.speciallog[]
   */
  public final static class Speciallog extends InnerNode { 

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

      private String name = null;
      private String type = null;
      public Filehandler.Builder filehandler = new Filehandler.Builder();
      public Cachehandler.Builder cachehandler = new Cachehandler.Builder();

      public Builder() { }

      public Builder(Speciallog config) {
        name(config.name());
        type(config.type());
        filehandler(new Filehandler.Builder(config.filehandler()));
        cachehandler(new Cachehandler.Builder(config.cachehandler()));
      }

      private Builder override(Builder __superior) {
        if (__superior.name != null)
          name(__superior.name);
        if (__superior.type != null)
          type(__superior.type);
        filehandler(filehandler.override(__superior.filehandler));
        cachehandler(cachehandler.override(__superior.cachehandler));
        return this;
      }

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


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


      public Builder filehandler(Filehandler.Builder __builder) {
        filehandler = __builder;
        return this;
      }

      public Builder cachehandler(Cachehandler.Builder __builder) {
        cachehandler = __builder;
        return this;
      }
    }

    // Either QueryAccessLog for a regular Vespa access log, or YApacheAccessLog for a log on yApache format
    private final StringNode name;
    // Leave as ""
    private final StringNode type;
    private final Filehandler filehandler;
    private final Cachehandler cachehandler;

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

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

    private Speciallog(Builder builder, boolean throwIfUninitialized) {
      if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
        throw new IllegalArgumentException("The following builder parameters for " +
            "qr-logging.speciallog[] must be initialized: " + builder.__uninitialized);

      name = (builder.name == null) ?
          new StringNode() : new StringNode(builder.name);
      type = (builder.type == null) ?
          new StringNode() : new StringNode(builder.type);
      filehandler = new Filehandler(builder.filehandler, throwIfUninitialized);
      cachehandler = new Cachehandler(builder.cachehandler, throwIfUninitialized);
    }

    /**
     * @return qr-logging.speciallog[].name
     */
    public String name() {
      return name.value();
    }

    /**
     * @return qr-logging.speciallog[].type
     */
    public String type() {
      return type.value();
    }

    /**
     * @return qr-logging.speciallog[].filehandler
     */
    public Filehandler filehandler() {
      return filehandler;
    }

    /**
     * @return qr-logging.speciallog[].cachehandler
     */
    public Cachehandler cachehandler() {
      return cachehandler;
    }

    private ChangesRequiringRestart getChangesRequiringRestart(Speciallog newConfig) {
      ChangesRequiringRestart changes = new ChangesRequiringRestart("speciallog");
      return changes;
    }

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

    /**
     * This class represents qr-logging.speciallog[].filehandler
     */
    public final static class Filehandler extends InnerNode { 

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

        private String name = null;
        private String pattern = null;
        private String rotation = null;
        private String rotatescheme = null;
        private String symlink = null;

        public Builder() { }

        public Builder(Filehandler config) {
          name(config.name());
          pattern(config.pattern());
          rotation(config.rotation());
          rotatescheme(config.rotatescheme());
          symlink(config.symlink());
        }

        private Builder override(Builder __superior) {
          if (__superior.name != null)
            name(__superior.name);
          if (__superior.pattern != null)
            pattern(__superior.pattern);
          if (__superior.rotation != null)
            rotation(__superior.rotation);
          if (__superior.rotatescheme != null)
            rotatescheme(__superior.rotatescheme);
          if (__superior.symlink != null)
            symlink(__superior.symlink);
          return this;
        }

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


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


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


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


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

      }

      private final StringNode name;
      // File name patterns supporting the expected time variables
      private final StringNode pattern;
      private final StringNode rotation;
      // Defines how file rotation is done. There are two options:
      //  
      // "date" :
      // The active log file is given the name resulting from pattern (but in this case "pattern" must yield a
      // time-dependent name. In addition, a symlink is created pointing to the newest file.
      // The symlink is given the name of the symlink parameter (or the name of this service
      // if no parameter is given.
      //  
      // "sequence" :
      // The active log file is given the name
      // defined by "pattern" (which in this case will likely just be a constant string).
      // At rotation, this file is given the name pattern.N where N is 1 + the largest integer found by
      // extracting the integers from all files ending by .Integer in the same directory
      //  
      private final StringNode rotatescheme;
      // Use this as the name of the symlink created pointing to the newest file in the "date" naming scheme.
      // This is ignored if the sequence naming scheme is used.
      private final StringNode symlink;

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

      private Filehandler(Builder builder, boolean throwIfUninitialized) {
        if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
          throw new IllegalArgumentException("The following builder parameters for " +
              "qr-logging.speciallog[].filehandler must be initialized: " + builder.__uninitialized);

        name = (builder.name == null) ?
            new StringNode("") : new StringNode(builder.name);
        pattern = (builder.pattern == null) ?
            new StringNode(".%Y%m%d%H%M%S") : new StringNode(builder.pattern);
        rotation = (builder.rotation == null) ?
            new StringNode("0 60 ...") : new StringNode(builder.rotation);
        rotatescheme = (builder.rotatescheme == null) ?
            new StringNode("date") : new StringNode(builder.rotatescheme);
        symlink = (builder.symlink == null) ?
            new StringNode("") : new StringNode(builder.symlink);
      }

      /**
       * @return qr-logging.speciallog[].filehandler.name
       */
      public String name() {
        return name.value();
      }

      /**
       * @return qr-logging.speciallog[].filehandler.pattern
       */
      public String pattern() {
        return pattern.value();
      }

      /**
       * @return qr-logging.speciallog[].filehandler.rotation
       */
      public String rotation() {
        return rotation.value();
      }

      /**
       * @return qr-logging.speciallog[].filehandler.rotatescheme
       */
      public String rotatescheme() {
        return rotatescheme.value();
      }

      /**
       * @return qr-logging.speciallog[].filehandler.symlink
       */
      public String symlink() {
        return symlink.value();
      }

      private ChangesRequiringRestart getChangesRequiringRestart(Filehandler newConfig) {
        ChangesRequiringRestart changes = new ChangesRequiringRestart("filehandler");
        return changes;
      }
    }

    /**
     * This class represents qr-logging.speciallog[].cachehandler
     */
    public final static class Cachehandler extends InnerNode { 

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

        private String name = null;
        private Integer size = null;

        public Builder() { }

        public Builder(Cachehandler config) {
          name(config.name());
          size(config.size());
        }

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

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


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

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

      private final StringNode name;
      private final IntegerNode size;

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

      private Cachehandler(Builder builder, boolean throwIfUninitialized) {
        if (throwIfUninitialized && ! builder.__uninitialized.isEmpty())
          throw new IllegalArgumentException("The following builder parameters for " +
              "qr-logging.speciallog[].cachehandler must be initialized: " + builder.__uninitialized);

        name = (builder.name == null) ?
            new StringNode("") : new StringNode(builder.name);
        size = (builder.size == null) ?
            new IntegerNode(1000) : new IntegerNode(builder.size);
      }

      /**
       * @return qr-logging.speciallog[].cachehandler.name
       */
      public String name() {
        return name.value();
      }

      /**
       * @return qr-logging.speciallog[].cachehandler.size
       */
      public int size() {
        return size.value();
      }

      private ChangesRequiringRestart getChangesRequiringRestart(Cachehandler newConfig) {
        ChangesRequiringRestart changes = new ChangesRequiringRestart("cachehandler");
        return changes;
      }
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy