HI Richard, I updated my local framework copy from SVN today and noticed, that performance degraded remarkably for bundles using DynamicImport-Package. After looking around a while, I saw, that R4SearchPolicyCore.attemptDynamicImport looks after dynamic Requirements and builds a filter from the requirement filter and the requested package. This filter is then used to scan all bundles ... Using this over and over is very expensive.
I wonder, whether this small (somewhat hacky) fix is legal [ at least it does seem to work for me, yet I am not sure, whether this is acceptable) -------------------------------- Index: src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java =================================================================== --- src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java (revision 499005) +++ src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java (working copy) @@ -510,6 +510,17 @@ // is necessary because we cannot easily determine which // package name a given dynamic requirement matches, since // it is only a filter. + + // do not consider dynamic packags not matching the requested + if ( ICapability.PACKAGE_NAMESPACE.equals( dynamics[i].getNamespace() ) ) + { + String dynPack = ( ( Requirement ) dynamics[i] ).getPackageName(); + if ( !pkgName.equals( dynPack ) && !( pkgName + ".*" ).equals( dynPack ) ) + { + continue; + } + } + IRequirement req = null; try { ------------------------------- What do you think ? Regards and Thanks Felix PS: Yes I know, that this is work in progress :-) On 1/22/07, Richard S. Hall <[EMAIL PROTECTED]> wrote:
Steven E. Harris wrote: > "Richard S. Hall" <[EMAIL PROTECTED]> writes: > > >> In short, the module loader abstraction previously worked in terms >> of exports/imports, but now it has been generalized to work in terms >> of capabilities/requirements. A capability is simply a set of >> properties, while a requirement is a filter over a set of >> properties. >> > > Does this mean that some of the capabilities and requirements types > from the OBR bundle will be moved (or copied) into Felix proper? > Essentially, yes. I have had to make some modifications to their implementation for the time being, but I hope to continue to work on them to make them more generic like the original OBR types. -> richard