/* * Copyright 2015-present Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.cfg; import java.util.Set; /** * Service for tracking system-wide configurations for various software components. */ public interface ComponentConfigService { /** * Returns names of all components that have registered their * configuration properties. * * @return set of component names */ Set<String> getComponentNames(); /** * Registers configuration properties for the specified component. * * @param componentClass class of configurable component */ void registerProperties(Class<?> componentClass); /** * Unregisters configuration properties for the specified component. * * @param componentClass class of configurable component * @param clear true indicates any settings should be cleared */ void unregisterProperties(Class<?> componentClass, boolean clear); /** * Returns configuration properties of the named components. * * @param componentName component name * @return set of configuration properties */ Set<ConfigProperty> getProperties(String componentName); /** * Sets the value of the specified configuration property. * * @param componentName component name * @param name property name * @param value new property value */ void setProperty(String componentName, String name, String value); /** * Presets the value of the specified configuration property, regardless * of the component's state. * * @param componentName component name * @param name property name * @param value new property value */ void preSetProperty(String componentName, String name, String value); /** * Clears the value of the specified configuration property thus making * the property take on its default value. * * @param componentName component name * @param name property name */ void unsetProperty(String componentName, String name); }