View Javadoc
1   /*
2    * #%L
3    * settings4j
4    * ===============================================================
5    * Copyright (C) 2008 - 2015 Brabenetz Harald, Austria
6    * ===============================================================
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package org.settings4j.helper.configuration;
21  
22  import org.apache.commons.configuration.Configuration;
23  import org.settings4j.connector.AbstractPropertyConnector;
24  
25  
26  /**
27   * Adapter to use an <a href="http://commons.apache.org/proper/commons-configuration/">Apache Commons Configuration</a> as Settings4j connector.
28   * <h3>Example Usage</h3>
29   * <p>
30   * Create a {@link org.apache.commons.configuration.XMLConfiguration} instance and add it to the Settings4j instance as Connector.
31   * </p>
32   *
33   * <pre>
34   * String connectorName = "myCommonsConfigXmlConfigConnector";
35   * Connector connector =  Settings4j.getSettings().getConnector(connectorName);
36   * if (connector == null) {
37   *     XMLConfiguration configuration = new XMLConfiguration(new File(.....));
38   *
39   *     connector = new ConfigurationToConnectorAdapter(connectorName, configuration);
40   *
41   *     // add the connecter after the last SystemPropertyConnector or add it as first connector.
42   *     Settings4j.getSettings().addConnector(connector, //
43   *         ConnectorPositions.firstValid(//
44   *             ConnectorPositions.afterLast(SystemPropertyConnector.class), //
45   *             ConnectorPositions.atFirst() // if no SystemPropertyConnector is configured.
46   *             )//
47   *         );
48   * }
49   * </pre>
50   *
51   * @author brabenetz
52   */
53  public class ConfigurationToConnectorAdapter extends AbstractPropertyConnector {
54  
55      private final Configuration configuration;
56  
57      /**
58       * @param name The unique name of this connector.
59       * @param configuration The apache commons configuration instance to wrap and use as Settings4j connector.
60       */
61      public ConfigurationToConnectorAdapter(final String name, final Configuration configuration) {
62          super();
63          this.configuration = configuration;
64          this.setName(name);
65      }
66  
67      @Override
68      public String getString(final String key) {
69          return this.configuration.getString(key);
70      }
71  
72      public Configuration getConfiguration() {
73          return this.configuration;
74      }
75  
76  }