On 4.12.12 14:12, email@example.com wrote:
> - * FIXME in contrast what the method name implies this method returns the transitive closure of the super types
> - * TODO clarify contract, what is the difference between this method and NodeType.getSuperTypes()
> * Calculates and returns all effective node types of the given tree.
> * @param tree
> * @return all node types of the given tree
> - * @throws RepositoryException if the type information can not be accessed
> + * @throws RepositoryException if the type information can not be accessed,
> + * @see JCR 2.0 Specification,
> + * Section 220.127.116.11 for the definition of the effective node type.
> Iterable getEffectiveNodeTypes(Tree tree) throws RepositoryException;
I don't think the fixme is addressed with this change. According to the
cited section in the spec. a node has *an* effective node type. How come
this method returns an iterator? Also the semantics of subtyping
(18.104.22.168) is not adhered to.
I know that the return value of this method is *used* to do effective
node type calculations and I am not opposed to that. However, we should
then change the names of this method (and its sister) to better reflect
what it actually does.