diff options
author | Thomas Watson | 2017-02-09 17:41:03 +0000 |
---|---|---|
committer | Thomas Watson | 2017-02-09 17:41:03 +0000 |
commit | 71394a2cbca386ea5b4a2acc3d807be51336baca (patch) | |
tree | 7398d2e734fd35b011b0784787852bd5b22535af | |
parent | 1bc36f585d4c1e6e329b0d584c9a649f0330416a (diff) | |
download | rt.equinox.framework-71394a2cbca386ea5b4a2acc3d807be51336baca.tar.gz rt.equinox.framework-71394a2cbca386ea5b4a2acc3d807be51336baca.tar.xz rt.equinox.framework-71394a2cbca386ea5b4a2acc3d807be51336baca.zip |
Bug 511593 - Issue resolving split packagesY20170223-1000Y20170216-1515Y20170216-1450Y20170216-1000I20170228-0330I20170228-0240I20170227-2000I20170226-2000I20170225-2000I20170224-2000I20170223-2000I20170222-2000I20170221-2000I20170220-2000I20170219-2000I20170218-2000I20170217-2000I20170216-2000I20170216-0140I20170215-2000I20170214-2200I20170214-2000I20170213-2000I20170212-2000I20170211-2000I20170210-2000I20170210-0615I20170210-0600I20170210-0550I20170210-0530I20170209-2000
Change solution to avoid introducing new API on ModuleWiring.
Change-Id: I1de1dd5ce55c05b04f9eaa699606ce70ba22ec89
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
5 files changed, 29 insertions, 46 deletions
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java index fb3920413..6e1f16f5c 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java @@ -1518,6 +1518,11 @@ final class ModuleResolver { throw new ResolutionTimeout(); } } + + @Override + public Collection<Wire> getSubstitutionWires(Wiring wiring) { + return ((ModuleWiring) wiring).getSubstitutionWires(); + } } protected boolean threadResolving() { diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java index dd8a8dd62..ce85e5074 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java @@ -14,7 +14,6 @@ import java.net.URL; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicReference; -import org.apache.felix.resolver.FelixWiring; import org.eclipse.osgi.container.ModuleRevisionBuilder.GenericInfo; import org.eclipse.osgi.internal.container.AtomicLazyInitializer; import org.eclipse.osgi.internal.container.InternalUtils; @@ -29,7 +28,7 @@ import org.osgi.resource.*; * An implementation of {@link BundleWiring}. * @since 3.10 */ -public final class ModuleWiring implements BundleWiring, FelixWiring { +public final class ModuleWiring implements BundleWiring { class LoaderInitializer implements Callable<ModuleLoader> { @Override public ModuleLoader call() throws Exception { @@ -460,22 +459,7 @@ public final class ModuleWiring implements BundleWiring, FelixWiring { return revision.toString(); } - /** - * Returns the subset of {@link Wiring#getRequiredResourceWires(String) require wires} - * that provide wires to {@link Capability capabilities} which substitute capabilities - * of this wiring. For example, when a {@link PackageNamespace package} name is both - * provided and required by the same resource. If the package requirement is resolved - * to a capability hosted by a different wiring then the package capability is - * considered to be substituted. - * - * @see #getSubstitutedNames() - * @return A collection containing a snapshot of the substitution {@link Wire}s - * for the {@link Requirement requirements} of this wiring, or an empty list - * if this wiring has no substitution wires. - * @since 3.12 - */ - @Override - public Collection<Wire> getSubstitutionWires() { + Collection<Wire> getSubstitutionWires() { if (substitutedPkgNames.isEmpty()) { return Collections.emptyList(); } diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java index 502a7e459..9782d0a02 100755 --- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java +++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java @@ -18,7 +18,11 @@ */package org.apache.felix.resolver; import java.util.Collection; + +import org.osgi.framework.namespace.PackageNamespace; import org.osgi.resource.Resource; +import org.osgi.resource.Wire; +import org.osgi.resource.Wiring; public interface FelixResolveContext { @@ -41,4 +45,19 @@ public interface FelixResolveContext * resources. The returned collection may be unmodifiable. */ public Collection<Resource> getOndemandResources(Resource host); + + /** + * Returns the subset of {@link Wiring#getRequiredResourceWires(String) require wires} + * that provide wires to {@link Capability capabilities} which substitute capabilities + * of the given wiring. For example, when a {@link PackageNamespace package} name is both + * provided and required by the same resource. If the package requirement is resolved + * to a capability hosted by a different wiring then the package capability is + * considered to be substituted. + * + * @param wiring the wiring to get the substitution wires from + * @return A collection containing a snapshot of the substitution {@link Wire}s + * for the {@link Requirement requirements} of this wiring, or an empty list + * if this wiring has no substitution wires. + */ + public Collection<Wire> getSubstitutionWires(Wiring wiring); } diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java deleted file mode 100644 index ce453b029..000000000 --- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */package org.apache.felix.resolver; - -import java.util.Collection; -import org.osgi.resource.Wire; - -public interface FelixWiring -{ - Collection<Wire> getSubstitutionWires(); -} diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java index 897b9698f..60beca879 100755 --- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java +++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java @@ -1608,9 +1608,10 @@ public class ResolverImpl implements Resolver if (wiring != null) { Collection<Wire> substitutionWires; - if (wiring instanceof FelixWiring) + if (session.getContext() instanceof FelixResolveContext) { - substitutionWires = ((FelixWiring) wiring).getSubstitutionWires(); + substitutionWires = ((FelixResolveContext) session.getContext()).getSubstitutionWires( + wiring); } else { |