You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/07/31 18:55:52 UTC
svn commit: r799660 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework: Felix.java
FelixResolverState.java searchpolicy/Resolver.java
Author: rickhall
Date: Fri Jul 31 16:55:52 2009
New Revision: 799660
URL: http://svn.apache.org/viewvc?rev=799660&view=rev
Log:
Resolve fragments when attempting to dynamically import. (FELIX-1435)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=799660&r1=799659&r2=799660&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java Fri Jul 31 16:55:52 2009
@@ -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)
{
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java?rev=799660&r1=799659&r2=799660&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/FelixResolverState.java Fri Jul 31 16:55:52 2009
@@ -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;
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java?rev=799660&r1=799659&r2=799660&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/searchpolicy/Resolver.java Fri Jul 31 16:55:52 2009
@@ -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