Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 4F6D8200CE0 for ; Fri, 25 Aug 2017 13:21:46 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 4DD0416C7D9; Fri, 25 Aug 2017 11:21:46 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9366A16C7D8 for ; Fri, 25 Aug 2017 13:21:45 +0200 (CEST) Received: (qmail 64789 invoked by uid 500); 25 Aug 2017 11:21:44 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 64760 invoked by uid 99); 25 Aug 2017 11:21:43 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Aug 2017 11:21:43 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 7E9CA3A0098 for ; Fri, 25 Aug 2017 11:21:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1806156 - in /aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional: OSGi.java internal/DistributeOSGi.java Date: Fri, 25 Aug 2017 11:21:38 -0000 To: commits@aries.apache.org From: csierra@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20170825112141.7E9CA3A0098@svn01-us-west.apache.org> archived-at: Fri, 25 Aug 2017 11:21:46 -0000 Author: csierra Date: Fri Aug 25 11:21:38 2017 New Revision: 1806156 URL: http://svn.apache.org/viewvc?rev=1806156&view=rev Log: Looks like `all` should combine the results 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/DistributeOSGi.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=1806156&r1=1806155&r2=1806156&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 Fri Aug 25 11:21:38 2017 @@ -163,8 +163,9 @@ public interface OSGi extends OSGiRun return new ServiceReferenceOSGi<>(filterString, clazz); } - static OSGi all(OSGi ... programs) { - return new DistributeOSGi(programs); + @SafeVarargs + static OSGi all(OSGi ... programs) { + return new DistributeOSGi<>(programs); } OSGi filter(Predicate predicate); Modified: 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=1806156&r1=1806155&r2=1806156&view=diff ============================================================================== --- aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java (original) +++ aries/trunk/component-dsl/component-dsl/src/main/java/org/apache/aries/osgi/functional/internal/DistributeOSGi.java Fri Aug 25 11:21:38 2017 @@ -29,33 +29,41 @@ import java.util.stream.Collectors; /** * @author Carlos Sierra Andrés */ -public class DistributeOSGi extends OSGiImpl { +public class DistributeOSGi extends OSGiImpl { - public DistributeOSGi(OSGi... programs) { + @SafeVarargs + public DistributeOSGi(OSGi... programs) { super(bundleContext -> { - Pipe, Tuple> added = Pipe.create(); + Pipe, Tuple> added = Pipe.create(); - Consumer> addedSource = added.getSource(); + Consumer> addedSource = added.getSource(); - List> results = new ArrayList<>(); + List> results = new ArrayList<>(); - Pipe, Tuple> removed = Pipe.create(); + Pipe, Tuple> removed = Pipe.create(); - Consumer> removedSource = removed.getSource(); + Consumer> removedSource = removed.getSource(); return new OSGiResultImpl<>( added, removed, () -> { results.addAll( Arrays.stream(programs). - map(o -> o.run(bundleContext)). - collect(Collectors.toList())); + map(o -> { + OSGiResultImpl osGiResult = + ((OSGiImpl) o)._operation.run( + bundleContext); + + osGiResult.added.map(t -> {addedSource.accept(t); return null;}); + osGiResult.removed.map(t -> {removedSource.accept(t); return null;}); + + osGiResult.start.run(); - addedSource.accept(Tuple.create(null)); + return osGiResult; + }). + collect(Collectors.toList())); }, () -> { - removedSource.accept(Tuple.create(null)); - for (OSGiResult result : results) { try { result.close();