~ubuntu-branches/ubuntu/saucy/commons-configuration/saucy

« back to all changes in this revision

Viewing changes to src/main/java/org/apache/commons/configuration/ConfigurationConverter.java

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg
  • Date: 2013-07-01 16:29:44 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20130701162944-98waq5gogha5gpn1
Tags: 1.9-1
* New upstream release
* debian/control:
  - Updated Standards-Version to 3.9.4 (no changes)
  - Use canonical URLs for the Vcs-* fields
  - Added new build dependencies (libjavacc-maven-plugin-java, junit4)
  - Upgraded the dependency on the Servlet API (2.5 -> 3.0)
  - Removed the dependency on the Activation Framework (glassfish-activation)
  - Replaced the dependency on glassfish-mail with libgnumail-java
  - Removed the unused dependencies:
    liblog4j1.2-java-doc, libmaven-assembly-plugin-java
  - Replaced the dependency on libcommons-jexl-java by libcommons-jexl2-java
* debian/watch: Changed to point the official Apache distribution server
* Removed the obsolete file debian/ant.properties
* Installed the upstream changelog in the binary packages
* Added the report plugins to maven.ignoreRules
* Added the classpath attribute to the jar manifest

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
 
3
 * contributor license agreements.  See the NOTICE file distributed with
 
4
 * this work for additional information regarding copyright ownership.
 
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
 
6
 * (the "License"); you may not use this file except in compliance with
 
7
 * the License.  You may obtain a copy of the License at
 
8
 *
 
9
 *     http://www.apache.org/licenses/LICENSE-2.0
 
10
 *
 
11
 * Unless required by applicable law or agreed to in writing, software
 
12
 * distributed under the License is distributed on an "AS IS" BASIS,
 
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
14
 * See the License for the specific language governing permissions and
 
15
 * limitations under the License.
 
16
 */
 
17
 
 
18
package org.apache.commons.configuration;
 
19
 
 
20
import java.util.ArrayList;
 
21
import java.util.Iterator;
 
22
import java.util.List;
 
23
import java.util.Map;
 
24
import java.util.Properties;
 
25
 
 
26
import org.apache.commons.collections.ExtendedProperties;
 
27
import org.apache.commons.lang.StringUtils;
 
28
 
 
29
/**
 
30
 * Configuration converter. Helper class to convert between Configuration,
 
31
 * ExtendedProperties and standard Properties.
 
32
 *
 
33
 * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
 
34
 * @version $Id: ConfigurationConverter.java 1208788 2011-11-30 21:15:37Z oheger $
 
35
 */
 
36
public final class ConfigurationConverter
 
37
{
 
38
    /**
 
39
     * Private constructor prevents instances from being created.
 
40
     */
 
41
    private ConfigurationConverter()
 
42
    {
 
43
        // to prevent instanciation...
 
44
    }
 
45
 
 
46
    /**
 
47
     * Convert a ExtendedProperties class into a Configuration class.
 
48
     *
 
49
     * @param eprops ExtendedProperties object to convert
 
50
     * @return Configuration created from the ExtendedProperties
 
51
     */
 
52
    public static Configuration getConfiguration(ExtendedProperties eprops)
 
53
    {
 
54
        return new MapConfiguration(eprops);
 
55
    }
 
56
 
 
57
    /**
 
58
     * Convert a standard Properties class into a configuration class.
 
59
     *
 
60
     * @param props properties object to convert
 
61
     * @return Configuration configuration created from the Properties
 
62
     */
 
63
    public static Configuration getConfiguration(Properties props)
 
64
    {
 
65
        return new MapConfiguration(props);
 
66
    }
 
67
 
 
68
    /**
 
69
     * Convert a Configuration class into a ExtendedProperties class.
 
70
     *
 
71
     * @param config Configuration object to convert
 
72
     * @return ExtendedProperties created from the Configuration
 
73
     */
 
74
    public static ExtendedProperties getExtendedProperties(Configuration config)
 
75
    {
 
76
        ExtendedProperties props = new ExtendedProperties();
 
77
 
 
78
        for (Iterator<String> keys = config.getKeys(); keys.hasNext();)
 
79
        {
 
80
            String key = keys.next();
 
81
            Object property = config.getProperty(key);
 
82
 
 
83
            // turn lists into vectors
 
84
            if (property instanceof List)
 
85
            {
 
86
                property = new ArrayList<Object>((List<?>) property);
 
87
            }
 
88
 
 
89
            props.setProperty(key, property);
 
90
        }
 
91
 
 
92
        return props;
 
93
    }
 
94
 
 
95
    /**
 
96
     * Convert a Configuration class into a Properties class. List properties
 
97
     * are joined into a string using the delimiter of the configuration if it
 
98
     * extends AbstractConfiguration, and a comma otherwise.
 
99
     *
 
100
     * @param config Configuration object to convert
 
101
     * @return Properties created from the Configuration
 
102
     */
 
103
    public static Properties getProperties(Configuration config)
 
104
    {
 
105
        Properties props = new Properties();
 
106
 
 
107
        char delimiter = (config instanceof AbstractConfiguration)
 
108
            ? ((AbstractConfiguration) config).getListDelimiter() : ',';
 
109
 
 
110
        for (Iterator<String> keys = config.getKeys(); keys.hasNext();)
 
111
        {
 
112
            String key = keys.next();
 
113
            List<Object> list = config.getList(key);
 
114
 
 
115
            // turn the list into a string
 
116
            props.setProperty(key, StringUtils.join(list.iterator(), delimiter));
 
117
        }
 
118
 
 
119
        return props;
 
120
    }
 
121
 
 
122
    /**
 
123
     * Convert a Configuration class into a Map class.
 
124
     *
 
125
     * @param config Configuration object to convert
 
126
     * @return Map created from the Configuration
 
127
     */
 
128
    public static Map<Object, Object> getMap(Configuration config)
 
129
    {
 
130
        return new ConfigurationMap(config);
 
131
    }
 
132
 
 
133
}