You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2017/10/10 15:51:47 UTC

svn commit: r1811726 - in /aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal: RouteOsgiImpl.java Tuple.java

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();
 			}
 		}