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