001 /*
002 * JBoss DNA (http://www.jboss.org/dna)
003 * See the COPYRIGHT.txt file distributed with this work for information
004 * regarding copyright ownership. Some portions may be licensed
005 * to Red Hat, Inc. under one or more contributor license agreements.
006 * See the AUTHORS.txt file in the distribution for a full listing of
007 * individual contributors.
008 *
009 * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA
010 * is licensed to you under the terms of the GNU Lesser General Public License as
011 * published by the Free Software Foundation; either version 2.1 of
012 * the License, or (at your option) any later version.
013 *
014 * JBoss DNA is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017 * Lesser General Public License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this software; if not, write to the Free
021 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
022 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
023 */
024 package org.jboss.dna.common.collection;
025
026 import java.io.IOException;
027 import java.io.InputStream;
028 import java.io.OutputStream;
029 import java.io.PrintStream;
030 import java.io.PrintWriter;
031 import java.util.Collection;
032 import java.util.Collections;
033 import java.util.Enumeration;
034 import java.util.Map;
035 import java.util.Properties;
036 import java.util.Set;
037 import java.util.Map.Entry;
038
039 /**
040 * @author Randall Hauch
041 */
042 public class UnmodifiableProperties extends Properties {
043
044 /**
045 */
046 private static final long serialVersionUID = -4670639332874922546L;
047 private Properties delegate;
048
049 public UnmodifiableProperties( Properties props ) {
050 super();
051 this.delegate = props != null ? props : new Properties();
052 }
053
054 /**
055 * {@inheritDoc}
056 */
057 @Override
058 public synchronized Object clone() {
059 return new UnmodifiableProperties(this.delegate);
060 }
061
062 /**
063 * {@inheritDoc}
064 */
065 @Override
066 public synchronized boolean contains( Object value ) {
067 return delegate.contains(value);
068 }
069
070 /**
071 * {@inheritDoc}
072 */
073 @Override
074 public boolean containsKey( Object key ) {
075 return this.delegate.containsKey(key);
076 }
077
078 /**
079 * {@inheritDoc}
080 */
081 @Override
082 public boolean containsValue( Object value ) {
083 return this.delegate.containsValue(value);
084 }
085
086 /**
087 * {@inheritDoc}
088 */
089 @Override
090 public Enumeration<Object> elements() {
091 return this.delegate.elements();
092 }
093
094 /**
095 * {@inheritDoc}
096 */
097 @Override
098 public boolean equals( Object o ) {
099 return this.delegate.equals(o);
100 }
101
102 /**
103 * {@inheritDoc}
104 */
105 @Override
106 public Object get( Object key ) {
107 return this.delegate.get(key);
108 }
109
110 /**
111 * {@inheritDoc}
112 */
113 @Override
114 public String getProperty( String key,
115 String defaultValue ) {
116 return this.delegate.getProperty(key, defaultValue);
117 }
118
119 /**
120 * {@inheritDoc}
121 */
122 @Override
123 public String getProperty( String key ) {
124 return this.delegate.getProperty(key);
125 }
126
127 /**
128 * {@inheritDoc}
129 */
130 @Override
131 public int hashCode() {
132 return this.delegate.hashCode();
133 }
134
135 /**
136 * {@inheritDoc}
137 */
138 @Override
139 public boolean isEmpty() {
140 return this.delegate.isEmpty();
141 }
142
143 /**
144 * {@inheritDoc}
145 */
146 @Override
147 public Enumeration<Object> keys() {
148 return this.delegate.keys();
149 }
150
151 /**
152 * {@inheritDoc}
153 */
154 @Override
155 public void list( PrintStream out ) {
156 this.delegate.list(out);
157 }
158
159 /**
160 * {@inheritDoc}
161 */
162 @Override
163 public void list( PrintWriter out ) {
164 this.delegate.list(out);
165 }
166
167 /**
168 * {@inheritDoc}
169 */
170 @Override
171 public Enumeration<?> propertyNames() {
172 return this.delegate.propertyNames();
173 }
174
175 /**
176 * {@inheritDoc}
177 *
178 * @deprecated
179 */
180 @Deprecated
181 @Override
182 public void save( OutputStream out,
183 String comments ) {
184 this.delegate.save(out, comments);
185 }
186
187 /**
188 * {@inheritDoc}
189 */
190 @Override
191 public int size() {
192 return this.delegate.size();
193 }
194
195 /**
196 * {@inheritDoc}
197 */
198 @Override
199 public void store( OutputStream out,
200 String comments ) throws IOException {
201 this.delegate.store(out, comments);
202 }
203
204 /**
205 * {@inheritDoc}
206 */
207 @Override
208 public void storeToXML( OutputStream os,
209 String comment,
210 String encoding ) throws IOException {
211 this.delegate.storeToXML(os, comment, encoding);
212 }
213
214 /**
215 * {@inheritDoc}
216 */
217 @Override
218 public void storeToXML( OutputStream os,
219 String comment ) throws IOException {
220 this.delegate.storeToXML(os, comment);
221 }
222
223 /**
224 * {@inheritDoc}
225 */
226 @Override
227 public String toString() {
228 return this.delegate.toString();
229 }
230
231 /**
232 * {@inheritDoc}
233 */
234 @Override
235 public Collection<Object> values() {
236 return this.delegate.values();
237 }
238
239 /**
240 * {@inheritDoc}
241 */
242 @Override
243 public synchronized void clear() {
244 throw new UnsupportedOperationException();
245 }
246
247 /**
248 * {@inheritDoc}
249 */
250 @Override
251 public Set<Entry<Object, Object>> entrySet() {
252 return Collections.unmodifiableSet(super.entrySet());
253 }
254
255 /**
256 * {@inheritDoc}
257 */
258 @Override
259 public Set<Object> keySet() {
260 return Collections.unmodifiableSet(super.keySet());
261 }
262
263 /**
264 * {@inheritDoc}
265 */
266 @Override
267 public synchronized void load( InputStream inStream ) {
268 throw new UnsupportedOperationException();
269 }
270
271 /**
272 * {@inheritDoc}
273 */
274 @Override
275 public synchronized void loadFromXML( InputStream in ) {
276 throw new UnsupportedOperationException();
277 }
278
279 /**
280 * {@inheritDoc}
281 */
282 @Override
283 public synchronized Object put( Object key,
284 Object value ) {
285 throw new UnsupportedOperationException();
286 }
287
288 /**
289 * {@inheritDoc}
290 */
291 @Override
292 public synchronized void putAll( Map<? extends Object, ? extends Object> t ) {
293 throw new UnsupportedOperationException();
294 }
295
296 /**
297 * {@inheritDoc}
298 */
299 @Override
300 public synchronized Object remove( Object key ) {
301 throw new UnsupportedOperationException();
302 }
303
304 /**
305 * {@inheritDoc}
306 */
307 @Override
308 public synchronized Object setProperty( String key,
309 String value ) {
310 throw new UnsupportedOperationException();
311 }
312
313 }