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