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/09/29 13:20:30 UTC

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

Author: csierra
Date: Fri Sep 29 13:20:30 2017
New Revision: 1810095

URL: http://svn.apache.org/viewvc?rev=1810095&view=rev
Log:
[Component-DSL] Extract route to a different class

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

Modified: aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/OSGiImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/OSGiImpl.java?rev=1810095&r1=1810094&r2=1810095&view=diff
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/OSGiImpl.java (original)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/OSGiImpl.java Fri Sep 29 13:20:30 2017
@@ -170,46 +170,7 @@ public class OSGiImpl<T> implements OSGi
 
 	@Override
 	public OSGi<T> route(Consumer<Router<T>> routerConsumer) {
-
-		Pipe<Tuple<T>, Tuple<T>> outgoingAddingPipe = Pipe.create();
-
-		Consumer<Tuple<T>> outgoingAddingSource =
-			outgoingAddingPipe.getSource();
-
-		final RouterImpl<T> router =
-			new RouterImpl<>(outgoingAddingSource);
-
-		routerConsumer.accept(router);
-
-		return new OSGiImpl<>(((bundleContext) -> {
-			OSGiResultImpl<T> osgiResult = _operation.run(bundleContext);
-
-			osgiResult.added.map(
-				t -> {
-					Tuple<T> copy = Tuple.create(t.t);
-
-					t.onTermination(() -> {
-						router._leaving.accept(copy);
-
-						copy.terminate();
-					});
-
-					router._adding.accept(copy);
-
-					return null;
-				});
-
-			return new OSGiResultImpl<>(
-				outgoingAddingPipe,
-				() -> {
-					router._start.run();
-					osgiResult.start.run();
-				},
-				() -> {
-					router._close.run();
-					osgiResult.close.run();
-				});
-		}));
+		return new RouteOsgiImpl<>(this, routerConsumer);
 	}
 
 	private static class Pair<X, Y> {
@@ -392,51 +353,6 @@ public class OSGiImpl<T> implements OSGi
 		addedSource.accept(tuple);
 	}
 
-	static class RouterImpl<T> implements Router<T> {
-
-		RouterImpl(Consumer<Tuple<T>> signalAdding) {
-			_signalAdding = signalAdding;
-		}
-
-		@Override
-		public void onIncoming(Consumer<Event<T>> adding) {
-			_adding = adding;
-		}
-
-		@Override
-		public void onLeaving(Consumer<Event<T>> removing) {
-			_leaving = removing;
-		}
-
-		@Override
-		public void onClose(Runnable close) {
-			_close = close;
-		}
-
-		@Override
-		public void onStart(Runnable start) {
-			_start = start;
-		}
-
-		@Override
-		public void signalAdd(Event<T> event) {
-			_signalAdding.accept((Tuple<T>) event);
-		}
-
-		@Override
-		public void signalLeave(Event<T> event) {
-			((Tuple<T>)event).terminate();
-		}
-
-		Consumer<Event<T>> _adding = (ign) -> {};
-		Consumer<Event<T>> _leaving = (ign) -> {};
-
-		private Runnable _close = NOOP;
-		private final Consumer<Tuple<T>> _signalAdding;
-		private Runnable _start = NOOP;
-
-	}
-
 }
 
 

Added: 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=1810095&view=auto
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java (added)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/RouteOsgiImpl.java Fri Sep 29 13:20:30 2017
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.aries.osgi.functional.internal;
+
+import org.apache.aries.osgi.functional.Event;
+
+import java.util.function.Consumer;
+
+public class RouteOsgiImpl<T> extends OSGiImpl<T> {
+
+    public RouteOsgiImpl(
+        OSGiImpl<T> previous, Consumer<Router<T>> routerConsumer) {
+
+        super(((bundleContext) -> {
+
+            Pipe<Tuple<T>, Tuple<T>> outgoingAddingPipe = Pipe.create();
+
+            Consumer<Tuple<T>> outgoingAddingSource =
+                outgoingAddingPipe.getSource();
+
+            final RouterImpl<T> router =
+                new RouterImpl<>(outgoingAddingSource);
+
+            routerConsumer.accept(router);
+
+            OSGiResultImpl<T> osgiResult = previous._operation.run(
+                bundleContext);
+
+            osgiResult.added.map(
+                t -> {
+                    Tuple<T> copy = Tuple.create(t.t);
+
+                    t.onTermination(() -> {
+                        router._leaving.accept(copy);
+
+                        copy.terminate();
+                    });
+
+                    router._adding.accept(copy);
+
+                    return null;
+                });
+
+            return new OSGiResultImpl<>(
+                outgoingAddingPipe,
+                () -> {
+                    router._start.run();
+                    osgiResult.start.run();
+                },
+                () -> {
+                    router._close.run();
+                    osgiResult.close.run();
+                });
+        }));
+    }
+
+    static class RouterImpl<T> implements Router<T> {
+
+        RouterImpl(Consumer<Tuple<T>> signalAdding) {
+            _signalAdding = signalAdding;
+        }
+
+        @Override
+        public void onIncoming(Consumer<Event<T>> adding) {
+            _adding = adding;
+        }
+
+        @Override
+        public void onLeaving(Consumer<Event<T>> removing) {
+            _leaving = removing;
+        }
+
+        @Override
+        public void onClose(Runnable close) {
+            _close = close;
+        }
+
+        @Override
+        public void onStart(Runnable start) {
+            _start = start;
+        }
+
+        @Override
+        public void signalAdd(Event<T> event) {
+            _signalAdding.accept((Tuple<T>) event);
+        }
+
+        @Override
+        public void signalLeave(Event<T> event) {
+            ((Tuple<T>)event).terminate();
+        }
+
+        Consumer<Event<T>> _adding = (ign) -> {};
+        Consumer<Event<T>> _leaving = (ign) -> {};
+
+        private Runnable _close = NOOP;
+        private final Consumer<Tuple<T>> _signalAdding;
+        private Runnable _start = NOOP;
+
+    }
+}