This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch debugger
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit a3342a09368aea8d2878f11c88e78db6a38115d7
Author: Bertty Contreras-Rojas <[email protected]>
AuthorDate: Tue Apr 6 12:07:23 2021 -0400

    [WAYANG-28] add OneElementIterator.java
---
 .../hackit/core/iterator/OneElementIterator.java   | 58 ++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git 
a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/OneElementIterator.java
 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/OneElementIterator.java
new file mode 100644
index 0000000..5f5c0dd
--- /dev/null
+++ 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/OneElementIterator.java
@@ -0,0 +1,58 @@
+package org.apache.wayang.plugin.hackit.core.iterator;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+public class OneElementIterator<T> implements Iterator<T>, Iterable<T>{
+
+    private final boolean removeAllowed;
+    private boolean beforeFirst;
+    private boolean removed;
+    private T object;
+
+    public OneElementIterator(T object) {
+        this(object, true);
+    }
+
+    public OneElementIterator(T object, boolean removeAllowed) {
+        this.beforeFirst = true;
+        this.removed = false;
+        this.object = object;
+        this.removeAllowed = removeAllowed;
+    }
+
+    public boolean hasNext() {
+        return this.beforeFirst && !this.removed;
+    }
+
+    public T next() {
+        if (this.beforeFirst && !this.removed) {
+            this.beforeFirst = false;
+            return this.object;
+        } else {
+            throw new NoSuchElementException();
+        }
+    }
+
+    public void remove() {
+        if (this.removeAllowed) {
+            if (!this.removed && !this.beforeFirst) {
+                this.object = null;
+                this.removed = true;
+            } else {
+                throw new IllegalStateException();
+            }
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+    public void reset() {
+        this.beforeFirst = true;
+    }
+
+    @Override
+    public Iterator<T> iterator() {
+        return this;
+    }
+}

Reply via email to