Return-Path: X-Original-To: apmail-felix-commits-archive@www.apache.org Delivered-To: apmail-felix-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D0E6317442 for ; Thu, 23 Oct 2014 14:50:50 +0000 (UTC) Received: (qmail 62337 invoked by uid 500); 23 Oct 2014 14:50:50 -0000 Delivered-To: apmail-felix-commits-archive@felix.apache.org Received: (qmail 62295 invoked by uid 500); 23 Oct 2014 14:50:50 -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 62286 invoked by uid 99); 23 Oct 2014 14:50:50 -0000 Received: from mx1-us-east.apache.org (HELO mx1-us-east.apache.org) (54.164.171.186) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Oct 2014 14:50:50 +0000 Received: from mx1-us-east.apache.org (localhost [127.0.0.1]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTP id 8D4CC43820 for ; Thu, 23 Oct 2014 14:50:50 +0000 (UTC) Received: by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org, from userid 111) id 826B843858; Thu, 23 Oct 2014 14:50:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mx1-us-east.apache.org X-Spam-Level: X-Spam-Status: No, score=-1.4 required=10.0 tests=RP_MATCHES_RCVD autolearn=disabled version=3.4.0 Received: from eris.apache.org (eris.apache.org [140.211.11.4]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTP id 2EEC843820 for ; Thu, 23 Oct 2014 14:50:50 +0000 (UTC) Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 65C1A23888D7; Thu, 23 Oct 2014 14:49:48 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1633827 - /felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java Date: Thu, 23 Oct 2014 14:49:48 -0000 To: commits@felix.apache.org From: pderop@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20141023144948.65C1A23888D7@eris.apache.org> X-Virus-Scanned: ClamAV using ClamSMTP Author: pderop Date: Thu Oct 23 14:49:47 2014 New Revision: 1633827 URL: http://svn.apache.org/r1633827 Log: added missing testcase for FELIX 2875 issue Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java?rev=1633827&view=auto ============================================================================== --- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java (added) +++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/FELIX2875_ServiceDependencyWithoutServiceNameTest.java Thu Oct 23 14:49:47 2014 @@ -0,0 +1,77 @@ +package org.apache.felix.dm.itest; + +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.Map; + +import org.apache.felix.dm.Component; +import org.apache.felix.dm.DependencyManager; + +public class FELIX2875_ServiceDependencyWithoutServiceNameTest extends TestBase { + Ensure m_e; + + public void testServiceDependencyWithoutName() { + m_e = new Ensure(); + DependencyManager dm = getDM(); + Component consumer = dm.createComponent() + .setImplementation(new ConsumeServiceDependencyWithoutName()) + .add(dm.createServiceDependency() + .setService("(provider=*)").setRequired(true) + .setCallbacks("add", null)) + .add(dm.createServiceDependency() + .setService("(|(provider=provider1)(provider=provider2))").setRequired(true) + .setAutoConfig("m_providers")); + + Hashtable props = new Hashtable<>(); + props.put("provider", "provider1"); + Component provider1 = dm.createComponent() + .setImplementation(new Provider1()) + .setInterface(Provider.class.getName(), props); + + props = new Hashtable<>(); + props.put("provider", "provider2"); + Component provider2 = dm.createComponent() + .setImplementation(new Provider2()) + .setInterface(Provider.class.getName(), props); + + dm.add(provider1); + dm.add(provider2); + dm.add(consumer); + m_e.waitForStep(5, 5000); + } + + private class ConsumeServiceDependencyWithoutName { + volatile Map> m_providers; // autoconfig + + @SuppressWarnings("unused") + void add(Map props, Object service) { + if ("provider1".equals(props.get("provider"))) { + m_e.step(); + } else if ("provider2".equals(props.get("provider"))) { + m_e.step(); + } + } + + @SuppressWarnings("unused") + void start() { + // check if all providers have been injected in our autoconfig field. + for (Map.Entry> e : m_providers.entrySet()) { + if ("provider1".equals(e.getValue().get("provider"))) { + m_e.step(); + } else if ("provider2".equals(e.getValue().get("provider"))) { + m_e.step(); + } + } + m_e.step(5); + } + } + + public interface Provider { + } + + public class Provider1 implements Provider { + } + + public class Provider2 implements Provider { + } +}