[jboss-user] [JBoss Microcontainer Development] - Wildcard support in Dynamic-imports
Ales Justin
do-not-reply at jboss.com
Wed Jun 9 07:06:50 EDT 2010
Ales Justin [http://community.jboss.org/people/alesj] replied to the discussion
"Wildcard support in Dynamic-imports"
To view the discussion, visit: http://community.jboss.org/message/547040#547040
--------------------------------------------------------------
> public class Module { public DelegateLoader resolveWildcard(...)
> {
> WildcardDelegateLoader result = new WilcardDelegateLoader(...);
> return result.resolve(...); // HERE ??
> }
>
I don't understand the idea behind resolve().
I thought we would simply create a single WildcardDelegateLoader for the whole wildcard requirement,
which would then get hit for every not-yet-resolved class/resource lookup.
Resulting in creating new DelegateLoader, and adding that to existing delegates -- before our wildcard "creator".
e.g.
class WildcardDelegateLoader extends FilteredDelegateLoader
{
...
protected DelegateLoader resolve(String pckg)
{
Requirement requirement = new PackageRequirement(pckg, range);
WildcardRequirementDependencyItem item = new WildcardRequirementDependencyItem(module, requirement, module.getClassLoaderState());
if (item.resolve(controller))
{
List<RequirementDependencyItem> items = module.getDependencies(); // should not be null, as this delegate was created from a requirement
items.add(item);
module.addIDependOn(item);
Module resolvedModule = item.getResolvedModule();
if (resolvedModule instanceof ClassLoaderPolicyModule)
{
ClassLoaderPolicyModule clpm = (ClassLoaderPolicyModule) resolvedModule;
DelegateLoader loader = clpm.getDelegateLoader(module, requirement);
item.setLoader(loader);
ClassLoaderPolicy policy = getPolicy();
// TODO -- add new loader to policy's delegate
// pseudo-code -- ???
List<DelegateLoader> delegates = policy.getDelegates();
delegates.add(0, loader); // make sure it's before this wildcard delegate
}
}
return null;
}
@Override
protected Class<?> doLoadClass(String className)
{
DelegateLoader loader = resolve(ClassLoaderUtils.getClassPackageName(className));
return loader != null ? loader.loadClass(className) : null;
}
And I have no idea how to hack around this dynamic loader to policy's delegates addition.
Or I completely misunderstood your impl? :-)
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/547040#547040]
Start a new discussion in JBoss Microcontainer Development at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2115]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100609/6964e609/attachment.html
More information about the jboss-user
mailing list