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 d22790782f5623c2fdb29398a8c6f6aa16d9424a
Author: Bertty Contreras-Rojas <[email protected]>
AuthorDate: Tue Apr 6 11:53:17 2021 -0400

    [WAYANG-28] add EmptyInjector implementation
---
 .../hackit/core/iterator/ElementPlusIterator.java  | 36 ++++++++++++++++
 .../hackit/core/sniffer/inject/EmptyInjector.java  | 49 ++++++++++++++++++++++
 2 files changed, 85 insertions(+)

diff --git 
a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/ElementPlusIterator.java
 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/ElementPlusIterator.java
new file mode 100644
index 0000000..73353bc
--- /dev/null
+++ 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/iterator/ElementPlusIterator.java
@@ -0,0 +1,36 @@
+package org.apache.wayang.plugin.hackit.core.iterator;
+
+import java.util.Iterator;
+
+public class ElementPlusIterator<T> implements Iterator<T> {
+
+    private boolean element_consumed = false;
+    private T element;
+    private Iterator<T> iterator;
+
+
+    public ElementPlusIterator(T element, Iterator<T> iterator) {
+        if(element == null){
+            throw new RuntimeException("the element can't be null");
+        }
+        this.element = element;
+        this.iterator = iterator;
+    }
+
+    @Override
+    public boolean hasNext() {
+        if( ! this.element_consumed ){
+            return true;
+        }
+        return this.iterator.hasNext();
+    }
+
+    @Override
+    public T next() {
+        if( ! this.element_consumed ){
+            this.element_consumed = true;
+            return this.element;
+        }
+        return this.iterator.next();
+    }
+}
diff --git 
a/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/sniffer/inject/EmptyInjector.java
 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/sniffer/inject/EmptyInjector.java
new file mode 100644
index 0000000..689882d
--- /dev/null
+++ 
b/wayang-plugins/wayang-hackit/wayang-hackit-core/src/main/java/org/apache/wayang/plugin/hackit/core/sniffer/inject/EmptyInjector.java
@@ -0,0 +1,49 @@
+package org.apache.wayang.plugin.hackit.core.sniffer.inject;
+
+import org.apache.wayang.plugin.hackit.core.iterator.ElementPlusIterator;
+
+import java.util.Iterator;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.StreamSupport;
+
+public class EmptyInjector<T> implements Injector<T>{
+
+    @Override
+    public Iterator<T> inject(T element, Iterator<T> iterator) {
+        return
+            StreamSupport.stream(
+                Spliterators.spliteratorUnknownSize(
+                    new ElementPlusIterator<T>(
+                        element,
+                        iterator
+                    ),
+                    Spliterator.ORDERED
+                ),
+                false
+            ).map(
+                (T _element) -> {
+                    if (this.is_halt_job(_element)) {
+                        try {
+                            Thread.sleep(1000);
+                        } catch (InterruptedException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    return _element;
+                }
+            ).filter(
+                (T _element) -> ! this.is_skip_element(_element)
+            ).iterator();
+    }
+
+    @Override
+    public boolean is_skip_element(T element) {
+        return false;
+    }
+
+    @Override
+    public boolean is_halt_job(T element) {
+        return false;
+    }
+}

Reply via email to