Bug 511593 - Issue resolving split packages

Change solution to avoid introducing new API on ModuleWiring.

Change-Id: I1de1dd5ce55c05b04f9eaa699606ce70ba22ec89
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
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 fb39204..6e1f16f 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 @@
 				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 dd8a8dd..ce85e50 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.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 @@
  * 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 @@
 		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 502a7e4..9782d0a 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 @@
      * 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 ce453b0..0000000
--- 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 897b969..60beca8 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 @@
         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
             {