-
Notifications
You must be signed in to change notification settings - Fork 7
/
CHANGES.xml
398 lines (396 loc) · 16.3 KB
/
CHANGES.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
<document xmlns="http://maven.apache.org/changes/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Norconex Commons Lang Project</title>
<author email="[email protected]">Norconex Inc.</author>
</properties>
<body>
<release version="3.0.0-SNAPSHOT" date="202?-??-??"
description="Feature release.">
<action dev="essiembre" type="add">
New "flow" package to have conditions in XML, JSON, or Yaml
configuration files. A replacement to XMLFlow.
</action>
<action dev="essiembre" type="add">
New BeanMapper class to write/read objects to/from XML, JSON, and Yaml,
with support for polymorphism.
</action>
<action dev="essiembre" type="add">
New JSON and Yaml (de)serializers for types covered by GenericConverter.
</action>
<action dev="essiembre" type="add">
New DateModel class for easy transition from one date type to another.
</action>
<action dev="essiembre" type="add">
New ZonedDateTimeParser for epoch and relative dates parsing in
addition to parsing from date formats.
</action>
<action dev="essiembre" type="add">
New Timer class.
</action>
<action dev="essiembre" type="add">
New SemanticVersion and SemanticVersionParser classes.
</action>
<action dev="essiembre" type="add">
New @JsonCollection annotation.
</action>
<action dev="essiembre" type="add">
New PackageManifest class.
</action>
<action dev="essiembre" type="add">
New #runAndCaptureOutput and #callAndCaptureOutput methods on
SystemUtil.
</action>
<action dev="essiembre" type="add">
New JarDuplicates#get(File) method and collection based constructor.
</action>
<action dev="essiembre" type="add">
New StringUtil #ifBlank and #ifNotBlank methods.
</action>
<action dev="essiembre" type="add">
New FluentPropertyDescriptor methods: #isReadable, #isWritable,
#readValue, and #writeValue.
</action>
<action dev="essiembre" type="add">
FluentPropertyDescriptor now has added support for builder-style
accessor methods.
</action>
<action dev="essiembre" type="add">
New BeanUtil methods: #getPropertyDescriptors(Class), #getWriteMethod,
#getReadMethod, #isWritable, #isReadable (the last two replaces the
now deprecated #isGettable and #isSettable).
</action>
<action dev="essiembre" type="add">
New SystemCommand methods: #getErrorListeners and #getOutputListeners.
</action>
<action dev="essiembre" type="add">
New FileUtil#isFile methods providing a null-safe variant to
File#isFile or Files#isRegularFile.
</action>
<action dev="essiembre" type="add">
New FileUtil#isFile methods providing a null-safe variant to
File#isDirectory or Files#isDirectory.
</action>
<action dev="essiembre" type="add">
New FileUtil#toPath methods providing a null-safe variant to
File#toPath.
</action>
<action dev="essiembre" type="add">
New FileUtil#toPaths methods.
</action>
<action dev="essiembre" type="add">
New JarDuplicates#getAllButGreatest method.
</action>
<action dev="essiembre" type="add">
New JarFile#toJarFiles methods.
</action>
<action dev="essiembre" type="add">
New #getMapChangeListeners and #clearMapChangeListeners methods
on ObservableMap and MapChangeSupport.
</action>
<action dev="essiembre" type="add">
New TextMatcher #trim and #matchEmpty methods.
</action>
<action dev="essiembre" type="add">
New Regex #trim and #matchEmpty methods.
</action>
<action dev="essiembre" type="add">
New Credentials constructors accepting username, password,
and password key.
</action>
<action dev="essiembre" type="add">
New DateUtil date conversion methods using UTC.
</action>
<action dev="essiembre" type="add">
New YearMonthDay LocalDate constructor plus new #toLocalDate and
#toLocalDateTime methods.
</action>
<action dev="essiembre" type="add">
New XML methods: isEmpty, hasChildElements, hasAttributes,
hasTextContent, isElementPresent, computeIfElementAbsent,
getTextContent, removeTextContent.
</action>
<action dev="essiembre" type="add">
New XPathUtil class.
</action>
<action dev="essiembre" type="add">
New CollectionUtil#unionList and CollectionUtil#unionSet methods.
</action>
<action dev="essiembre" type="add">
CachedInputStream#nullInputStream() now returns a CachedInputStream
instance.
</action>
<action dev="essiembre" type="add">
New MutableImage#fromBase64String method.
</action>
<action dev="essiembre" type="add">
New PatternConverter class along with XML#getPattern method.
</action>
<action dev="essiembre" type="add">
New ProxySettings#toProxy method (java.net.Proxy).
</action>
<action dev="essiembre" type="add">
New ClassUtil#newInstance(Object...) method.
</action>
<action dev="essiembre" type="add">
New XMLAdapters class to add JAXB support for the same type offered
by GenericConverter.
</action>
<action dev="essiembre" type="add">
New Configurable interface.
</action>
<action dev="essiembre" type="add">
ConfigurationLoader can now load XML, JSON, and Yaml into objects.
</action>
<action dev="essiembre" type="add">
New PredicatedConsumer #isTrue and #isFalse and #elseConsumer methods.
</action>
<action dev="essiembre" type="add">
New Predicates #anyOf and #allOf methods.
</action>
<action dev="essiembre" type="add">
New Consumers #of method.
</action>
<action dev="essiembre" type="add">
New IOUtil #toNonNullWriter and #toNonNullOutputStream methods.
</action>
<action dev="essiembre" type="add">
New TextMatcher#isSet method.
</action>
<action dev="essiembre" type="update">
Now require Java 17+.
</action>
<action dev="essiembre" type="update">
Taglets rewritten to use the new jdk.javadoc.doclet.* API.
</action>
<action dev="essiembre" type="update">
EncryptionUtil now uses more secure cypher "AES/GCM/NoPadding" with
EncryptionKey default key size now being 256.
</action>
<action dev="essiembre" type="update">
SystemUtil method invoking Callable now throws an
UncheckedCallableException.
</action>
<action dev="essiembre" type="update">
Event name now included in generated string from Event#toString().
</action>
<action dev="essiembre" type="update">
Introduced Lombok.
</action>
<action dev="essiembre" type="update">
Huge jump in unit test code coverage.
</action>
<action dev="essiembre" type="update">
CollectionUtil#toArray now returns an empty array instead of null
when a null collection is supplied.
</action>
<action dev="essiembre" type="update">
Using a variables file with ConfigurationLoader now assumes the
".variables" format when its extension is neither ".variables" nor
".properties".
</action>
<action dev="essiembre" type="update">
Converter#toString(Object, String) will now return the default value
when the object is null.
</action>
<action dev="essiembre" type="update">
EncryptionUtil#main(String[]) no longer issue a System#exit.
</action>
<action dev="essiembre" type="update">
EventManager#removeListener not remove entries by identity to be
consistent with add methods.
</action>
<action dev="essiembre" type="update">
EqualUtil now considers supplying an empty vargars as always non equal.
</action>
<action dev="essiembre" type="update">
FileUtil#head now returns lines in order they are read.
</action>
<action dev="essiembre" type="update">
FileUtil#deleteEmptyDirs now deletes directories with empty
directories, recursively.
</action>
<action dev="essiembre" type="update">
FileUtil#deleteEmptyDirs now throws IOException.
</action>
<action dev="essiembre" type="update">
FileUtil#deleteEmptyDirs methods were overloaded to support Path.
</action>
<action dev="essiembre" type="update">
FileUtil#dirEmpty method was overloaded to support Path.
</action>
<action dev="essiembre" type="update">
FileUtil#moveFile was overloaded to support Path and now creates
missing directories in destination path. I also waits
half a second between retries (was 1 second).
</action>
<action dev="essiembre" type="update">
FileUtil#moveFileToDir was overloaded to support Path.
</action>
<action dev="essiembre" type="update">
FileUtil#dirHasFile was overloaded to support Path.
</action>
<action dev="essiembre" type="update">
Dependency "java.xml.bind" replaced by "jakarta.xml.bind".
</action>
<action dev="essiembre" type="update">
ByteArrayOutputStream#toString method was overloaded to support Charset.
</action>
<action dev="essiembre" type="update">
IInputStreamFilter is now deprecated in favor of a string Predicate.
</action>
<action dev="essiembre" type="update">
JarDuplicates #hasVersionConflict and #getLatestVersion methods have
been deprecated in favor of #areEquivalent and #getGreatest
respectively.
</action>
<action dev="essiembre" type="update">
JarFile #getPath has been deprecated in favor of #toFile.
</action>
<action dev="essiembre" type="update">
JarDuplicateFinder#findJarDuplicates method was overloaded to also
support collection of files.
</action>
<action dev="essiembre" type="update">
JarCopier now distinguish between source action and target action
when resolving jar conflicts. Deprecated integer-based on-conflict
strategies in favor of OnJarConflict.
</action>
<action dev="essiembre" type="update">
PropertyMatcher now support null field and value matchers.
</action>
<action dev="essiembre" type="update">
PropertyMatchers#addAll(varargs) now returns a boolean with a true
value if the list has changed. Null values are now ignored.
</action>
<action dev="essiembre" type="update">
Regex#setFlags now returns itself.
</action>
<action dev="essiembre" type="update">
YearMonthDay methods affected by time-zone now always use UTC.
</action>
<action dev="essiembre" type="update">
YearMonthDayInterval now supports null values to represent infinity.
</action>
<action dev="essiembre" type="update">
XML now implements #equals and #hashCode.
</action>
<action dev="essiembre" type="update">
XML#setTextContent now only sets the direct text, and no longer removes
other child elements.
</action>
<action dev="essiembre" type="update">
XML#populate and XML#validate methods no longer return
a list of errors. Relies on ErrorHandler instead.
</action>
<action dev="essiembre" type="update">
XML#join has been deprecated.
</action>
<action dev="essiembre" type="update">
XML can now be saved and loaded mixing both XMLConfigurable and JAXB
on the same class.
</action>
<action dev="essiembre" type="update">
XML#assertWriteRead now supports JAXB.
</action>
<action dev="essiembre" type="update">
XML now recognizes schemas for inner classes.
</action>
<action dev="essiembre" type="update">
Added extra safety checks in XMLUtil to prevent XXE attacks.
</action>
<action dev="essiembre" type="update">
Converter class renamed to GenericConverter.
</action>
<action dev="essiembre" type="update">
IConverter interface renamed to Converter.
</action>
<action dev="essiembre" type="update">
These interfaces were rename to the same name minus the "I":
IEventListener, IExceptionFilter, IRetriable, IFileChangeListener,
IFileVisitor, ICachedStream, IInputStreamFilter, IInputStreamListener,
IMapChangeListener, IDurationUnitFormatter, IXMLFlowConsumerAdapter,
IXMLFlowPredicateAdapter, IXMLConfigurable.
</action>
<action dev="essiembre" type="update">
XML#newXPath and XML#newXPathExpression are now deprecated in favor
of XPathUtil#newXPath and XPathUtil#newXPathExpression.
</action>
<action dev="essiembre" type="update">
TextMatcher now considers null values as non-matching by defualt.
</action>
<action dev="essiembre" type="update">
ContentFamily and ContentType are now thread-safe.
</action>
<action dev="essiembre" type="update">
BeanUtil#diff now display hashCode for any non-null values.
</action>
<action dev="essiembre" type="update">
BeanUtil#visit... will no process passed collections and maps.
</action>
<action dev="essiembre" type="update">
EnumConverter will now match values regardless of non-alphanumeric
characters they may contain.
</action>
<action dev="essiembre" type="update">
DateUtil now deprecated in favor of DateModel.
</action>
<action dev="essiembre" type="update">
Several classes previously implementing XMLConfigurable are no longer doing
so, in favor of Jackson based serialization.
</action>
<action dev="essiembre" type="update">
CachedOutputStream now has a dispose() method and close() has no effect.
</action>
<action dev="essiembre" type="fix">
Properties#loadFromXML is now null-safe.
</action>
<action dev="essiembre" type="fix">
Fixed CollectionUtil#testRemoveNulls having opposite effect.
</action>
<action dev="essiembre" type="fix">
Fixed ConfigurationLoader not resolving fragment ".variables" file
properly when including or parsing fragments.
</action>
<action dev="essiembre" type="fix">
Fixed CircularRange#is(...) always throwing IllegalArgumentException.
</action>
<action dev="essiembre" type="fix">
Fixed FileUtil#tail now always reading lines properly.
</action>
<action dev="essiembre" type="fix">
Fixed FileUtil#visitEmpty dir not always returning only empty dirs.
</action>
<action dev="essiembre" type="fix">
Fixed WebFile#compareTo throwing a ClassCastException when
comparing to another WebFile instance.
</action>
<action dev="essiembre" type="fix">
Fixed some InputStreamConsumer#consume methods not registering
listeners.
</action>
<action dev="essiembre" type="fix">
Fixed IOUtil#consumeUntil(Reader, IntPredicate) behaving like
"consumeWhile".
</action>
<action dev="essiembre" type="fix">
Fixed DateUtil#toDate[...](Instant) not converting non UTC dates
properly.
</action>
<action dev="essiembre" type="remove">
Removed a number of classes and methods deprecated in previous major
release:
*.lang.config.IXMLConfigurable, *.lang.encrypt.EncryptionXMLUtil,
*.lang.StringUtil, *.lang.map.Properties#set[...],
*.lang.map.PropertyMatcher#[...], ProxySettings get|setProxy[...],
DurationUtil, DataUnit#convert, DataUnit@to[...]., DataUnitFormatter
constructors.
</action>
<action dev="essiembre" type="remove">
Removed #finalize method from CachedInputStream and CachedOutputStream
(finalize is deprecated in the Java API since Java 9).
</action>
</release>
</body>
</document>