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