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 9D920200BC9 for ; Sat, 26 Nov 2016 18:38:58 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 9C2A0160B14; Sat, 26 Nov 2016 17:38:58 +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 E4319160B11 for ; Sat, 26 Nov 2016 18:38:57 +0100 (CET) Received: (qmail 96750 invoked by uid 500); 26 Nov 2016 17:38:57 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 96741 invoked by uid 99); 26 Nov 2016 17:38:57 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 26 Nov 2016 17:38:57 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 95B3518065D for ; Sat, 26 Nov 2016 17:38:56 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.999 X-Spam-Level: X-Spam-Status: No, score=-1.999 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id rLfxsMwQu9Bz for ; Sat, 26 Nov 2016 17:38:55 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 5B4385F5C5 for ; Sat, 26 Nov 2016 17:38:55 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 92483E01A7 for ; Sat, 26 Nov 2016 17:38:54 +0000 (UTC) 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 4B1573A0254 for ; Sat, 26 Nov 2016 17:38:54 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1771506 - /felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Date: Sat, 26 Nov 2016 17:38:53 -0000 To: commits@felix.apache.org From: pderop@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20161126173854.4B1573A0254@svn01-us-west.apache.org> archived-at: Sat, 26 Nov 2016 17:38:58 -0000 Author: pderop Date: Sat Nov 26 17:38:53 2016 New Revision: 1771506 URL: http://svn.apache.org/viewvc?rev=1771506&view=rev Log: FELIX-5429: do not invoke swap callback in case state is INSTANTIATED_AND_WAITING_FOR_REQUIRED and dependency is optional and component has not been called in start(). Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java?rev=1771506&r1=1771505&r2=1771506&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Sat Nov 26 17:38:53 2016 @@ -1219,13 +1219,11 @@ public class ComponentImpl implements Co case INSTANTIATED_AND_WAITING_FOR_REQUIRED: // Only swap *non* instance-bound dependencies if (!dc.isInstanceBound()) { - if (dc.isRequired()) { - dc.invokeCallback(EventType.SWAPPED, oldEvent, newEvent); - } + invokeSwapCallback(dc, oldEvent, newEvent); } break; case TRACKING_OPTIONAL: - dc.invokeCallback(EventType.SWAPPED, oldEvent, newEvent); + invokeSwapCallback(dc, oldEvent, newEvent); break; default: } @@ -1494,6 +1492,17 @@ public class ComponentImpl implements Co } /** + * Invokes a swap callback, except if the dependency is optional and the component is + * not started (optional dependencies are always injected while the component is started). + */ + private void invokeSwapCallback(DependencyContext dc, Event oldEvent, Event newEvent) { + if (! dc.isRequired() && ! m_startCalled) { + return; + } + dc.invokeCallback(EventType.SWAPPED, oldEvent, newEvent); + } + + /** * Removes and closes all instance bound dependencies. * This method is called when a component is destroyed. */