-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathchangelog.txt
848 lines (784 loc) · 55.4 KB
/
changelog.txt
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
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
Codeprimate Elements changelog.txt
----------------------------------
https://github.com/codeprimate-software/cp-elements/blob/master/changelog.txt
2.0.0-M5 - 2024-July-29
-----------------------
Release Codeprimate Elements 2.0.0-M5 with minor new features and enhancements.
* Build on Oracle Java (JDK) 17.0.12 2024-07-16 LTS (build 17.0.12+8-LTS-286).
* Builds and supports Elements on (up to) Java (JDK) 21 2024-07-16 LTS (build 21.0.4+8-LTS-274).
* Builds and supports Elements on (up to) Java (JDK) 22 2024-07-16 (build 22.0.2+9-70).
* Adds makeUnmodifiable() method to o.c.elements.util.MapBuilder.
* Adds putIfAbsent(..) method to o.c.elements.util.MapBuilder.
* Adds singleton() method to o.c.elements.util.MapBuilder.
* Adds synchronize() method to o.c.elements.util.MapBuilder.
* Creates UUIDConverter class in org.cp.elements.data.conversion.converter package.
* Edits Javadoc across API.
* Makes o.c.elements.security.model.User Serializable.
* Renames ExpectationException to ExpectedException.
* Renames Experimental annotation to ExperimentalApi.
* Renames noopSupplier() method to nullReturningSupplier() in FunctionUtils.
* Renames nullSafePredicateMatchAll(:Predicate) method to nullSafePredicateMatchingAll(..) in FunctionUtils.
* Renames nullSafePredicateMatchNone(:Predicate) method to nullSafePredicateMatchinNone(..) in FunctionUtils.
* Upgrades to Codeprimate Maven Build 2.0.0-M6.
* Upgrades to Maven Wrapper 3.3.2 with Maven 3.9.8.
2.0.0-M4 - 2023-November-23
---------------------------
Release Codeprimate Elements 2.0.0-M4 with updated reference documentation along with new features and enhancements.
* Build on Oracle Java (JDK) 17.0.8 2023-07-18 LTS (build 17.0.8+9-LTS-211).
* Builds and supports Elements on (up to) Java (JDK) 21 2023-09-19 LTS (build 21+35-LTS-2513).
* Adds assertDirectory(:File) utility method to FileUtils.
* Adds assertFile(:File) utility method to FileUtils.
* Adds ifThen(..) method to the Elements lang CodeBlocks class.
* Adds andThen(:Verifier) builder method to the Elements lang Verifier interface.
* Adds padLeft(:String, padding, length) utility method to the Elements lang StringUtils class.
* Adds assertNotEmpty(array) and assertNoNullElements(array) utility methods to ArrayUtils.
* Adds assertNotEmpty(:Collection) and assertNoNullElements(collection) utility methods to CollectionUtils.
* Adds assertNotEmpty(:Map) utility method to MapUtils.
* Creates new NoSuchDirectoryException class in the org.cp.elements.io package and adds factory methods
in ElementsExceptionsFactory.
* Creates new ManagementException class in the org.cp.elements.management package and adds factory methods
in ElementsExceptionsFactory.
* Creates new MonitoringException class in the org.cp.elements.management package and adds factory methods
in ElementsExceptionsFactory.
* Creates the new CombinatorialMathFunctions class in the new org.cp.elements.math package.
* Creates new ServiceNotProvidedException class in the org.cp.elements.service.provider package and adds factory methods
to ElementsExceptionsFactory.
* Creates new DurationFormatter class in the org.cp.elements.time package to parse String representations of
durations of time into a java.time.Duration instance.
* Creates new Timespan class in the org.cp.elements.time package modeling spans of time, or timeframes.
* Edits reference documentation to include information on Software Design Patterns as Code in Elements
to the Elements lang chapter.
* Maps TimeUnits to ChronoUnits for all enumerated values.
* Provides default no-op implementation of the validate() method in the Verifiable interface.
* Renames StringUtils.pad(..) method to StringUtils.padRight(..).
* Refactors the org.cp.elements.jdbc.AbstractDataSource class.
* Reviews and refactors org.cp.elements.jdbc.SqlType.
* Upgrades to Codeprimate Build 2.0.0-M5.
* Upgrades to DataFaker 2.0.2.
2.0.0-M3 - 2023-September-05
----------------------------
Release Codeprimate Elements 2.0.0-M3 with updated reference documentation. Additionally, cleans up Checkstyle and PMD
rule violations.
* Built on Oracle Java (JDK) 17.0.8 2023-July-18 LTS (build 17.0.8+9-LTS-211).
* Builds and supports Elements on (up to) Java (JDK) 20.0.2 (build 20.0.2+9-78).
* Adds map(:Function) method to the assertThat(:Object) DSL operator in LangExtensions.
* Adds mapTo(:Function<S, T>) method to the from(:Object) DSL operator in LangExtensions.
* Adds named(:String) factory method to User interface.
* Applies more Java 17 syntax (try-with-resources) to source thereby improving resource handling.
* Changes ObjectUtils.hashCodeFor(..) method multiplier to 31.
* Cleans up and configures Checkstyle rules.
* Cleans up and configures PMD rules.
* Creates the Locking utility class in org.cp.elements.lang.concurrent.lock package to run code atomically with a lock.
* Defines enumerations for Java 19, 20 and 21 in JavaVersions.
* Defines BeanIntrospectionException in the org.cp.elements.beans package to wrap JavaBeans IntrospectionExceptions.
* Defines CacheEntryException and CacheEntryNotFoundExceptions in the org.cp.elements.data.cache package
to further classify Exceptions while processing Cache entries.
* Edit reference documentation refining the chapter on Elements DSLs: assertThat, assertThat for Exceptions, from.
* Moves @GuardBy annotation to org.cp.elements.lang.concurrent.lock package.
* Moves @ThreadSafe annotation to org.cp.elements.lang.annotation package.
* Removes the Gender enum from org.cp.elements.enums package.
* Removes the Race enum from org.cp.elements.enums package.
* Upgrades to Codeprimate Build 2.0.0-M4.
* Upgrades to JMH 1.37.
* Upgrades to Maven 3.9.4.
2.0.0-M2 - 2023-July-04
-----------------------
Release Codeprimate Elements 2.0.0-M2 with Javadoc improvements.
* Built on Oracle Java (JDK) 17.0.7 2023-April-18 LTS (build 17.0.7+8-LTS-224).
* Builds and supports Elements on (up to) Java (JDK) 20.0.1 2023-April-18 (build 20.0.1+9-29).
* Adds JMH Benchmarks for Elements AbstractBean and the Cache (Service Provider Implementation) classes.
* Adds the isPrime(:int) utility method to the o.c.elements.lang.NumberUtils class.
* Defines the ThrowableFunction interface and extension of java.util.function.Function in the org.cp.elements.function
package to implement Functions whose operations can throw an exception.
* Defines the FunctionException and FunctionExecutionException, Java RuntimeException classes
in the org.cp.elements.function package to classify runtime exceptions thrown from Functions.
* Edits all Javadoc replacing empty lines with <p> HTML tags, correcting grammar and spelling errors
and fixing syntax errors in Javadoc tags (for example {@literal xyz}).
* Refactors source code to apply Java 17 syntax and features, such as the use of pattern variables in overridden
Object.equals(:Object) methods, enhanced switch statements and try-with-resources blocks.
* Renames the Maven project artifactId to 'elements'.
* Upgrades to Codeprimate Build 2.0.0-M3.
* Upgrades to the Build-Helper Maven Plugin 3.4.0.
* Upgrades to Maven 3.9.3.
* Upgrades to Maven Wrapper 3.2.0.
1.0.3 (SR3) - 2023-July-05
--------------------------
Release Codeprimate Elements 1.0.3, third maintenance (patch) release of 1.0 GA!
* Built with Oracle Java (JDK) 8; 1.8.0_361.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14 and Java 17.
* Builds and supports Codeprimate Elements on Gradle 8.2.
* Adds the isPrime(:int) utility method to the o.c.elements.lang.NumberUtils class.
* Edits all Javadoc replacing empty lines with <p> HTML tags, correcting grammar and spelling errors
and fixing syntax errors in Javadoc tags (for example {@literal xyz}).
* Upgrades to Codeprimate Build 2.0.0-M3.
* Upgrades to FreeFair Lombok Gradle Plugin 8.1.0.
* Upgrades to Gradle 8.2.
* Upgrades to Lombok 1.18.28.
* Upgrades to Maven 3.9.3.
* Upgrades to Maven Wrapper 3.2.0.
2.0.0-M1 - 2023-May-23
----------------------
Release Codeprimate Elements 2.0.0-M1 based on Java 17.
* Built on Oracle Java (JDK) 17.0.7 2023-04-18 LTS
* Rebases the Elements Java library and APIs on Java 17.
* Rebases the Elements test suite on JUnit 5 Jupiter.
* Rebases the Elements test suite on Mockito 5.3.1.
* Adapts to changes in JUnit 5 Jupiter API.
* Adapts to changes in Mockito 5 varargs method matchers.
* Adds assertThatArrayIndexOutOfBoundsException() method to the ThrowableAssertions class.
* Adds construct(:Class<?>, :Object...) and findDefaultConstructor(:Class<?>) methods to ClassUtils.
* Archives Apache Ivy XML build file, Gradle build and travis.yml build file.
* Cleans up all compiler warnings in source and test files.
* Edits Javadoc across the codebase.
* Fixes deprecations across the Elements library.
* Refactors the org.cp.elements.lang.Assert class.
* Removes deprecated checkAccess() method for java.lang.Thread.checkAccess() in the ThreadAdapter class.
* Replaces all JUnit 4 @org.junit.Test annotations with the JUnit 5 Jupiter @org.junit.jupiter.api.Test annotation.
* Replaces all uses of the JUnit 4 @RunWith annotation with the JUnit 5 Jupiter @ExtendsWith annotation.
* Replaces all uses of JUnit 4 @After, @AfterClass, @Before and @BeforeClass annotations
with JUnit 5 Jupiter @AfterAll, @AfterEach, @BeforeAll, and @BeforeEach annotations.
* Replaces all uses of the Mockito 4 MockitoJUnitRunner with Mockito 5's MockitoExtension.
* Replaces use of Class.newInstance() calls with Elements ObjectUtils.construct(:Class, :Object[]) method.
* Upgrades to Codeprimate Build 2.0.0-M2.
1.0.2 (SR2) - 2023-May-15
-------------------------
Release Codeprimate Elements 1.0.2, second maintenance (patch) release of 1.0 GA!
* Built on Oracle Java (JDK) 8; 1.8.0_362.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 8.1.1.
* Adds notInterrupted() assertion (method) to the o.c.elements.lang.Assert class.
* Adds -1 (MINUS_ONE) constant to the o.c.elements.lang.Integers class.
* Adds isMinusOne(:Integer) method to the o.c.elements.lang.Integers class.
* Defines the BeanPropertyToTableColumnResolver interface in the o.c.elements.data.struct.tabular.support package
* Defines the ImmutableIdentifiable interface in the org.cp.elements.lang package.
to support Bean Property to Table Column mappings in the Elements' Tabular Data Structure.
* Edit Java across the APIs in the codebase.
* Refactored o.c.elements.lang.Identifiable interface to extends the ImmutableIdentifiable interface.
* Refactored o.c.elements.service.loader.ServiceLoaderSupport.getServiceInstance(..) method to support
loading services by name.
* Replaces use of java.util.stream.StreamSupport with o.c.elements.util.stream.StreamUtils across the codebase.
* Reviewed and refactored the org.cp.elements.lang.CharacterUtils clas.
* Reviewed and refactored the org.cp.elements.lang.IdentifierSequence interface.
* Reviewed and refactored all Elements Tabular Data Structure (Table) interfaces and classes
in the org.cp.elements.data.struct.tabular package.
* Upgrades to Codeprimate Core 1.15.0.
* Upgrades to FreeFair Gradle Plugin 8.0.1.
* Upgrades to Gradle 8.1.1.
1.0.1 (SR1) - 2023-February-02
------------------------------
Release Codeprimate Elements 1.0.1, first maintenance (patch) release of the 1.0 GA!
* Built on Oracle Java (JDK) 8; 1.8.0_361.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 7.6.
* Adds asInteger(:Number) and isLessThanZero(:Integer) methods to the Integers class.
* Adds the countNumberOfDecimalPlaces(:double), roundToPrecision(..) and truncateToPrecision(..) methods
to the MathUtils class.
* Adds the nullSafeVisitor(:Visitor) factory method to the Visitor interface.
* Adds the asConfiguration() method to the o.c.elements.context.configure.ConfigurationService interface,
which creates a Composite of all the registered, managed and composed Configuration objects.
* Adds composeAnd(:Predicate<?>[]) and composeOr(:Predicate<?>[]) utility methods
to the o.c.elements.function.FunctionUtils class.
* Adds the getObjectFactory() and getProxyService() methods to the o.c.elements.service.ServiceTemplate interface.
* Adds the getServiceInstance(qualifierName:String) method to the o.c.elements.service.loader.ServiceLoaderSupport class
allowing services to be looked up by @Qualifier annotation name().
* Creates the new CachingSupplier interface in the org.cp.elements.function package, and extension of
java.util.function.Supplier to introduce caching behavior.
* Defines all LengthUnit enumerated values in terms of METERS.
* Edits Javadoc across the library.
* Fix bug in calculations of the pyramidVolume(..) method of MathUtils.
* Refactors the accept(:Visitor) method of the Visitable interface to be null-safe.
* Refactors the Rule interface and AbstractRule class in the org.cp.elements.biz.rules package.
* Removed the unnecessary use of deprecated MockitoMatchers.
* Reviewed and refactored the org.cp.elements.lang.LogicUtils class.
* Reviewed and refactored the org.cp.elements.lang.MathUtils class.
* Reviewed and refactored the org.cp.elements.lang.NumberUtils class.
* Reviewed and refactored the org.cp.elements.util.ComparatorResultBuilder class.
* Upgrades to Codeprimate Core 1.14.0.
* Upgrades to Maven 3.8.7.
1.0.0 (GA) - 2022-December-31
-----------------------------
Release Codeprimate Elements 1.0.0, first GA!
* Built on Oracle Java (JDK) 8; 1.8.0_351.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 7.6.
* Adds fromPredicate(:Predicate) factory method and asPredicate() builder method to ThrowableOperations.
* Edits reference documentation.
* Enabled Asciidoc (Maven Plugin) documentation generation; applied (CSS) styling.
* Upgrades to Codeprimate Core 1.13.0.
* Upgrades to Mockito 4.11.0.
1.0.0-RC2 - 2022-December-24
----------------------------
Edits Codeprimate Elements Reference Documentation.
* Built on Oracle Java (JDK) 8; 1.8.0_351.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 7.6.
* Adds @Qualifer annotation to qualify reference to collaborators from POJOs.
* Creates the AbstractVersionedObject class in the org.cp.elements.lang.support package.
* Creates the VersionService interface in the org.cp.elements.lang package.
* Creates the SimpleVersionService class implementing the VersionService interface
in the org.cp.elements.lang.support package.
* Creates the TimeBasedVersionService class implementing the VersionService interface
in the org.cp.elements.lang.support package.
* Creates the UUIdVersionService class implementing the VersionService interface
in the org.cp.elements.lang.support package.
* Fixes all source compiler warnings.
* Fixes additional Checkstyle warnings.
* Fixes additional PMD errors.
* Refactors the o.c.elements.lang.support.UUIDIdentifierSequence class to return a UUID.
* Upgrades to Codeprimate Core 1.11.0.
* Upgrades to FreeFair Lombok Gradle Plugin 6.6.1.
1.0.0-RC1 - 2022-December-12
----------------------------
Extends Codeprimate Elements Caching API and infrastructure. Fixes Checkstyle, PMD and SpotBugs errors/warnings.
* Built on Oracle Java (JDK) 8; 1.8.0_351.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 7.6.
* Adds package-info.java source files to the Elements library.
* Adds given(..) operator to o.c.elements.lang.LangExtensions.
* Adds runAtomically(..) method to o.c.elements.lang.concurrent.ThreadUtils.
* Fixed 5520 Checkstyle errors and warnings.
* Fixed many PMD errors.
* Fixed 29 SpotBugs bugs.
* Fixed and edited Javadoc.
* Renames o.c.elements.security.SecurityException to AbstractSecurityException and declares the class as abstract.
* Reviewed and refactored all Enums in the org.cp.elements.enums package.
* Reviewed and refactored the Elements Cache API and infrastructure in the org.cp.elements.data.caching package.
* Reviewed and refactored org.cp.elements.data.struct.KeyValue interface.
* Reviewed and refactored org.cp.elements.data.struct.SimpleKeyValue class.
* Reviewed and refactored org.cp.elements.data.struct.StringBasedKeyValue class.
* Reviewed and refactored org.cp.elements.data.struct.EnvironmentVariableValue class.
* Reviewed and refactored org.cp.elements.data.struct.SystemPropertyValue class.
* Upgrades to Codeprimate Core 1.10.0.
* Upgrades to Gradle 7.6.
* Upgrades to Mockito 4.9.0.
1.0.0-M9 - 2022-November-11
---------------------------
Extends Codeprimate Elements with robust Configuration API/model and Dependency Injection framework.
* Built on Oracle Java (JDK) 8; 1.8.0_351.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Builds and supports Codeprimate Elements on Gradle 7.5.1.
* Adds asSupplier(:Object) method to o.c.elements.function.FunctionUtils class.
* Adds noopSupplier():Supplier<T> factory method to o.c.elements.function.FunctionUtils class.
* Adds nullSafeConsumer(:Consumer) utility method to o.c.elements.function.FunctionUtils class.
* Adds nullSafeFunction(:Function<T, T>) utility method to o.c.elements.function.FunctionUtils class.
* Adds nullSafeSupplier(:Supplier<T>) utility method to o.c.elements.function.FunctionUtils class.
* Adds nullSafeFileFilter(:FileFilter) and nullSafeFilenameFilter(:FilenameFilter) methods
to o.c.elements.io.FileUtils class.
* Adds isBinaryString(:String) and isHexadecimalString(:String) utility methods to o.c.elements.lang.NumberUtils class.
* Adds castTo(:Object, :Class<T>) method in o.c.elements.lang.ClassUtils class.
* Adds from(:Object) operator (DSL builder method) to the o.c.elements.lang.LangExtensions class.
* Adds requireState(..) utility method to o.c.elements.lang.ObjectUtils class.
* Adds requireText(..) utility method to o.c.elements.lang.StringUtils class.
* Adds findFirstProxyFactory(:Object, :Class<?>[]) method to the o.c.elements.lang.reflect.ProxyService class.
* Adds utility methods to the o.c.elements.time.DataTimeUtils class converting Instant, LocalDateTime and ZonedDateTime
java.time types to milliseconds.
* Adds toAssociativeArray() method to o.c.elements.util.PropertiesAdapter class.
* Adds fromAssociativeArray(:String[]) factory method to o.c.elements.util.PropertiesBuilder class.
* Adds stream(:Enumeration) and stream(:Iterator) utility methods to o.c.elements.util.stream.StreamUtils class.
* Applies a precedence to the registered Converters in the ConversionService (ConverterRegistry) based on
the Converter's declared order.
* Changed o.c.elements.io.FileUtils.getName(:File) to handle Files with paths in their names.
* Changed o.c.elements.lang.ThrowableOperation from being a (is-a) Callable<?>, Consumer<?>, Runnable and Supplier<?>
to providing factory methods and conversion methods.
* Creates new Profile annotation in the org.cp.elements.context.annotation package.
* Creates new ConfigurationService interface in the org.cp.elements.context.configure package.
* Creates new AbstractConfigurationService class in the org.cp.elements.context.configure package.
* Creates new ConfigurationProperties annotation in the org.cp.elements.context.configure.annotation package.
* Creates new ElementsConfigurationService provider implementation of the ConfigurationService interface
in the org.cp.elements.context.configure.provider package.
* Creates new DelegatingConfiguration class in the org.cp.elements.context.configure.support package.
* Creates new DependencyInjection interface in the org.cp.elements.context.container package.
* Creates new VersionedObjectRepository interface in the org.cp.elements.dao.support package.
* Creates new CompressionException, Java RuntimeException class in the org.cp.elements.data.compression package.
* Creates new DecompressionException, Java RuntimeException class in the org.cp.elements.data.compression package.
* Creates new JavaDeflaterInflaterCompressor class in the org.cp.elements.data.compression.provider package
implementing the Compressor interface with Java's java.util.zip.Deflater and java.util.zip.Inflater classes.
* Creates new SimpleTypeConversions class and provider in the org.cp.elements.data.conversion.provider package.
* Creates new DeserializationException, Java RuntimeException class in the org.cp.elements.data.serialization package.
* Creates new SerializationException, Java RuntimeException class in the org.cp.elements.data.serialization package.
* Creates new JavaSerializationSerializer class in the org.cp.elements.data.serialization.provider package implementing
the Serializer interface with Java Serialization.
* Creates new TriFunction, @FunctionalInterface in the org.cp.elements.function package.
* Creates new FileLastModifiedFilterExtension class in the org.cp.elements.io package.
* Creates new Integers class in the org.cp.elements.lang package.
* Creates new NullSafeOperations class in the org.cp.elements.lang package.
* Creates new OrderUtils class in the org.cp.elements.lang package.
* Creates new Sourced interface in the org.cp.elements.lang package.
* Creates new Alias annotation in the org.cp.elements.lang.annotation package.
* Creates new Order annotation in the org.cp.elements.lang.annotation package.
* Creates new OrderComparator class in the org.cp.elements.lang.support package.
* Creates new SmartComparator class in the org.cp.elements.lang.support package.
* Creates new ServiceLoaderSupport class in the org.cp.elements.service.loader package.
* Creates new CheckedTestException class extending from java.lang.Exception in the org.cp.elements.test package.
* Declares @Order annotation on all numeric Converters.
* Defined constants for order in the o.c.elements.lang.Ordered interface.
* Defined the UndefinedPropertyException class in the org.cp.elements.util package for undefined (unset)
property configuration.
* Defined the UndeclaredPropertyException class in the org.cp.elements.util package for undeclared (not found)
property configuration.
* Moves o.c.elements.util.Environment class to org.cp.elements.context.env package.
* Renames the version() method to getVersion() in the o.c.elements.lang.Versionable interface.
* Renames the Versionable interface in the org.cp.elements.lang package to Versioned.
* Refactored the o.c.elements.data.conversion.provider.SimpleConversionService class.
* Refactored the getDigits(:String) and getLetters(:String) methods in o.c.elements.lang.StringUtils to be null-safe.
* Refactored the o.c.elements.lang.reflect.DelegatingMethodInterceptor class.
* Refactored the o.c.elements.lang.reflect.MethodInterceptor interface.
* Refactored the o.c.elements.lang.reflect.MethodInvocation class.
* Refactored the o.c.elements.lang.reflect.MethodInvokingMethodInterceptor class
* Refactored the o.c.elements.lang.reflect.ProxyService class.
* Refactored the o.c.elements.lang.reflect.ProxyFactory class.
* Refactored the o.c.elements.lang.reflect.provider.JdkDynamicProxiesFactory class.
* Refactored the o.c.elements.lang.reflect.support.ComposableInvocationHandler class.
* Refactored the o.c.elements.lang.support.OrderableComparator class.
* Refactored the o.c.elements.lang.support.OrderedComparator class.
* Refactored the o.c.elements.service.ServiceTemplate class.
* Refactored the o.c.elements.util.PropertiesAdapter class.
* Reviewed and refactored the org.cp.elements.context.configure.Configuration interface.
* Reviewed and refactored the org.cp.elements.context.configure.AbstractConfiguration class.
* Reviewed and refactored the org.cp.elements.context.configure.support.EnvironmentVariablesConfiguration class.
* Reviewed and refactored the org.cp.elements.context.configure.support.PropertiesConfiguration class.
* Reviewed and refactored the org.cp.elements.context.configure.support.SystemPropertiesConfiguration class.
* Reviewed and refactored the org.cp.elements.context.env.Environment class.
* Reviewed and refactored the org.cp.elements.data.conversion.Converter interface.
* Reviewed and refactored the org.cp.elements.data.conversion.AbstractConverter class.
* Reviewed and refactored the org.cp.elements.data.conversion.DefaultableConverter class.
* Reviewed and refactored all classes, enums, interfaces and components in the org.cp.elements.io package.
* Reviewed and refactored the org.cp.elements.lang.JavaType enum.
* Reviewed and refactored the org.cp.elements.lang.support.OrderableComparator class.
* Reviewed and refactored all classes, enums, interfaces and components in the org.cp.elements.net package.
* Reviewed and refactored the org.cp.elements.util.PropertiesAdapter class.
* Reviewed and refactored the org.cp.elements.util.PropertiesBuilder class.
* Reviewed and refactored the org.cp.elements.util.PropertiesSetter class.
* Reviewed and refactored the org.cp.elements.util.PropertiesUtils class.
* Upgrades Gradle build to Freefair Lombok Gradle Plugin 6.5.1.
* Upgrades to Codeprimate Core 1.9.0.
* Upgrades to JUnit (BOM) 5.9.1.
* Upgrades to Mockito 4.8.1.
1.0.0-M8 - 2022-September-09
----------------------------
Extends Codeprimate Elements with JavaBeans API and framework support.
* Built on Oracle Java (JDK) 8; 1.8.0_341.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14, Java 17 and Java 18.
* Changes Java Module Name to 'codeprimate.elements'.
* Introduces JavaBeans API and framework extensions and support.
*** Reviewed, refactored and extended the o.c.elements.beans.AbstractBean class.
*** Reviewed and refactored the org.cp.elements.beans.annotation types: @Default and @Required.
*** Added ChainedPropertyVetoException extending java.beans.PropertyVetoException in the org.cp.elements.beans package.
*** Added org.cp.elements.beans.model package and classes: BeanAdapter, BeanModel, Properties, Property,
along with AbstractIndexedProperty sub-types such as: ArrayProperty, ListProperty, MapProperty and SortedSetProperty.
*** Added the FieldResolver interface and PropertyNameFieldResolver class in the org.cp.elements.beans.model package
to resolve Fields from JavaBean (POJO) properties.
*** Added the AbstractListener, AbstractPropertyChangeListener and AbstractVetoableChangeListener classes
in the org.cp.elements.beans.event package to process and handle PropertyChangeEvents.
*** Added the ObjectEffectivelyImmutableVetoableChangeListener and RequiredPropertyVetoableChangeListener classes
in the org.cp.elements.beans.event.support package.
* Creates the new org.cp.elements.lang.PrimitiveTypeUtils class.
* Creates the new org.cp.elements.lang.ThrowableAssertions class.
* Creates the new org.cp.elements.lang.annotation.Transient annotation.
* Creates the new org.cp.elements.lang.reflect.Modifier enum.
* Creates the new org.cp.elements.data.compression.Compressor interface.
* Creates the new org.cp.elements.data.serialization.Serializer interface.
* Creates the new org.cp.elements.nio.BufferUtils class.
* Creates the new org.cp.elements.nio.ByteBufferInputStream class.
* Creates the new org.cp.elements.nio.ByteBufferOutputStream class.
* Creates the new org.cp.elements.process.BaseProcess abstract base class for java.lang.Process implementations.
* Creates the new org.cp.elements.test.TestError class.
* Creates the new org.cp.elements.util.stream.Streamable interface.
* Adds new getAllDeclaredFields(..) utility methods to org.cp.elements.lang.ClassUtils.
* Adds new getDeclaredMethod(:Class, :Method) utility method to org.cp.elements.lang.ClassUtils.
* Adds new hashCode(:Object[]) method to org.cp.elements.lang.ObjectUtils.
* Adds formal ADTs used to resolve java.lang.reflect.Method objects
in the org.cp.elements.lang.reflect.ReflectionUtils class.
* Adds new isOverloaded(:MethodReference) and isOverridden(:MethodReference) methods
to org.cp.elements.lang.reflect.ReflectionUtils.
* Adds new fromBinaryString(..) and fromHexadecimalString(..) utility methods to org.cp.elements.lang.NumberUtils.
* Adds NON_BINARY to the org.cp.elements.enums.Gender enum.
* Adds compose(:Function[]) method to the org.cp.elements.function.FunctionUtils class.
* Adds noopConsumer() factory method to the org.cp.elements.function.FunctionUtils class.
* Adds toFunction(:Predicate) method to the org.cp.elements.function.FunctionUtils class
to adapt a java.util.function.Predicate as a java.util.function.Function.
* Adds isMonth(:Month) like methods to the org.cp.elements.time.Month enum.
* Adds getNextMonth() and getPreviousMonth() methods to the org.cp.elements.time.Month enum.
* Adds isDay(:Weekday) like methods to the org.cp.elements.time.Weekday enum.
* Adds getTomorrow() and getYesterday() methods to the org.cp.elements.time.Weekday enum.
* Adds noNullElements(:Object[]) method to org.cp.elements.util.ArrayUtils.
* Adds subArray(:Object[], offset, length) method to org.cp.elements.util.ArrayUtils.
* Adds getLastElement(:List<T>[, defaultValue:T]) methods to org.cp.elements.util.CollectionUtils.
* Adds noNullElements(:Collection<?>) method to org.cp.elements.util.CollectionUtils.
* Adds noNullEntries(:Map<?, ?>) method to org.cp.elements.util.MapUtils.
* Adds toList(:Stream<?>) and toSet(:Stream<?>) methods to org.cp.elements.util.stream.StreamUtils.
* Fixes SpotBugs Errors.
* Improves the org.cp.elements.lang.ObjectUtils.clone(:Object) method to try Java Serialization.
* Moves Month, TimeUnit and Weekday enums from the org.cp.elements.enums package to org.cp.elements.time.
* Refactored the org.cp.elements.lang.NumberUtils class.
* Refactored the org.cp.elements.lang.ThrowableOperations class.
* Refactored the org.cp.elements.lang.reflect.ReflectionUtils class.
* Refactored the org.cp.elements.data.struct.KeyValue interface.
* Refactored the org.cp.elements.data.struct.SimpleKeyValue class.
* Refactored the org.cp.elements.io.FileSystemUtils class.
* Refactored the org.cp.elements.io.FileUtils class.
* Refactored the org.cp.elements.io.IOUtils class.
* Refactored the org.cp.elements.process.ProcessAdapter class.
* Refactored the org.cp.elements.process.util.ProcessUtils class.
* Refactored the org.cp.elements.security.SecurityException class to extend java.lang.SecurityException
and add a getCode() method (code property).
* Refactored the org.cp.elements.security.model.User interface to extend java.lang.Comparable.
* Refactored the org.cp.elements.util.ArrayUtils class.
* Renamed the getDescription() method to getDescriptor() in the org.cp.elements.lang.Describable interface.
* Renamed the org.cp.elements.beans.Describable interface to DescribableBean and extended o.c.elements.lang.Describable.
* Replaced all utility methods in the org.cp.elements.util.ArrayUtils class accepting a o.c.elements.lang.Filter
with java.util.function.Predicate.
* Replaced all utility methods in the org.cp.elements.util.CollectionUtils class accepting a o.c.elements.lang.Filter
with java.util.function.Predicate.
* Replaced all utility methods in the org.cp.elements.util.MapUtils class accepting a o.c.elements.lang.Filter
with java.util.function.Predicate.
* Reviewed and refactored the org.cp.elements.lang.ValueHolder class.
* Reviewed and refactored the org.cp.elements.lang.reflect.ModifierUtils class.
* Reviewed and refactored the org.cp.elements.service.ServiceTemplate interface.
* Reviewed and refactored the org.cp.elements.util.stream.StreamUtils class.
*** Adds the getCache(:String) and getConversionService() methods to ServiceTemplate.
* Reviewed and refactored the org.cp.elements.util.stream.StreamUtils class.
* Reviewed and refactored all Elements Annotations to use the proper meta-Annotations (e.g @Inherited)
and RetentionPolicies (e.g. SOURCE vs. RUNTIME).
* Upgrades to Codeprimate Core 1.8.0.
* Upgrades to AssertJ 3.23.1.
* Upgrades to Gradle 7.5.1.
* Upgrades to Mockito 4.8.0.
1.0.0-M7 - 2022-April-16
------------------------
Continued development of Codeprimate Elements beginning with a project review and refactoring.
* Built on Java (JDK) 8; 1.8.0_331.
* Builds and supports Codeprimate Elements on Java 8, Java 11, Java 14 and Java 17.
* Reviewed and refactored the org.cp.elements.ElementsVersion class.
* Reviewed and refactored the org.cp.elements.lang.Assert class.
*** Adds Assert.notEmpty(:Iterable) to assert methods and returns this from all assertions.
* Reviewed and refactored the org.cp.elements.lang.LangExtensions class.
*** Adds new getTargetAs(:Class) method to the assertThat operator.
*** Adds new isValid(:Predicate) method to the assertThat operator.
*** Changes the AssertThatExpression class to be extensible.
*** Adds the new notComparable(:Comparable) method to the is operator.
*** Adds the valid(:Predicate) method to the is operator.
*** Adds new type assertions: as(:Class), asString(), and asType(:Function<T, S>).
* Defines the new @Dsl annotation in the org.cp.elements.lang.annotation package.
* Reviewed and refactored the org.cp.elements.lang.annotation.FluentApi annotation
and org.cp.elements.lang.FluentExtensions class.
* Defines the new @InitializationSafe annotation in the org.cp.elements.lang.annotation package.
* Reviewed and refactored the org.cp.elements.lang.Lifecycle interface.
* Reviewed and refactored the org.cp.elements.lang.AssertionException class.
* Reviewed and refactored the org.cp.elements.lang.Auditable interface.
* Reviewed and refactored the org.cp.elements.lang.Identifiable interface.
* Reviewed and refactored the org.cp.elements.lang.support.AuditableAdapter class.
* Reviewed and refactored the org.cp.elements.lang.support.AuditableSupport class.
* Reviewed and refactored the org.cp.elements.lang.support.AuditableVisitor class.
* Reviewed and refactored the org.cp.elements.lang.support.IdentifiableAdaptor class.
* Reviewed and refactored the org.cp.elements.lang.support.IdentifiableSupport class.
* Reviewed and refactored the org.cp.elements.beans.Bean interface.
* Defines the ThrowableOperation interface in the org.cp.elements.lang package.
* Reviewed and refactored the org.cp.elements.lang.CheckedExceptionsFactory class.
* Reviewed and refactored the org.cp.elements.lang.RuntimeExceptionsFactory class.
* Defines the new CodeBlocks class in the org.cp.elements.lang package.
* Renamed the defaultIfNull(:Object[]) method in the org.cp.elements.lang.ObjectUtils class
to returnFirstNonNullValue(:Object[]).
* Defines the new Auditor interface in the org.cp.elements.lang package.
*** Refactor the the org.cp.elements.lang.AuditableVisitable class to the use the new Auditor interface.
* Defines the new Versionable interface in the org.cp.elements.lang package.
* Defines the new JavaVersion class in the org.cp.elements.lang package.
* Reviewed and refactored the org.cp.elements.lang.Builder interface.
* Reviewed and refactored the org.cp.elements.lang.Composite interface.
* Reviewed and refactored the org.cp.elements.lang.Visitable interface.
* Reviewed and refactored the org.cp.elements.lang.Visitor interface.
* Reviewed and refactored the org.cp.elements.lang.factory.ObjectFactory interface.
* Reviewed and refactored the org.cp.elements.lang.factory.AbstractObjectFactory class.
* Reviewed and refactored the org.cp.elements.lang.factory.provider.PrototypeObjectFactory class.
* Refactored the org.cp.elements.util.CollectionExtensions class.
* Reviewed and refactored the org.cp.elements.lang.factory.ObjectFactoryAware interface.
* Reviewed and refactored the org.cp.elements.lang.factory.ObjectFactoryReferenceHolder class.
* Reviewed and refactored the org.cp.elements.lang.concurrent.SimpleThreadFactory class.
* Reviewed and refactored the org.cp.elements.lang.concurrent.ThreadAdapter class.
* Reviewed and refactored the org.cp.elements.lang.concurrent.ThreadUtils class.
* Defines the new RuntimeUtils class in the org.cp.elements.lang package.
* Reviewed and refactored the org.cp.elements.lang.concurrent.GuardedBy annotation.
* Reviewed and refactored the org.cp.elements.lang.concurrent.ThreadSafe annotation.
* Reviewed and refactored the org.cp.elements.lang.BooleanUtils class.
* Defines the new FunctionUtils class in the org.cp.elements.function package.
* Defines the new CannedPredicates enum in the org.cp.elements.function package.
* Reviewed and refactored the org.cp.elements.beans.AbstractBean class.
* Defines the new LoserException class in the org.cp.elements.utils package.
* Defines the new BiFeederFunction class in the org.cp.elements.function package.
* Defines the new ClearDirtyStateVisitor class in the org.cp.elements.beans.support package.
* Reviewed and refactored the org.cp.elements.beans.event.ChangeEvent class.
* Reviewed and refactored the org.cp.elements.beans.event.ChangeListener interface.
* Reviewed and refactored the org.cp.elements.beans.event.ChangeRecorder class.
*** Renamed o.c.elements.beans.event.ChangeTracker to ChangeRecorder.
* Adds new requireObject(:Object) method to the org.cp.elements.lang.ObjectUtils class.
* Adds overloaded doOperationSafely(:ThrowableOperation, :Function) method to the org.cp.elements.lang.ObjectUtils class.
* Reviewed and refactored the org.cp.elements.beans.event.ChangeSupport class.
* Reviewed and refactored the org.cp.elements.enums.Gender enum.
* Reviewed and refactored the org.cp.elements.enums.LengthUnit enum.
* Reviewed and refactored the org.cp.elements.enums.WeightUnit enum.
* Reviewed and refactored the org.cp.elements.enums.Month enum.
* Reviewed and refactored the org.cp.elements.enums.Weekday enum.
* Reviewed and refactored the org.cp.elements.enums.Order enum.
* Reviewed and refactored the org.cp.elements.enums.Race enum.
* Reviewed and refactored the org.cp.elements.enums.TimeUnit enum.
* Reviewed and refactored the org.cp.elements.dao.DaoTemplate interface.
*** Renamed o.c.elements.dao.support.DaoSupport to DaoTemplate.
* Reviewed and refactored the org.cp.elements.service.ServiceTemplate interface.
*** Renamed o.c.elements.service.support.ServiceSupport to ServiceTemplate.
* Defines the new CacheException class in the org.cp.elements.data.cache package.
* Reviewed and refactored the org.cp.elements.data.cache.CachingTemplate class.
* Renamed refactored production *Tests classes to *UnitTests.
* Edited Javadoc across the API.
* Annotated the Codeprimate Elements classes and interfaces (APIs) with Element's @NotNull and @Nullable annotations.
* Upgrades to Codeprimate Core 1.7.0.
* Upgrades to Apache Maven 3.8.5.
* Upgrades to Apache Maven Wrapper 3.1.0.
* Upgrades to AssertJ 3.22.0.
* Upgrades to JUnit 4.13.2.
* Upgrades to Mockito 4.5.1.
* Upgrades to Project Lombok 1.18.24.
* Upgrades to Gradle 7.4.2.
1.0.0.M6 - 2021-January-21
--------------------------
Resurrected the Elements project (again) to move development forward.
* Refactored the org.cp.elements.ElementsVersion class.
* Creates a new o.c.e.lang.Describable interface defining a contract for objects that can be described
or provide a description.
* Adds the o.c.e.lang.annotation.NotNull annotation to describe non-null, required method parameters and return types.
* Adds the o.c.e.lang.annotation.Nullable annotation to describe nullable method parameters and return types.
* Reviewed and refactored the o.c.e.lang.Assert class.
* Reviewed and refactored the o.c.e.lang.BooleanUtils class.
* Refactored o.c.e.lang.ClassUtils.
* Refactored o.c.e.lang.ObjectUtils.
* Reviewed, refactored and moved the o.c.e.lang.DateTimeUtils class to the org.cp.elements.time package.
* Improved the o.c.e.dao.support.DaoSupport interface rounding out the basic CRUD and simple query
data access operations.
* Changes the o.c.e.security.model.User interface to extend the o.c.e.lang.Identifiable interface.
* Converts all JUnit Assert and Hamcrest Matchers to using AssertJ.
* Cleans up all compiler warnings and API deprecations.
* Upgrade to cp-core 1.3.0.RELEASE.
* Upgrade to AssertJ 3.18.1.
* Upgrade to Gradle 6.8.
* Upgrade to JUnit 4.13.1.
* Upgrade to Lombok 1.18.16.
* Upgrade to Mockito 3.7.7.
* Upgrade to FreeFair Lombok Gradle Plugin 5.3.0.
* Tasks completed here...
1.0.0.M5 - 2018-July-11
-----------------------
Introduces the new Tabular data structure.
* Created the o.c.e.util.paging.support.SimplePageable class wrapping a java.util.List to provide paging support.
* Added abstract support classes for the o.c.e.lang.Auditable and o.c.e.lang.Identifiable interfaces
in the o.c.e.lang.support package.
* Added the o.c.e.lang.support.PredicateToFilterAdapter class to adapt a java.util.function.Predicate
as a o.c.e.lang.Filter.
* Added the o.c.e.lang.support.FunctionToTransformerAdapter class to adapt a java.util.function.Function
as a o.c.e.lang.Transformer.
* Changed the o.c.e.data.conversion.Converter interface to extend the java.util.function.Function interface.
* Added the o.c.e.data.conversion.support.FunctionToConverterAdapter class to adapt a java.util.function.Function
as a o.c.e.data.conversion.Converter.
* Changed the com.sun.tools:attach-api to an optional dependency.
* Moved the o.c.e.enums.Country enumerated type to the cp-domain project.
* Moved the o.c.e.enums.State enumerated type to the cp-domain project.
* Added the o.c.e.lang.Renderable interface accepting a o.c.e.lang.Renderer to render the Renderable object as a String.
* Added the o.c.e.lang.Verifier interface to verify o.c.e.lang.Verifiable objects.
* Renamed o.c.e.lang.Verifyable to o.c.e.lang.Verifiable.
* Added the o.c.e.enums.LengthUnit enumerated type to define an enumeration of length measurements.
* Added the o.c.e.enums.WeightUnit enumerated type to define an enumeration of weight measurements.
* Created the Column, Row, Table and View interfaces, abstract classes an an in-memory provider implementation
in the org.cp.elements.data.struct.tabular package.
* Added doOperationSafely(..) operation to o.c.e.lang.ObjectUtils, which accepts a Lambda
and handles any checked Exceptions.
* Added deepCopy(..) and shallowCopy(..) operations to the o.c.e.util.ArrayUtils class.
* Upgraded to Apache Maven 3.5.4 using Maven Wrapper.
* Upgraded to Gradle 4.8.1.
* Upgraded to AssertJ 3.10.0.
* Upgraded to Lombok 1.18.0.
* Upgraded to Mockito 2.19.0.
1.0.0.M4 - 2018-January-21
--------------------------
Introduces new class types, data structures (e.g Caching) and tools.
* Created the o.c.e.ElementsVersion class to print version meta-data about the cp-elements project to the command-line.
* Refactored the o.c.e.lang.Executable interface to extend java.lang.Runnable.
* Created and defined a new o.c.e.lang.Registry interface for implementations to implement an object or service registry.
* Created the o.c.e.lang.RunnableUtils abstract utility class for working with java.lang.Runnable objects.
* Created the o.c.e.lang.Verifiable interface to validate the soft constraints, invariants and business rules
of application domain objects and components are upheld.
* Moved o.c.e.lang.NullSafe to the o.c.e.lang.annotation package.
* Renamed o.c.e.lang.DslExtension to o.c.e.lang.FluentApiExtension.
* Renamed o.c.e.lang.annotation.DSL to o.c.e.lang.annotation.FluentApi.
* Created the o.c.e.data.caching.Cache API and data structure.
* Created the o.c.e.data.struct.BloomFilter probabilistic data structure.
* Implement the o.c.e.data.struct.StringBasedKeyValue data structure.
* Moved the o.c.e.util.convert API to the o.c.e.data.conversion package.
* Performed code review, refactoring, bug fixes, enhancements and added new features to the Conversion API
based in o.c.e.data.conversion.
* Renamed o.c.e.jdbc.DataSourceAdapter to o.c.e.jdbc.AbstractDataSource.
* Created the o.c.e.security.model.User interface to model an application or system user.
* Created the o.c.e.service.support.AbstractCacheableService class for application service components
that support caching.
* Created the o.c.e.test.annotation.UnitTest Annotation to classify and mark Unit Tests.
* Created the new o.c.e.tools.io.ListFiles to recursively list the contents of a file system directory.
* Created the o.c.e.util.MapBuilder class for building java.util.Maps.
* Created the Paging API in the o.c.e.util.paging package.
* Created the o.c.e.util.zip.ZipUtils abstract utility class for working with JAR and ZIP files.
* Added java.util.ServiceLoader configuration in META-INF/services for a Caching provider / Cache implementation.
* Added java.util.ServiceLoader configuration in META-INF/services for a ConversionService provider.
* Added java.util.ServiceLoader configuration in META-INF/services for a ObjectFactory provider.
* Added java.util.ServiceLoader configuration in META-INF/services for a ProxyFactory provider.
* Started cp-elements project documentation and reference guide, written in Asciidoc.
* Upgraded to cp-core-1.2.0.RELEASE.
1.0.0.M3 - 2017-May-05
----------------------
Introduces the ProcessExecutor API in the org.cp.elements.process package for configuring, forking/launching
and managing processes.
* Applied Java 8 types and functionality throughout the codebase.
* Annotated all functional Elements interfaces with the java.lang.FunctionalInterface annotation.
* Created the o.c.e.beans.Describable interface used to describe an object.
* Renamed o.c.e.biz.rules.RuleFailureException to o.c.e.biz.rules.RuleException.
* Created the o.c.e.dao.annotation.Repository annotation to annotate/mark Data Access Objects (DAO).
* Created the KeyValue data structure in the new o.c.e.data.struct package.
* Created the EnvironmentVariableValue and SystemPropertyValue data structures extending the KeyValue class
in the o.c.e.data.struct package.
* Created the o.c.e.lang.CheckedExceptionFactory class to construct and initialize Java checked Exceptions with support
for message formatting and optional causes.
* Created the o.c.e.lang.ElementsExceptionFactory class to construct and initialize various Elements Exceptions
with support for message formatting and optional causes.
* Created the o.c.e.lang.RuntimeExceptionFactory class to construct and initialize Java RuntimeExceptions with support
for message formatting and optional causes.
* Created the o.c.e.lang.Builder interface for objects implementing the Builder Software Design Pattern.
* Created the o.c.e.lang.Composite interface for objects implementing the Composite Software Design Pattern;
additionally, refactored all Composite-like framework components to implement the Composite interface.
* Created the o.c.e.lang.Executable functional interface to define a contract for implementing objects
that can be executed.
* Created the o.c.e.lang.JavaType enumeration to enumerate various Java language Class types.
* Created the o.c.e.lang.Nameable interface to define a contract for objects that can be named.
* Created the o.c.e.lang.Version class to model software version numbers.
* Created the o.c.e.lang.annotation.Experimental annotation to annotate experimental features in the API/framework.
* Created the o.c.e.lang.annotation.Immutable annotation to annotate/mark immutable objects.
* Created the o.c.e.lang.reflect.MethodInterceptor interface to define a contract of objects
intercepting method invocations on target object.
* Created the o.c.e.lang.reflect.MethodInvocation class to model the invocation of a method on an object or a class.
* Created the o.c.e.lang.reflect.MethodInvokingMethodInterceptor class implementing the MethodInterceptor interface
to invoke the intercepted method on the target object.
* Created the o.c.e.lang.reflect.ModifierUtils utility class to evaluate Java modifiers.
* Created the o.c.e.lang.reflect.ProxyFactory to create proxied objects.
* Created the o.c.e.lang.reflect.ProxyService to find and load ProxyFactory service provider implementations.
* Created the o.c.e.lang.reflect.provider.JdkDynamicProxyFactory to create JDK Dynamic Proxies for objects.
* Created the o.c.e.lang.reflect.support.ComposableInvocationHandler to compose a collection of
* Created the o.c.e.lang.reflect.support.DelegatingMethodInterceptor to wrap an existing MethodInterceptor.
java.lang.reflect.InvocationHandlers used in a proxied object to handle method invocations.
* Created the o.c.e.lang.support.HashCodeBuilder class for computing hash codes of an object.
* Added the valueOf(:AtomicBoolean) method to the o.c.e.lang.BooleanUtils class.
* Added the isConstructorWithArrayParameter(:Constructor) and isDefaultConstructor(:Constructor) methods
to the o.c.e.lang.ClassUtils class.
* Added the hasMainMethod(:Class) and isMainMethod(:Method) methods ot the o.c.e.lang.ClassUtils class.
* Added the getInterfaces(:Object) and getInterfaces(:Class) methods to the o.c.e.lang.ClassUtils class.
* Added the implementsInterfaces(:Object) and implementsInterfaces(:Class) methods to the o.c.e.lang.ClassUtils class.
* Added a Null-safe Navigation Operator to the o.c.e.lang.LangExtensions class.
* Added the defaultIfNull(:Object, :Supplier), isNullOrEqualTo(:Object, :Object) and returnValueOrThrowIfNull() methods
to the o.c.e.lang.ObjectUtils class.
* Added the safeGetValue(:Supplier) method on the o.c.e.lang.ObjectUtils class.
* Refactored and polished the o.c.e.lang.ThrowableUtils class; added a null-safe getCause(:Throwable) method.
* Renamed o.c.e.lang.LangExtensions.AssertThat.using(:String, :Object[])
to o.c.e.lang.LangExtensions.AssertThat.stating(:String, :Object[]) to clearly indicate the caller
is specifying a message with arguments to use in the assertion error.
* Added the newSocketAddress(port) and newSocketAddress(host, port) methods to the o.c.e.net.NetworkUtils class.
* Added port parsing methods to the o.c.e.net.NetworkUtils class.
* Fixed bug in o.c.e.net.NetworkUtils.availablePort() method to properly close the java.net.ServerSocket
even in the event of a IOException.
* Created the o.c.e.service.annotation.Service annotation to annotate/mark Service objects.
* Created the o.c.e.test.Tester functional interface to define a contract for implementing objects that perform
a single test returning a boolean value to indicate pass or fail.
* Created the o.c.e.test.annotation.SubjectUnderTest stereotype annotation to annotate/mark the object that is
the subject of a test.
* Created the o.c.e.text.FormatUtils abstract utility class for formatting text content.
* Created the ConnectionTester tool in the o.c.e.tools.net package to test the connection state of a Network Socket.
* Created the EchoClient and EchoServer programs in the o.c.e.tools.net package.
* Created the o.c.e.util.ComparatorResultBuilder to build a comparison expression composed of
Comparable objects.
* Created the o.c.e.util.Environment class to model the current system environment.
* Created the o.c.e.util.PropertiesSetter class for setting properties on a java.util.Properties object.
* Created the o.c.e.util.PropertiesUtils class for working with java.util.Properties objects.
* Created the ReadOnlyException and WriteOnlyException in the org.cp.elements.util package.
* Added the indexOf(array, element) method to the o.c.e.util.ArrayUtils class.
* Added an overloaded sort(array, :Comparator) method to the o.c.e.util.ArrayUtils class.
* Added the toStringArray(:Object[]) method to the o.c.e.util.ArrayUtils class.
* Added the add(:Collection, :Iterable), asSet(array), defaultIfEmpty(:Iterable, default:Iterable), toList(:Iterable)
and toSet(:Iterable) methods to the o.c.e.util.CollectionUtils class.
* Added the o.c.e.util.ComparatorUtils.nullSafeArgumentsComparator(:Comparator) method to guard against null arguments
passed to the java.util.Comparator implementation during the comparison operation.
* Added the o.c.e.util.ComparatorsUtils.nullSafeComparator(:Comparator) method to guard against null
java.util.Comparator references, providing a null-safe, default java.lang.Comparable java.util.Comparator
implementation.
* Added toString(:Map<?, ?>) method to the o.c.e.util.MapUtils class.
* Added the fromAssociativeArray(:String[]:Map and toAssociativeArray(:Map):String[] methods to
the o.c.e.util.MapUtils class.
* Added a toMap() method to the o.c.e.util.PropertiesAdapter class.
* Added the fromEnvironmentVariables() factory method to the o.c.e.util.PropertiesBuilder class.
* Added an from(:Reader) factory method to the o.c.e.util.PropertiesBuilder class.
* Added AssertJ and Lombok test compile dependencies to improve test code quality.
* Upgraded to Mockito 2.7.22.
1.0.0.M2 - 2016-September-05
----------------------------
Code review, refactoring, enhancements and new features introduced in the org.cp.elements.lang, org.cp.elements.io,
org.cp.elements.net and org.cp.elements.util packages.
* Added additional assertions in the o.c.e.lang.Assert class to default the message in the thrown RuntimeException.
* Refactored the Auditable interface to use the new Java 8, java.time.LocalDateTime API for tracking created,
lastModified and modified dates and times.
* Refactored the Auditable interface to extend Identifiable thereby improving audit tracking details and information.
* Refactored the Auditable interface by adding builder methods to conveniently set auditing properties
of application domain objects.
* Refactored the Auditable interface by renaming the date/time and process tracking properties.
* Added the locateClass(:String) method to the ClassUtils class to locate a Class by name in the file system.
* Refactored the Identifiable interface adding default, defender methods for isNew and isNotNew.
* Refactored the Identifiable interface adding a builder method to conveniently set an application domain object's
identifier.
* Reviewed, refactored and added additional test coverage to the org.cp.elements.io API...
* Added additional FileFilters, such as the Executable, Hidden, Readable and Writable file filters.
* Improved the utility and usefulness of the IOUtils, FileUtils and FileSystemUtils classes.
* Reviewed, refactored and added additional test coverage to the org.cp.elements.net API...
* Improved the utility and usefulness of the NetworkUtils class.
* Improved the ArrayUtils, CollectionUtils and MapUtils utility classes for working with Arrays and Collections,
respectively, cleaning up the interface and promoting consistent functionality and operations
between Arrays and Collections.
* Added the PropertiesAdapter and PropertiesBuilder utility classes for conveniently working with java.util.Properties.
* Added a new ClassLocator tool in the org.cp.elements.tools package for locating Java classes on the classpath by name.
* Add a Gradle build to this project.
* Enabled Travis CI for this project.
1.0.0.M1 - 2016-January-03
--------------------------
Code review, refactoring, enhancements and new features introduced in the org.cp.elements.lang package.
* Added the assertThat(..) language expression and extension.
* Added the IdentifierSequence API along with supporting implementation classes.
* Introduced a SystemUtilities class for interacting with the application's operating system environment.
* Introduced a ThreadAdapter class for adapting the java.lang.Thread API.
* Modified the build to generate source archive, Javadoc and digitally sign release artifacts.
* Added Surefire Reporting, Checkstyle, FindBugs and PMD code analytics to the Elements Maven POM.
* Enabled Maven Changelog Plugin along with Site generation.
* Added Nexus Staging Maven Plugin
birth - 2011-October-03
-----------------------
Key features of the 1.0.0 inception is the Language extensions and concurrent utilities, IO utilities
and supporting classes, Network utilities and supporting classes, Reflection utilities, Collection Framework utilities,
ObjectFactory API, Beans API, Business Rules API, Configuration API, Conversion API, Search API and the Sorting API.
* Includes the org.cp.elements.beans package.
* Includes the org.cp.elements.biz.rules package.
* Includes the org.cp.elements.context.configure package.
* Includes the org.cp.elements.dao package.
* Includes the org.cp.elements.enums package.
* Includes the org.cp.elements.io package.
* Includes the org.cp.elements.jdbc package.
* Includes the org.cp.elements.lang package.
* Includes the org.cp.elements.lang.concurrent package.
* Includes the org.cp.elements.lang.factory package.
* Includes the org.cp.elements.lang.reflect package.
* Includes the org.cp.elements.net package.
* Includes the org.cp.elements.security package.
* Includes the org.cp.elements.service package.
* Includes the org.cp.elements.text package.
* Includes the org.cp.elements.tools package.
* Includes the org.cp.elements.util package.
* Includes the org.cp.elements.util.convert package.
* Includes the org.cp.elements.util.search package.
* Includes the org.cp.elements.util.sort package.