Class AbstractConfigProducer<CHILD extends AbstractConfigProducer<?>>

java.lang.Object
com.yahoo.config.model.producer.AbstractConfigProducer<CHILD>
All Implemented Interfaces:
com.yahoo.config.ConfigInstance.Producer, ConfigProducer, Serializable
Direct Known Subclasses:
AbstractConfigProducerRoot, AbstractService, Admin, ApplicationConfigProducerRoot, Chain, Chains, Client, ClusterControllerCluster, ClusterControllerConfig, Component, ConfigProducerGroup, ConfigserverCluster, ContainerCluster, ContentCluster, ContentSearchCluster, DistributorCluster, DocumentDatabase, FileDistributionConfigProducer, FileDistributionConfigProvider, Host, HostSystem, Http, IndexedSearchCluster.MultipleDocumentDatabasesConfigProducer, ModelConfigProvider, PersistenceEngine, SearchCluster, SimpleConfigProducer, StorageCluster, Tuning

public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProducer<?>> extends Object implements ConfigProducer, com.yahoo.config.ConfigInstance.Producer, Serializable
Superclass for all config producers. Config producers constructs and returns config instances on request.
Author:
gjoranv
See Also:
  • Field Details

    • log

      public static final Logger log
  • Constructor Details

    • AbstractConfigProducer

      public AbstractConfigProducer(AbstractConfigProducer parent, String subId)
      Creates a new AbstractConfigProducer with the given parent and subId. This constructor will add the resulting producer to the children of parent.
      Parameters:
      parent - the parent of this ConfigProducer
      subId - the fragment of the config id for the producer
    • AbstractConfigProducer

      public AbstractConfigProducer(String subId)
      Create an config producer with a configId only. Used e.g. to create root nodes, and producers that are given children after construction using addChild(AbstractConfigProducer).
      Parameters:
      subId - The sub configId. Note that this can be prefixed when calling addChild with this producer as arg.
  • Method Details

    • stateIsHosted

      protected static boolean stateIsHosted(DeployState deployState)
    • remove

      protected void remove()
      Removes this from the config model
    • setParent

      protected final void setParent(AbstractConfigProducer<?> parent)
    • getSubId

      public final String getSubId()
    • addChild

      protected void addChild(CHILD child)
      Adds a child to this config producer.
      Parameters:
      child - the child config producer to add
    • removeChild

      public void removeChild(CHILD child)
    • setUserConfigs

      public void setUserConfigs(UserConfigRepo repo)
      Sets the user configs for this producer.
      Parameters:
      repo - User configs repo.
    • getUserConfigs

      public UserConfigRepo getUserConfigs()
      Returns the user configs of this
      Specified by:
      getUserConfigs in interface ConfigProducer
    • getConfigId

      public final String getConfigId()
      ConfigProducers that must have a special config id should use setConfigId() instead of overloading this method. This is because config IDs must be registered through setConfigId().
      Specified by:
      getConfigId in interface ConfigProducer
    • addConfigId

      protected void addConfigId(String id)
      Sets the config id for this producer. Will also add this service to the root node, so the new config id will be picked up. Note that this producer will be known with both the old and the new config id in the root node after using this method.
    • getChildren

      public Map<String,CHILD> getChildren()
      Returns this ConfigProducer's children (only 1st level)
      Specified by:
      getChildren in interface ConfigProducer
    • getChildrenByTypeRecursive

      public <J extends AbstractConfigProducer<?>> List<J> getChildrenByTypeRecursive(Class<J> type)
    • getDescendantServices

      public List<Service> getDescendantServices()
      Returns a list of all the children of this who are instances of Service
      Specified by:
      getDescendantServices in interface ConfigProducer
    • addDescendantService

      protected void addDescendantService(Service s)
    • cascadeConfig

      public final boolean cascadeConfig(com.yahoo.config.ConfigInstance.Builder builder)
      Description copied from interface: ConfigProducer
      Build config from this and all parent ConfigProducers, such that the root node's config will be added first, and this ConfigProducer's config last in the returned builder.
      Specified by:
      cascadeConfig in interface ConfigProducer
      Parameters:
      builder - The builder implemented by the concrete ConfigInstance class
      Returns:
      true if a model config producer was found, so config was applied
    • addUserConfig

      public final boolean addUserConfig(com.yahoo.config.ConfigInstance.Builder builder)
      Description copied from interface: ConfigProducer
      Adds user config override from this ConfigProducer to the existing builder
      Specified by:
      addUserConfig in interface ConfigProducer
      Parameters:
      builder - The ConfigBuilder to add user config overrides.
      Returns:
      true if overrides were added, false if not.
    • hostSystem

      public HostSystem hostSystem()
      Returns the one and only HostSystem of the root node. Must be overridden by root node.
      Specified by:
      hostSystem in interface ConfigProducer
    • getRoot

      public AbstractConfigProducerRoot getRoot()
    • getParent

      public AbstractConfigProducer getParent()
    • dump

      public void dump(PrintStream out)
      Description copied from interface: ConfigProducer
      Dump the three of config producers to the specified stream.
      Specified by:
      dump in interface ConfigProducer
      Parameters:
      out - The stream to print to, e.g. System.out
    • getConfigClassLoader

      protected ClassLoader getConfigClassLoader(String producerName)
    • mergeUserConfigs

      public void mergeUserConfigs(UserConfigRepo newRepo)
    • validate

      public void validate() throws Exception
      Description copied from interface: ConfigProducer
      check constraints depending on the state of the vespamodel graph. When overriding, you must invoke super.
      Specified by:
      validate in interface ConfigProducer
      Throws:
      Exception
    • getMonitoringService

      protected Monitoring getMonitoringService()
      Returns a monitoring service if configured, null otherwise