kelvin goodson wrote:
I'm seeing an NPE here

        // No definition found, delegate the resolution to the imports
        for (Import import_ : this.contribution.getImports()) {
            if (import_ instanceof NamespaceImport) {
                NamespaceImport namespaceImport = (NamespaceImport)import_;
                if
(namespaceImport.getNamespace().equals(qname.getNamespaceURI())) {

                    // Delegate the resolution to the import resolver
======>           resolved =
namespaceImport.getModelResolver().resolveModel(Composite.class,
(Composite)unresolved);
                    if (!resolved.isUnresolved()) {
                        return modelClass.cast(resolved);
                    }
                }
            }
        }

because the result of getModelResolver() is null

I'm digging into it,  but I'm learning what the code does so it's
taking me a little while.  Has anyone else seen this and have an
insight as to why its happening.  It's probably a config thing in my
eclipse env.

cheers, Kelvin.

Kelvin,

Is this on 1.x or on 2.x ??

I ask this question because I believe that I fixed the problem in 2.x by introducing a pre-resolve phase into the processing of Contributions which avoids the problems such that you are describing here.

I have not attempted to port this 2.x fix back to 1.x.

Basically, the problem is that it can be hard for the runtime to work out what Contributions depend on which other Contributions, especially if there are imports for different namespaces/packages from different Contributions. In the old code, if the order was misguessed, you find the modelResolver problem above.

In my fix, pre-resolve ensures that every export & import combination are given modelResolvers BEFORE any resolution of any Contribution takes place. Then if resolving one contribution means following an import into a second contribution, the export already has a resolver on hand even if its containing contribution has not been resolved yet.

I am sure that the same idea could be backported to 1.x if required.


Yours,  Mike.

Reply via email to