Hey,

I'm going through all the models to clean up the visibility rules, and 
there are some important things to consider that I'd like to mention/check.

For example, let's say that a Module has registered CompositeA with 
Module visibility and "CompositeA2 extends CompositeA" with Layer 
visibility. If you then ask the Module for "find" CompositeA you will 
want different things depending on who's asking: if the resolution is 
coming from within the Module then it should return CompositeA, whereas 
if the request is coming from outside, then CompositeA is not visible 
but CompositeA2 is, so that should be returned as a valid type. For 
"get" requests of CompositeA it should return CompositeA if it is 
requested from within the Module, and null if it is requested from 
outside of the Module, since "get" style requests should not try to take 
extends into consideration.

The current resolution mechanisms do not take the visibility concerns of 
the request into consideration, so the above doesn't really work right now.

So, I'll be going through all similar scenarios and ensure that these 
kinds of things are dealt with properly. This should ensure that the 
semantics between "get" and "find" is handled cleanly, and I will be 
naming the methods accordingly to make sure there is no confusion 
between the two. All "find" methods will have visibility as a parameter, 
except for "find" methods in the method which will be the API that 
client code uses, and which will do the delegation between Modules 
through Layers appropriately. I hope this will make it much easier to 
figure what is going on.

Makes sense?

/Rickard

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to