You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Michael Dürig <md...@apache.org> on 2012/12/04 16:15:40 UTC

Re: svn commit: r1416949 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ oak...

Hi,

On 4.12.12 14:12, angela@apache.org 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 <a href="http://www.jcp.org/en/jsr/detail?id=283">JCR 2.0 Specification,
> +     * Section 3.7.6.5</a> for the definition of the effective node type.
>        */
>       Iterable<NodeType> 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 
(3.7.6.6) 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.

Michael