1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.discovery.tools;
18
19 import java.util.Properties;
20
21 import org.apache.commons.discovery.resource.ClassLoaders;
22
23
24 /***
25 * Holder for a default class.
26 *
27 * Class may be specified by name (String) or class (Class).
28 * Using the holder complicates the users job, but minimized # of API's.
29 *
30 * @author Richard A. Sitze
31 */
32 public class PropertiesHolder {
33 private Properties properties;
34 private final String propertiesFileName;
35
36 public PropertiesHolder(Properties properties) {
37 this.properties = properties;
38 this.propertiesFileName = null;
39 }
40
41 public PropertiesHolder(String propertiesFileName) {
42 this.properties = null;
43 this.propertiesFileName = propertiesFileName;
44 }
45
46 /***
47 * @param spi Optional SPI (may be null).
48 * If provided, an attempt is made to load the
49 * property file as-per Class.getResource().
50 *
51 * @param loaders Used only if properties need to be loaded.
52 *
53 * @return Properties. Load the properties if necessary.
54 */
55 public Properties getProperties(SPInterface spi, ClassLoaders loaders) {
56 if (properties == null) {
57 properties = ResourceUtils.loadProperties(spi.getSPClass(), getPropertiesFileName(), loaders);
58 }
59 return properties;
60 }
61
62 public String getPropertiesFileName() {
63 return propertiesFileName;
64 }
65 }