View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.util;
23  
24  import org.apache.commons.io.IOUtils;
25  
26  import java.io.IOException;
27  import java.util.HashMap;
28  import java.util.Map;
29  import java.util.Map.Entry;
30  import java.util.Properties;
31  
32  /**
33   * See this JAXB bug for the full explanation: https://jaxb.dev.java.net/issues/show_bug.cgi?id=223
34   */
35  public class LocalHashMap {
36  
37    /** The internal backing map */
38    protected Map<String, String> map = new HashMap<String, String>();
39  
40    /** Returns the internal map storing the properties */
41    public Map<String, String> getMap() {
42      return map;
43    }
44  
45    /** No-arg constructor needed by JAXB */
46    public LocalHashMap() {
47    }
48  
49    /**
50     * Constructs this map from a properties list, expressed as a string:
51     *
52     * <code>
53     * foo=bar
54     * this=that
55     * </code>
56     *
57     * @param in
58     *          The properties list
59     * @throws IOException
60     *           if parsing the string fails
61     */
62    public LocalHashMap(String in) throws IOException {
63      Properties properties = new Properties();
64      properties.load(IOUtils.toInputStream(in, "UTF-8"));
65      for (Entry<Object, Object> e : properties.entrySet()) {
66        map.put((String) e.getKey(), (String) e.getValue());
67      }
68    }
69  }