Author: csierra
Date: Tue Oct 10 15:51:30 2017
New Revision: 1811724
URL: http://svn.apache.org/viewvc?rev=1811724&view=rev
Log:
[Component-DSL] Eliminate mutable setter
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=1811724&r1=1811723&r2=1811724&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:30 2017
@@ -55,8 +55,8 @@ public class RouteOsgiImpl<T> extends OS
static class RouterImpl<T> implements Router<T> {
- RouterImpl(Consumer<Tuple<T>> signalAdding) {
- _signalAdding = signalAdding;
+ RouterImpl(Consumer<Tuple<T>> op) {
+ this.op = op;
}
@Override
@@ -83,13 +83,9 @@ public class RouteOsgiImpl<T> extends OS
public SentEvent<T> signalAdd(Event<T> event) {
Tuple<T> tuple = (Tuple<T>) event;
- Tuple<T> copy = Tuple.create(tuple._t);
+ Tuple<T> copy = tuple.copy();
- tuple.addRelatedTuple(copy);
-
- copy.setEvent(tuple);
-
- _signalAdding.accept(copy);
+ op.accept(copy);
return copy;
}
@@ -98,7 +94,7 @@ public class RouteOsgiImpl<T> extends OS
Consumer<Event<T>> _leaving = (ign) -> {};
private Runnable _close = NOOP;
- private final Consumer<Tuple<T>> _signalAdding;
+ private final Consumer<Tuple<T>> op;
private Runnable _start = NOOP;
}
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=1811724&r1=1811723&r2=1811724&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:30 2017
@@ -36,7 +36,7 @@ class Tuple<T> implements Event<T>, Sent
private final Deque<Runnable> _closingHandlers;
private final DoublyLinkedList<Tuple<?>> _relatedTuples;
private final AtomicBoolean closed = new AtomicBoolean(false);
- private Event<T> cause = this;
+ private Tuple<T> _cause = this;
private Tuple(T t) {
this(t, new LinkedList<>(), new DoublyLinkedList<>());
@@ -51,6 +51,16 @@ class Tuple<T> implements Event<T>, Sent
_relatedTuples = relatedTuples;
}
+ private Tuple(
+ T t, Deque<Runnable> closingHandlers,
+ DoublyLinkedList<Tuple<?>> relatedTuples,
+ Tuple<T> cause) {
+
+ this(t, closingHandlers, relatedTuples);
+
+ _cause = cause;
+ }
+
public void addRelatedTuple(Tuple<?> tuple) {
if (closed.get()) {
return;
@@ -97,13 +107,18 @@ class Tuple<T> implements Event<T>, Sent
_closingHandlers.push(terminator);
}
- public void setEvent(Event<T> event) {
- this.cause = event;
- }
-
@Override
public Event<T> getEvent() {
- return cause;
+ return _cause;
+ }
+
+ public Tuple<T> copy() {
+ Tuple<T> copy = new Tuple<>(
+ _t, new LinkedList<>(), new DoublyLinkedList<>(), this);
+
+ addRelatedTuple(copy);
+
+ return copy;
}
public void terminate() {