Resolve fragments when attempting to dynamically import. (FELIX-1435)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@799660 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/Felix.java b/framework/src/main/java/org/apache/felix/framework/Felix.java
index ced9680..524f79b 100644
--- a/framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -2598,7 +2598,7 @@
for (int i = 0; i < listenerHooks.size(); i++)
{
m_registry.invokeHook((ServiceReference) listenerHooks.get(i), this, removedCallback);
- };
+ }
}
// Invoke the ListenerHook.added() on all hooks.
@@ -2730,7 +2730,7 @@
// Check to see if this a listener hook; if so, then we need
// to invoke the callback with all existing service listeners.
- if (m_registry.isHook(classNames, ListenerHook.class, svcObj))
+ if (ServiceRegistry.isHook(classNames, ListenerHook.class, svcObj))
{
m_registry.invokeHook(reg.getReference(), this, new InvokeHookCallback()
{
@@ -3873,8 +3873,8 @@
}
// Before trying to resolve, tell the resolver state to
- // merge all fragments into host, which may result in the
- // rootModule changing if the real root is a module.
+ // merge all fragments into hosts, which may result in the
+ // rootModule changing if the root is a fragment.
IModule newRootModule;
try
{
@@ -3932,6 +3932,18 @@
}
}
+ // Before trying to resolve, tell the resolver state to
+ // merge all fragments into their hosts.
+ try
+ {
+ m_resolverState.mergeFragments(null);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ throw new ResolveException("Unable to merge fragments", importer, null);
+ }
+
Object[] result = m_resolver.resolveDynamicImport(m_resolverState, importer, pkgName);
if (result != null)
{
diff --git a/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java b/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
index 88894d7..c3dad18 100644
--- a/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
+++ b/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
@@ -24,7 +24,6 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.apache.felix.framework.ModuleImpl;
import org.apache.felix.framework.searchpolicy.Resolver;
import org.apache.felix.framework.searchpolicy.PackageSource;
import org.apache.felix.framework.util.Util;
diff --git a/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java b/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
index 1dca93d..3531402 100644
--- a/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
+++ b/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
@@ -39,7 +39,6 @@
import org.apache.felix.moduleloader.IModule;
import org.apache.felix.moduleloader.IRequirement;
import org.apache.felix.moduleloader.IWire;
-import org.osgi.framework.BundleException;
import org.osgi.framework.Constants;
public class Resolver