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 4E69018033 for ; Fri, 12 Jun 2015 15:10:02 +0000 (UTC) Received: (qmail 89404 invoked by uid 500); 12 Jun 2015 15:10:02 -0000 Delivered-To: apmail-felix-commits-archive@felix.apache.org Received: (qmail 89351 invoked by uid 500); 12 Jun 2015 15:10:02 -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 89342 invoked by uid 99); 12 Jun 2015 15:10:02 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Jun 2015 15:10:02 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id 132AFAC0608 for ; Fri, 12 Jun 2015 15:10:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1685100 - in /felix/trunk/resolver/src: main/java/org/apache/felix/resolver/ResolverImpl.java main/java/org/apache/felix/resolver/WrappedResource.java test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java Date: Fri, 12 Jun 2015 15:10:01 -0000 To: commits@felix.apache.org From: gnodet@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150612151002.132AFAC0608@hades.apache.org> Author: gnodet Date: Fri Jun 12 15:10:01 2015 New Revision: 1685100 URL: http://svn.apache.org/r1685100 Log: [FELIX-4914] Resolution problem with fragments and identity requirements Modified: felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java felix/trunk/resolver/src/main/java/org/apache/felix/resolver/WrappedResource.java felix/trunk/resolver/src/test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java Modified: felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java?rev=1685100&r1=1685099&r2=1685100&view=diff ============================================================================== --- felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java (original) +++ felix/trunk/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java Fri Jun 12 15:10:01 2015 @@ -1798,32 +1798,20 @@ public class ResolverImpl implements Res if (!cand.getNamespace().startsWith("osgi.wiring.") || !resource.equals(cand.getResource())) { - // If we don't already have wires for the candidate, - // then recursively populate them. - if (!rc.getWirings().containsKey(cand.getResource())) - { - // Need to special case the candidate for identity - // capabilities since it may be from a fragment and - // we don't want to populate wires for the fragment, - // but rather the host to which it is attached. - Resource targetCand = cand.getResource(); - if (IdentityNamespace.IDENTITY_NAMESPACE.equals(cand.getNamespace()) - && Util.isFragment(targetCand)) - { - targetCand = allCandidates.getFirstCandidate( - targetCand.getRequirements(HostNamespace.HOST_NAMESPACE).get(0)) - .getResource(); - targetCand = allCandidates.getWrappedHost(targetCand); - } - - populateWireMap(rc, targetCand, + // Populate wires for the candidate + populateWireMap(rc, cand.getResource(), resourcePkgMap, wireMap, allCandidates); - } + Resource provider; + if (req.getNamespace().equals(IdentityNamespace.IDENTITY_NAMESPACE)) { + provider = getDeclaredCapability(cand).getResource(); + } else { + provider = getDeclaredResource(cand.getResource()); + } Wire wire = new WireImpl( unwrappedResource, getDeclaredRequirement(req), - getDeclaredResource(cand.getResource()), + provider, getDeclaredCapability(cand)); if (req.getNamespace().equals(PackageNamespace.PACKAGE_NAMESPACE)) { Modified: felix/trunk/resolver/src/main/java/org/apache/felix/resolver/WrappedResource.java URL: http://svn.apache.org/viewvc/felix/trunk/resolver/src/main/java/org/apache/felix/resolver/WrappedResource.java?rev=1685100&r1=1685099&r2=1685100&view=diff ============================================================================== --- felix/trunk/resolver/src/main/java/org/apache/felix/resolver/WrappedResource.java (original) +++ felix/trunk/resolver/src/main/java/org/apache/felix/resolver/WrappedResource.java Fri Jun 12 15:10:01 2015 @@ -70,13 +70,7 @@ class WrappedResource implements Resourc { for (Capability cap : fragment.getCapabilities(namespace)) { - // Filter out identity capabilities, since they - // are not part of the fragment payload. - if (!cap.getNamespace() - .equals(IdentityNamespace.IDENTITY_NAMESPACE)) - { - caps.add(new WrappedCapability(this, cap)); - } + caps.add(new WrappedCapability(this, cap)); } } } Modified: felix/trunk/resolver/src/test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java URL: http://svn.apache.org/viewvc/felix/trunk/resolver/src/test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java?rev=1685100&r1=1685099&r2=1685100&view=diff ============================================================================== --- felix/trunk/resolver/src/test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java (original) +++ felix/trunk/resolver/src/test/java/org/apache/felix/resolver/test/FELIX_4914_Test.java Fri Jun 12 15:10:01 2015 @@ -33,7 +33,6 @@ import org.apache.felix.resolver.test.ut import org.apache.felix.resolver.test.util.JsonReader; import org.apache.felix.resolver.test.util.ResolveContextImpl; import org.apache.felix.resolver.test.util.SimpleFilter; -import org.junit.Ignore; import org.junit.Test; import org.osgi.framework.BundleException; import org.osgi.framework.Constants; @@ -47,7 +46,6 @@ import org.osgi.service.resolver.Resolve public class FELIX_4914_Test extends TestCase { @Test - @Ignore public void testResolution() throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/felix-4914.json"))); Map resolution = (Map) JsonReader.read(reader);