Author: csierra
Date: Tue Oct 10 15:51:47 2017
New Revision: 1811726

URL: http://svn.apache.org/viewvc?rev=1811726&view=rev
Log:
[Component-DSL] Remove SentEvent from Tuple

Modified:
    
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java
    
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/Tuple.java

Modified: 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java?rev=1811726&r1=1811725&r2=1811726&view=diff
==============================================================================
--- 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java
 (original)
+++ 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java
 Tue Oct 10 15:51:47 2017
@@ -83,11 +83,21 @@ public class RouteOsgiImpl<T> extends OS
         public SentEvent<T> signalAdd(Event<T> event) {
             Tuple<T> tuple = (Tuple<T>) event;
 
-            Tuple<T> copy = tuple.copy();
+            Tuple<T> copy = tuple.map(x -> x);
 
             op.accept(copy);
 
-            return copy;
+            return new SentEvent<T>() {
+                @Override
+                public Event<T> getEvent() {
+                    return tuple;
+                }
+
+                @Override
+                public void terminate() {
+                    copy.terminate();
+                }
+            };
         }
 
         Consumer<Event<T>> _adding = (ign) -> {};

Modified: 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/Tuple.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/Tuple.java?rev=1811726&r1=1811725&r2=1811726&view=diff
==============================================================================
--- 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/Tuple.java
 (original)
+++ 
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/Tuple.java
 Tue Oct 10 15:51:47 2017
@@ -24,30 +24,29 @@ import org.apache.aries.osgi.functional.
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.LinkedList;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Function;
 
 /**
  * @author Carlos Sierra Andrés
  */
-class Tuple<T> implements Event<T>, SentEvent<T> {
+class Tuple<T> implements Event<T> {
 
        public final T _t;
        private final Deque<Runnable> _closingHandlers = new LinkedList<>();
        private final DoublyLinkedList<Tuple<?>> _relatedTuples = new 
DoublyLinkedList<>();
-       private volatile boolean closed = false;
-       private Tuple<T> _cause = this;
+       private volatile boolean _closed = false;
 
        private Tuple(T t) {
                _t = t;
        }
 
-       private Tuple(T t, Tuple<T> cause) {
-               this(t);
-               _cause = cause;
-       }
-
        public void addRelatedTuple(Tuple<?> tuple) {
+               if (_closed) {
+                       tuple.terminate();
+
+                       return;
+               }
+
                DoublyLinkedList.Node<Tuple<?>> tupleNode = 
_relatedTuples.addLast(
                        tuple);
 
@@ -74,7 +73,7 @@ class Tuple<T> implements Event<T>, Sent
        }
 
        public boolean isClosed() {
-               return closed;
+               return _closed;
        }
 
        public <S> Tuple<S> map(Function<? super T, ? extends S> fun) {
@@ -86,24 +85,17 @@ class Tuple<T> implements Event<T>, Sent
        }
 
        public void onTermination(Runnable terminator) {
-               _closingHandlers.push(terminator);
-       }
+               if (_closed) {
+                       terminator.run();
 
-       @Override
-       public Event<T> getEvent() {
-               return _cause;
-       }
-
-       public Tuple<T> copy() {
-               Tuple<T> copy = new Tuple<>(_t, this);
-
-               addRelatedTuple(copy);
+                       return;
+               }
 
-               return copy;
+               _closingHandlers.push(terminator);
        }
 
        public void terminate() {
-               closed = true;
+               _closed = true;
 
                Iterator<Tuple<?>> iterator = _relatedTuples.iterator();
 
@@ -116,7 +108,6 @@ class Tuple<T> implements Event<T>, Sent
                                next.terminate();
                        }
                        catch (Exception e) {
-                               e.printStackTrace();
                        }
                }
 


Reply via email to