Author: rickhall
Date: Thu Aug 27 14:36:45 2009
New Revision: 808433
URL: http://svn.apache.org/viewvc?rev=808433&view=rev
Log:
Only merge fragments for dynamic imports if necessary. (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=808433&r1=808432&r2=808433&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
Thu Aug 27 14:36:45 2009
@@ -3938,14 +3938,19 @@
// Before trying to resolve, tell the resolver state to
// merge all fragments into their hosts.
- try
- {
- m_resolverState.mergeFragments(null);
- }
- catch (Exception ex)
+// TODO: FRAGMENT - We need to rethink how we do fragment merging...probably
merging
+// as bundles are installed would be better.
+ if (Resolver.isDynamicImportAllowed(importer, pkgName))
{
- ex.printStackTrace();
- throw new ResolveException("Unable to merge
fragments", importer, null);
+ 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);
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=808433&r1=808432&r2=808433&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
Thu Aug 27 14:36:45 2009
@@ -89,8 +89,8 @@
}
// Need to remove any previously attached, but not resolved
fragments.
- // TODO: FRAGMENT - Would be better to have the previous
resolves
- // not leave fragments attached.
+// TODO: FRAGMENT - We need to rethink how we do fragment merging...probably
merging
+// as bundles are installed would be better.
((ModuleImpl) host).attachFragments(null);
// Fragments are grouped by symbolic name and descending
version.
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=808433&r1=808432&r2=808433&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
Thu Aug 27 14:36:45 2009
@@ -196,7 +196,11 @@
return null;
}
- private static boolean isDynamicImportAllowed(IModule importer, String
pkgName)
+// TODO: FRAGMENT - This is only public so we could avoid merging fragments
when
+// when it wasn't necessary for dynamic imports. We need to rethink how
we
+// do fragment merging...probably merging as bundles are installed would
be
+// better.
+ public static boolean isDynamicImportAllowed(IModule importer, String
pkgName)
{
// If any of the module exports this package, then we cannot
// attempt to dynamically import it.