[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