View Javadoc

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  }