Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 44287 invoked from network); 6 May 2009 10:37:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 6 May 2009 10:37:48 -0000 Received: (qmail 29612 invoked by uid 500); 6 May 2009 10:37:48 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 29525 invoked by uid 500); 6 May 2009 10:37:48 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 29516 invoked by uid 99); 6 May 2009 10:37:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 May 2009 10:37:48 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 May 2009 10:37:37 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id E814123889D5; Wed, 6 May 2009 10:37:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r772139 - in /cxf/dosgi/trunk/discovery/local/src: main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java Date: Wed, 06 May 2009 10:37:16 -0000 To: commits@cxf.apache.org From: davidb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090506103716.E814123889D5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: davidb Date: Wed May 6 10:37:16 2009 New Revision: 772139 URL: http://svn.apache.org/viewvc?rev=772139&view=rev Log: Additional unit tests for the previous fix to the LocalDiscoveryService Modified: cxf/dosgi/trunk/discovery/local/src/main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java cxf/dosgi/trunk/discovery/local/src/test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java Modified: cxf/dosgi/trunk/discovery/local/src/main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/discovery/local/src/main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java?rev=772139&r1=772138&r2=772139&view=diff ============================================================================== --- cxf/dosgi/trunk/discovery/local/src/main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java (original) +++ cxf/dosgi/trunk/discovery/local/src/main/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryService.java Wed May 6 10:37:16 2009 @@ -232,7 +232,7 @@ (Collection) reference.getProperty(property); LOG.info("adding tracker: " + tracker + " collection: " + collection + " registered against prop: " + property); if (nonEmpty(collection)) { - reverseMap.put(tracker, collection); + reverseMap.put(tracker, new ArrayList(collection)); Iterator i = collection.iterator(); while (i.hasNext()) { String element = i.next(); @@ -255,7 +255,6 @@ Map> reverseMap) { Collection collection = reverseMap.get(tracker); if (nonEmpty(collection)) { - collection = new ArrayList(collection); // work on a copy reverseMap.remove(tracker); Iterator i = collection.iterator(); while (i.hasNext()) { Modified: cxf/dosgi/trunk/discovery/local/src/test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/discovery/local/src/test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java?rev=772139&r1=772138&r2=772139&view=diff ============================================================================== --- cxf/dosgi/trunk/discovery/local/src/test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java (original) +++ cxf/dosgi/trunk/discovery/local/src/test/java/org/apache/cxf/dosgi/discovery/local/LocalDiscoveryServiceTest.java Wed May 6 10:37:16 2009 @@ -456,6 +456,40 @@ assertEquals("removeBundleListener", bundleListenerRegs.get(1)); } + public void testAddTracker() { + String prop = DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA; + + DiscoveredServiceTracker dst = EasyMock.createMock(DiscoveredServiceTracker.class); + EasyMock.replay(dst); + ServiceReference ref = EasyMock.createMock(ServiceReference.class); + List interfaces = new ArrayList(Arrays.asList("A", "B")); + EasyMock.expect(ref.getProperty(prop)).andReturn(interfaces); + EasyMock.replay(ref); + + Map> forwardMap = + new HashMap>(); + Map> reverseMap = + new HashMap>(); + + assertEquals("Precondition failed", 0, forwardMap.size()); + assertEquals("Precondition failed", 0, reverseMap.size()); + Collection result = LocalDiscoveryService.addTracker(ref, dst, prop, + forwardMap, reverseMap); + assertEquals(interfaces, result); + + assertEquals(interfaces, reverseMap.get(dst)); + // check that the data in the reversemap is backed by a different array + reverseMap.get(dst).clear(); + assertEquals("The data in the reverseMap should be backed by a different object, not the DST property", + Arrays.asList("A", "B"), interfaces); + + assertEquals(2, forwardMap.size()); + assertEquals(Collections.singletonList(dst), forwardMap.get("A")); + assertEquals(Collections.singletonList(dst), forwardMap.get("B")); + + EasyMock.verify(ref); + } + public void testRemoveTracker() { DiscoveredServiceTracker dst = new DiscoveredServiceTracker(){ public void serviceChanged(DiscoveredServiceNotification notification) { @@ -464,19 +498,36 @@ Map> forwardMap = new HashMap>(); + forwardMap.put("A", new ArrayList(Arrays.asList(dst))); + Map> reverseMap = new HashMap>(); - ArrayList l = new ArrayList(Arrays.asList("A", "B")); - reverseMap.put(dst, l); - List l2 = new ArrayList(Arrays.asList(dst)); - forwardMap.put("A", l2); + reverseMap.put(dst, new ArrayList(Arrays.asList("A", "B"))); + + assertEquals("Precondition failed", 1, reverseMap.size()); + assertEquals("Precondition failed", 1, forwardMap.get("A").size()); Collection old = LocalDiscoveryService.removeTracker(dst, forwardMap, reverseMap); assertEquals(1, old.size()); assertEquals("A", old.iterator().next()); - assertEquals("this list should not have been modified yet", 2, l.size()); - assertEquals("This list should be emptu now", 0, l2.size()); + + assertEquals(0, forwardMap.get("A").size()); + assertEquals(0, reverseMap.size()); } + public void testRemoveTrackerNull() { + DiscoveredServiceTracker dst = new DiscoveredServiceTracker(){ + public void serviceChanged(DiscoveredServiceNotification notification) { + } + }; + + Map> forwardMap = + new HashMap>(); + Map> reverseMap = + new HashMap>(); + + assertNull(LocalDiscoveryService.removeTracker(dst, forwardMap, reverseMap)); + } + private void verifyNotification(DiscoveredServiceNotification dsn, int filterCount, int interfaceCount,