View Javadoc
1   /* ***************************************************************************
2    * Copyright (c) 2008 Brabenetz Harald, Austria.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   * 
16   *****************************************************************************/
17  package org.settings4j;
18  
19  /**
20   * Holder for a single {@link Settings4jInstance}.
21   * 
22   * @author Harald.Brabenetz
23   */
24  public interface Settings4jRepository {
25  
26      /**
27       * Retrieve the appropriate {@link Settings4j} instance.
28       * 
29       * @return the appropriate {@link Settings4jInstance}
30       */
31      Settings4jInstance getSettings();
32  
33      /**
34       * Retrieve the appropriate {@link Settings4j} instance or create it with the give factory if doesn'r already exist.
35       * 
36       * @param factory The factory to create a {@link Settings4jInstance}.
37       * @return the appropriate {@link Settings4jInstance}
38       */
39      Settings4jInstance getSettings(Settings4jFactory factory);
40  
41      /**
42       * Return the Connector Count.<br />
43       * If the connector count is 0. the Settings will be reinitialized with the default-fallback-config in
44       * {@link org.settings4j.settings.SettingsManager#getSettings()}
45       * 
46       * @return The Connector Count.
47       */
48      int getConnectorCount();
49  
50      /**
51       * <p>
52       * Remove the Settings, Connectors and other Objects from the Repository.
53       * <p>
54       * Make it ready to fill it with a new Configuration.
55       * <p>
56       * Example (maybe in an init()-Method of your Application):
57       * 
58       * <pre>
59       * // clear Settings from &quot;settings4j.xml&quot;
60       * SettingsRepository settingsRepository = SettingsManager.getSettingsRepository();
61       * settingsRepository.resetConfiguration();
62       * 
63       * // read XML Custome to configure the repository
64       * URL url = ClasspathContentResolver.getResource(&quot;customizedSettings4j.xml&quot;);
65       * DOMConfigurator domConfigurator = new DOMConfigurator(settingsRepository);
66       * domConfigurator.doConfigure(url);
67       * </pre>
68       */
69      void resetConfiguration();
70  }