You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/01/19 16:16:06 UTC
[isis] 01/07: ISIS-2223: polish _NullSafe.stream(final
Enumeration enumeration)
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
commit 6c3b60f17f18859059cd2e44238a471d29ea5035
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 19 16:50:31 2020 +0100
ISIS-2223: polish _NullSafe.stream(final Enumeration<T> enumeration)
---
.../isis/core/commons/internal/base/_NullSafe.java | 25 +++++++++++++---------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_NullSafe.java b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_NullSafe.java
index 39f9677..cab636f 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_NullSafe.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_NullSafe.java
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
+import java.util.function.Consumer;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -124,20 +125,24 @@ public final class _NullSafe {
*/
public static <T> Stream<T> stream(final Enumeration<T> enumeration){
return enumeration!=null
- ? stream(toIterator(enumeration))
+ ? StreamSupport.stream(toSpliterator(enumeration), /*parallel*/false)
: Stream.empty();
}
- // [ahuber] not public, since one time use of enumeration only!
- private static <T> Iterator<T> toIterator(final Enumeration<T> e){
- return new Iterator<T>() {
- @Override
- public T next() {
- return e.nextElement();
+ // not public, used internally for stream(Enumeration) only
+ private static <T> Spliterator<T> toSpliterator(final Enumeration<T> e){
+ return new Spliterators.AbstractSpliterator<T>(Long.MAX_VALUE, Spliterator.ORDERED) {
+ public boolean tryAdvance(Consumer<? super T> action) {
+ if(e.hasMoreElements()) {
+ action.accept(e.nextElement());
+ return true;
+ }
+ return false;
}
- @Override
- public boolean hasNext() {
- return e.hasMoreElements();
+ public void forEachRemaining(Consumer<? super T> action) {
+ while(e.hasMoreElements()) {
+ action.accept(e.nextElement());
+ }
}
};
}