Package com.yahoo.config.model.producer
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 Summary
-
Constructor Summary
ConstructorDescriptionAbstractConfigProducer
(AbstractConfigProducer parent, String subId) Creates a new AbstractConfigProducer with the given parent and subId.AbstractConfigProducer
(String subId) Create an config producer with a configId only. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Adds a child to this config producer.protected void
addConfigId
(String id) Sets the config id for this producer.protected void
final boolean
addUserConfig
(com.yahoo.config.ConfigInstance.Builder builder) Adds user config override from this ConfigProducer to the existing builderfinal boolean
cascadeConfig
(com.yahoo.config.ConfigInstance.Builder builder) 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.void
dump
(PrintStream out) Dump the three of config producers to the specified stream.Returns this ConfigProducer's children (only 1st level)<J extends AbstractConfigProducer<?>>
List<J>getChildrenByTypeRecursive
(Class<J> type) protected ClassLoader
getConfigClassLoader
(String producerName) final String
ConfigProducers that must have a special config id should use setConfigId() instead of overloading this method.Returns a list of all the children of this who are instances of Serviceprotected Monitoring
Returns a monitoring service if configured, null otherwisegetRoot()
final String
getSubId()
Returns the user configs of thisReturns the one and only HostSystem of the root node.void
mergeUserConfigs
(UserConfigRepo newRepo) protected void
remove()
Removes this from the config modelvoid
removeChild
(CHILD child) protected final void
setParent
(AbstractConfigProducer<?> parent) void
setUserConfigs
(UserConfigRepo repo) Sets the user configs for this producer.protected static boolean
stateIsHosted
(DeployState deployState) void
validate()
check constraints depending on the state of the vespamodel graph.
-
Field Details
-
log
-
-
Constructor Details
-
AbstractConfigProducer
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 ConfigProducersubId
- the fragment of the config id for the producer
-
AbstractConfigProducer
Create an config producer with a configId only. Used e.g. to create root nodes, and producers that are given children after construction usingaddChild(AbstractConfigProducer)
.- Parameters:
subId
- The sub configId. Note that this can be prefixed when calling addChild with this producer as arg.
-
-
Method Details
-
stateIsHosted
-
remove
protected void remove()Removes this from the config model -
setParent
-
getSubId
-
addChild
Adds a child to this config producer.- Parameters:
child
- the child config producer to add
-
removeChild
-
setUserConfigs
Sets the user configs for this producer.- Parameters:
repo
- User configs repo.
-
getUserConfigs
Returns the user configs of this- Specified by:
getUserConfigs
in interfaceConfigProducer
-
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 interfaceConfigProducer
-
addConfigId
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
Returns this ConfigProducer's children (only 1st level)- Specified by:
getChildren
in interfaceConfigProducer
-
getChildrenByTypeRecursive
-
getDescendantServices
Returns a list of all the children of this who are instances of Service- Specified by:
getDescendantServices
in interfaceConfigProducer
-
addDescendantService
-
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 interfaceConfigProducer
- 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 interfaceConfigProducer
- Parameters:
builder
- The ConfigBuilder to add user config overrides.- Returns:
- true if overrides were added, false if not.
-
hostSystem
Returns the one and only HostSystem of the root node. Must be overridden by root node.- Specified by:
hostSystem
in interfaceConfigProducer
-
getRoot
-
getParent
-
dump
Description copied from interface:ConfigProducer
Dump the three of config producers to the specified stream.- Specified by:
dump
in interfaceConfigProducer
- Parameters:
out
- The stream to print to, e.g. System.out
-
getConfigClassLoader
-
mergeUserConfigs
-
validate
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 interfaceConfigProducer
- Throws:
Exception
-
getMonitoringService
Returns a monitoring service if configured, null otherwise
-