1 /*
2 * Copyright (c) 2010, Marco Brade
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * * Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer.
10 *
11 * * Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26 package net.sf.prefixedproperties.config;
27
28 import java.util.Set;
29
30 /**
31 * The Class DynamicPrefixConfig will take any kind of Prefix and add it as a
32 * known prefix list.
33 */
34 public final class DynamicPrefixConfig extends DefaultPrefixConfig {
35
36 private static final long serialVersionUID = 1L;
37
38 /**
39 * Instantiates a new dynamic PrefixConfig.
40 */
41 public DynamicPrefixConfig() {
42 }
43
44 /**
45 * Instantiates a new dynamic PrefixConfig.
46 *
47 * @param prefix
48 * the prefix
49 */
50 public DynamicPrefixConfig(final String prefix) {
51 super(new String[] { prefix }, prefix);
52 }
53
54 /**
55 * Adds the given prefix to the PrefixConfig.
56 *
57 * @param prefixString
58 * the prefix string
59 */
60 protected synchronized void addPrefix(final String prefixString) {
61 if (prefixString != null) {
62 final Set<String> prefixes = getPrefixes();
63 prefixes.add(prefixString);
64 setPrefixes(prefixes);
65 }
66 }
67
68 @Override
69 public boolean isDynamic() {
70 return true;
71 }
72
73 @Override
74 public void setDefaultPrefix(final String defaultPrefix) {
75 addPrefix(defaultPrefix);
76 super.setDefaultPrefix(defaultPrefix);
77 }
78
79 /*
80 * (non-Javadoc)
81 *
82 * @see
83 * net.sf.prefixedproperties.config.AbstractPrefixConfig#setPrefix(java.lang
84 * .String)
85 */
86 @Override
87 public void setPrefix(final String prefixString) {
88 addPrefix(prefixString);
89 super.setPrefix(prefixString);
90 }
91
92 }