001 /*
002 * Copyright 2005-2007 The Kuali Foundation
003 *
004 *
005 * Licensed under the Educational Community License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.opensource.org/licenses/ecl2.php
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.kuali.rice.core.config;
018
019 import java.util.Map;
020
021 /**
022 * A local store for node-specific settings. The use of the word "Node" here describes an instance of KEW
023 * (running standalone or embedded). In a clustered environment, it is sometimes useful for individual
024 * nodes within the cluster to have their own settings. Depending on system configuration this configuration
025 * store may or may not be available for use. If the node settings store is not availabe then calls to
026 * query or modify the settings should be no-ops. The availablily can be queried using the isEnabled method.
027 *
028 * <p>Since Node Settings are runtime-mutable, it is important that implementations of this class be thread-safe.
029 *
030 * @author Kuali Rice Team (rice.collab@kuali.org)
031 */
032 public interface NodeSettings {
033
034 /**
035 * Retrieve the value of the setting with the given name. Will return null if the setting with the
036 * given name does not exist or node settings are not enabled.
037 *
038 * @return the value of the setting, null if the setting does not exis or node settings are not enabled
039 */
040 public String getSetting(String name);
041
042 /**
043 * Set the value of the setting with the given name. Has no effect if node settings are not enabled.
044 */
045 public void setSetting(String name, String value);
046
047 /**
048 * Remove the given setting from the node settings. If the setting with the given name does not
049 * exist or node settings are not enabled, then null will be returned.
050 *
051 * @return return the value of the removed setting, null if the setting does not exist
052 * or node settings are not enabled
053 */
054 public String removeSetting(String name);
055
056 /**
057 * Returns the settings of this node as an immutable Map. If the node settings store
058 * is not enabled, then an empty Map will be returned. The Map
059 * returned by the getSettings method is thread-safe.
060 * @return
061 */
062 public Map getSettings();
063
064 /**
065 * Returns true if node-specific settings are enabled, false otherwise. In the case that node settings
066 * are not enabled, the various accessor methods will effectively behave as no-ops.
067 *
068 * @return true if node settings are enabled, false otherwise
069 */
070 public boolean isEnabled();
071
072 }