1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.collections4.properties;
19
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.io.OutputStream;
23 import java.io.Reader;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.Enumeration;
27 import java.util.InvalidPropertiesFormatException;
28 import java.util.Map;
29 import java.util.Map.Entry;
30 import java.util.Objects;
31 import java.util.Properties;
32 import java.util.Set;
33 import java.util.function.BiConsumer;
34 import java.util.function.BiFunction;
35 import java.util.function.Function;
36
37
38
39
40
41
42
43 public class PropertiesFactory extends AbstractPropertiesFactory<Properties> {
44
45 private static final class EmptyProperties extends Properties {
46
47 private static final long serialVersionUID = 1L;
48
49 @Override
50 public synchronized void clear() {
51
52 }
53
54 @Override
55 public synchronized Object compute(final Object key,
56 final BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction) {
57 Objects.requireNonNull(key);
58 throw new UnsupportedOperationException();
59 }
60
61 @Override
62 public synchronized Object computeIfAbsent(final Object key,
63 final Function<? super Object, ? extends Object> mappingFunction) {
64 Objects.requireNonNull(key);
65 throw new UnsupportedOperationException();
66 }
67
68 @Override
69 public synchronized Object computeIfPresent(final Object key,
70 final BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction) {
71 Objects.requireNonNull(key);
72 throw new UnsupportedOperationException();
73 }
74
75 @Override
76 public synchronized boolean contains(final Object value) {
77 return false;
78 }
79
80 @Override
81 public synchronized boolean containsKey(final Object key) {
82 return false;
83 }
84
85 @Override
86 public boolean containsValue(final Object value) {
87 return false;
88 }
89
90 @Override
91 public synchronized Enumeration<Object> elements() {
92 return Collections.emptyEnumeration();
93 }
94
95 @Override
96 public Set<Entry<Object, Object>> entrySet() {
97 return Collections.emptySet();
98 }
99
100 @Override
101 public synchronized boolean equals(final Object o) {
102 return o instanceof Properties && ((Properties) o).isEmpty();
103 }
104
105 @Override
106 public synchronized void forEach(final BiConsumer<? super Object, ? super Object> action) {
107 Objects.requireNonNull(action);
108 }
109
110 @Override
111 public synchronized Object get(final Object key) {
112 return null;
113 }
114
115 @Override
116 public synchronized Object getOrDefault(final Object key, final Object defaultValue) {
117 return defaultValue;
118 }
119
120 @Override
121 public String getProperty(final String key) {
122 return null;
123 }
124
125 @Override
126 public String getProperty(final String key, final String defaultValue) {
127 return defaultValue;
128 }
129
130 @Override
131 public synchronized int hashCode() {
132 return 0;
133 }
134
135 @Override
136 public synchronized boolean isEmpty() {
137 return true;
138 }
139
140 @Override
141 public synchronized Enumeration<Object> keys() {
142 return Collections.emptyEnumeration();
143 }
144
145 @Override
146 public Set<Object> keySet() {
147 return Collections.emptySet();
148 }
149
150
151
152
153
154 @SuppressWarnings("resource")
155 @Override
156 public synchronized void load(final InputStream inStream) throws IOException {
157 Objects.requireNonNull(inStream);
158 throw new UnsupportedOperationException();
159 }
160
161
162
163
164
165 @SuppressWarnings("resource")
166 @Override
167 public synchronized void load(final Reader reader) throws IOException {
168 Objects.requireNonNull(reader);
169 throw new UnsupportedOperationException();
170 }
171
172
173
174
175
176 @SuppressWarnings("resource")
177 @Override
178 public synchronized void loadFromXML(final InputStream in)
179 throws IOException, InvalidPropertiesFormatException {
180 Objects.requireNonNull(in);
181 throw new UnsupportedOperationException();
182 }
183
184 @Override
185 public synchronized Object merge(final Object key, final Object value,
186 final BiFunction<? super Object, ? super Object, ? extends Object> remappingFunction) {
187 Objects.requireNonNull(key);
188 Objects.requireNonNull(value);
189 throw new UnsupportedOperationException();
190 }
191
192 @Override
193 public Enumeration<?> propertyNames() {
194 return Collections.emptyEnumeration();
195 }
196
197 @Override
198 public synchronized Object put(final Object key, final Object value) {
199 Objects.requireNonNull(key);
200 Objects.requireNonNull(value);
201 throw new UnsupportedOperationException();
202 }
203
204 @Override
205 public synchronized void putAll(final Map<? extends Object, ? extends Object> t) {
206 Objects.requireNonNull(t);
207 throw new UnsupportedOperationException();
208 }
209
210 @Override
211 public synchronized Object putIfAbsent(final Object key, final Object value) {
212 Objects.requireNonNull(key);
213 Objects.requireNonNull(value);
214 throw new UnsupportedOperationException();
215 }
216
217 @Override
218 protected void rehash() {
219
220 }
221
222 @Override
223 public synchronized Object remove(final Object key) {
224 Objects.requireNonNull(key);
225 throw new UnsupportedOperationException();
226 }
227
228 @Override
229 public synchronized boolean remove(final Object key, final Object value) {
230 Objects.requireNonNull(key);
231 Objects.requireNonNull(value);
232 throw new UnsupportedOperationException();
233 }
234
235 @Override
236 public synchronized Object replace(final Object key, final Object value) {
237 Objects.requireNonNull(key);
238 Objects.requireNonNull(value);
239 throw new UnsupportedOperationException();
240 }
241
242 @Override
243 public synchronized boolean replace(final Object key, final Object oldValue, final Object newValue) {
244 Objects.requireNonNull(key);
245 Objects.requireNonNull(oldValue);
246 Objects.requireNonNull(newValue);
247 throw new UnsupportedOperationException();
248 }
249
250 @Override
251 public synchronized void replaceAll(
252 final BiFunction<? super Object, ? super Object, ? extends Object> function) {
253 Objects.requireNonNull(function);
254 throw new UnsupportedOperationException();
255 }
256
257 @SuppressWarnings("deprecation")
258 @Override
259 public void save(final OutputStream out, final String comments) {
260
261 super.save(out, comments);
262 }
263
264 @Override
265 public synchronized Object setProperty(final String key, final String value) {
266 Objects.requireNonNull(key);
267 Objects.requireNonNull(value);
268 throw new UnsupportedOperationException();
269 }
270
271 @Override
272 public synchronized int size() {
273 return 0;
274 }
275
276 @Override
277 public Set<String> stringPropertyNames() {
278 return Collections.emptySet();
279 }
280
281 @Override
282 public synchronized String toString() {
283
284 return super.toString();
285 }
286
287 @Override
288 public Collection<Object> values() {
289 return Collections.emptyList();
290 }
291
292 }
293
294
295
296
297
298
299 public static final Properties EMPTY_PROPERTIES = new EmptyProperties();
300
301
302
303
304 public static final PropertiesFactory INSTANCE = new PropertiesFactory();
305
306
307
308
309 private PropertiesFactory() {
310
311 }
312
313
314
315
316
317
318 @Override
319 protected Properties createProperties() {
320 return new Properties();
321 }
322
323 }