[Component-DSL] Sent notHighest after highest

In the event that a service is substituted by another service with
higher ranking first the existing service is signalled removed, then the
new service is sent down the `highest pipe` and then the old service is
sent down the `notHighestPipe`

git-svn-id: https://svn.apache.org/repos/asf/aries/trunk@1827580 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/HighestRankingOSGi.java b/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/HighestRankingOSGi.java
index fb0d8eb..918433a 100644
--- a/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/HighestRankingOSGi.java
+++ b/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/HighestRankingOSGi.java
@@ -56,12 +56,14 @@
 
                             if (old != null) {
                                 old._runnable.run();
-
-                                old._runnable = notHighestPad.publish(old._t);
                             }
 
                             tuple._runnable = highestPipe.apply(t);
 
+                            if (old != null) {
+                                old._runnable = notHighestPad.publish(old._t);
+                            }
+
                             sent.set(tuple);
                         } else {
                             tuple._runnable = notHighestPad.publish(t);