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/07/19 10:49:03 UTC
svn commit: r1802373 - in /aries/trunk/component-dsl:
component-dsl/src/main/java/org/apache/aries/osgi/functional/
component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/
itests/src/main/java/org/apache/aries/osgi/functional/test/
Author: csierra
Date: Wed Jul 19 10:49:03 2017
New Revision: 1802373
URL: http://svn.apache.org/viewvc?rev=1802373&view=rev
Log:
Simplify distribute into all
Added:
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java
Modified:
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java
aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/OSGiImpl.java
aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/ComponentTest.java
Modified: aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java?rev=1802373&r1=1802372&r2=1802373&view=diff
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java (original)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/OSGi.java Wed Jul 19 10:49:03 2017
@@ -28,6 +28,7 @@ import org.apache.aries.osgi.functional.
import org.apache.aries.osgi.functional.internal.ChangeContextOSGiImpl;
import org.apache.aries.osgi.functional.internal.ConfigurationOSGiImpl;
import org.apache.aries.osgi.functional.internal.ConfigurationsOSGiImpl;
+import org.apache.aries.osgi.functional.internal.DistributeOSGi;
import org.apache.aries.osgi.functional.internal.JustOSGiImpl;
import org.apache.aries.osgi.functional.internal.NothingOSGiImpl;
import org.apache.aries.osgi.functional.internal.OnCloseOSGiImpl;
@@ -162,9 +163,11 @@ public interface OSGi<T> extends OSGiRun
return new ServiceReferenceOSGi<>(filterString, clazz);
}
- OSGi<T> filter(Predicate<T> predicate);
+ static OSGi<Void> all(OSGi<?> ... programs) {
+ return new DistributeOSGi(programs);
+ }
- OSGi<Void> distribute(Function<T, OSGi<?>>... funs);
+ OSGi<T> filter(Predicate<T> predicate);
OSGi<T> route(Consumer<Router<T>> routerConsumer);
Added: aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java?rev=1802373&view=auto
==============================================================================
--- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java (added)
+++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java Wed Jul 19 10:49:03 2017
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
+ * <p>
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * <p>
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+package org.apache.aries.osgi.functional.internal;
+
+import org.apache.aries.osgi.functional.OSGi;
+import org.apache.aries.osgi.functional.OSGiResult;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * @author Carlos Sierra Andrés
+ */
+public class DistributeOSGi extends OSGiImpl<Void> {
+
+ public DistributeOSGi(OSGi<?>... programs) {
+ super(bundleContext -> {
+ Pipe<Tuple<Void>, Tuple<Void>> added = Pipe.create();
+
+ Consumer<Tuple<Void>> addedSource = added.getSource();
+
+ List<OSGiResult<?>> results = new ArrayList<>();
+
+ Pipe<Tuple<Void>, Tuple<Void>> removed = Pipe.create();
+
+ Consumer<Tuple<Void>> removedSource = removed.getSource();
+
+ return new OSGiResultImpl<>(
+ added, removed,
+ () -> {
+ results.addAll(
+ Arrays.stream(programs).
+ map(o -> o.run(bundleContext)).
+ collect(Collectors.toList()));
+
+ addedSource.accept(Tuple.create(null));
+ },
+ () -> {
+ removedSource.accept(Tuple.create(null));
+
+ results.forEach(OSGiResult::close);
+ }
+ );
+ });
+ }
+}
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=1802373&r1=1802372&r2=1802373&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 Wed Jul 19 10:49:03 2017
@@ -279,66 +279,6 @@ public class OSGiImpl<T> implements OSGi
}));
}
- @Override
- @SafeVarargs
- final public OSGi<Void> distribute(Function<T, OSGi<?>>... funs) {
- return new OSGiImpl<>(bundleContext -> {
- Pipe<Tuple<Void>, Tuple<Void>> added = Pipe.create();
-
- Consumer<Tuple<Void>> addedSource = added.getSource();
-
- IdentityHashMap<Object, List<OSGiResult<?>>> results =
- new IdentityHashMap<>();
-
- Pipe<Tuple<Void>, Tuple<Void>> removed = Pipe.create();
-
- Consumer<Tuple<Void>> removedSource = removed.getSource();
-
- AtomicReference<OSGiResult<?>> atomicReference =
- new AtomicReference<>();
-
- return new OSGiResultImpl<>(
- added, removed,
- () -> {
- OSGiResultImpl<T> osgiResult = _operation.run(
- bundleContext);
-
- osgiResult.added.map(t -> {
- results.put(
- t.original,
- Arrays.stream(funs).
- map(f -> f.apply(t.t)).
- map(o -> o.run(bundleContext)).
- collect(Collectors.toList())
- );
-
- addedSource.accept(Tuple.create(null));
-
- return null;
- });
-
- osgiResult.removed.map(t -> {
- results.get(t.original).forEach(OSGiResult::close);
-
- removedSource.accept(Tuple.create(null));
-
- return null;
- });
-
- osgiResult.start.run();
-
- atomicReference.set(osgiResult);
- },
- () -> {
- results.values().forEach(
- l -> l.forEach(OSGiResult::close));
-
- atomicReference.get().close();
- }
- );
- });
- }
-
private static class Pair<X, Y> {
private final X _first;
private final Y _second;
Modified: aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/ComponentTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/ComponentTest.java?rev=1802373&r1=1802372&r2=1802373&view=diff
==============================================================================
--- aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/ComponentTest.java (original)
+++ aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/ComponentTest.java Wed Jul 19 10:49:03 2017
@@ -42,6 +42,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
+import static org.apache.aries.osgi.functional.OSGi.all;
import static org.apache.aries.osgi.functional.OSGi.apply;
import static org.apache.aries.osgi.functional.OSGi.bundleContext;
import static org.apache.aries.osgi.functional.OSGi.configurations;
@@ -84,14 +85,15 @@ public class ComponentTest {
configurations("org.components.MyComponent").flatMap(props ->
services(Service.class).flatMap(ms ->
just(new Component(props, ms)).flatMap(component ->
- register(Component.class, component, new HashMap<>()).distribute(
- ign -> dynamic(
- highestService(ServiceOptional.class),
- component::setOptional, c -> component.setOptional(null)),
- ign -> dynamic(
- services(ServiceForList.class),
- component::addService, component::removeService)
- ))));
+ register(Component.class, component, new HashMap<>()).then(
+ all(
+ dynamic(
+ highestService(ServiceOptional.class),
+ component::setOptional, c -> component.setOptional(null)),
+ dynamic(
+ services(ServiceForList.class),
+ component::addService, component::removeService)
+ )))));
ServiceTracker<Component, Component> serviceTracker =
new ServiceTracker<>(_bundleContext, Component.class, null);
@@ -203,14 +205,15 @@ public class ComponentTest {
services(Service.class)).
flatMap(
comp ->
- register(Component.class, comp, new HashMap<>()).distribute(
- ign -> dynamic(
- highestService(ServiceOptional.class),
- comp::setOptional, c -> comp.setOptional(null)),
- ign -> dynamic(
- services(ServiceForList.class),
- comp::addService, comp::removeService)
- ));
+ register(Component.class, comp, new HashMap<>()).then(
+ all(
+ dynamic(
+ highestService(ServiceOptional.class),
+ comp::setOptional, c -> comp.setOptional(null)),
+ dynamic(
+ services(ServiceForList.class),
+ comp::addService, comp::removeService)
+ )));
ServiceTracker<Component, Component> serviceTracker =
new ServiceTracker<>(_bundleContext, Component.class, null);