This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new aea5821de7 ISIS-3084: commons: make _List concat utils null-safe
aea5821de7 is described below
commit aea5821de7070759a956bbd367d907f39d936109
Author: Andi Huber <[email protected]>
AuthorDate: Thu Jun 30 10:39:26 2022 +0200
ISIS-3084: commons: make _List concat utils null-safe
---
.../isis/commons/internal/collections/_Lists.java | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git
a/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
b/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
index 2d5ed27a6d..56ecdeb6ab 100644
---
a/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
+++
b/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
@@ -77,7 +77,10 @@ public final class _Lists {
* Returns an unmodifiable list containing all elements from given list
* and the specified element.
*/
- public static <T> List<T> append(final List<T> list, final T element) {
+ public static <T> List<T> append(final @Nullable List<T> list, final
@Nullable T element) {
+ if(_NullSafe.isEmpty(list)) {
+ return Collections.singletonList(element);
+ }
val resultList = new ArrayList<T>(list.size() + 1);
resultList.addAll(list);
resultList.add(element);
@@ -88,7 +91,21 @@ public final class _Lists {
* Returns an unmodifiable list containing all elements from given lists
* list1 and list2.
*/
- public static <T> List<T> concat(final List<T> list1, final List<T> list2)
{
+ public static <T> List<T> concat(final @Nullable List<T> list1, final
@Nullable List<T> list2) {
+ val isEmpty1 = _NullSafe.isEmpty(list1);
+ val isEmpty2 = _NullSafe.isEmpty(list2);
+
+ if(isEmpty1) {
+ return isEmpty2
+ ? Collections.emptyList()
+ : Collections.unmodifiableList(new ArrayList<T>(list2));
+ }
+
+ if(isEmpty2) {
+ // at this point list1 is not empty
+ return Collections.unmodifiableList(new ArrayList<T>(list1));
+ }
+
val resultList = new ArrayList<T>(list1.size() + list2.size());
resultList.addAll(list1);
resultList.addAll(list2);