You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2009/09/21 18:59:16 UTC

[jira] Created: (JCR-2315) Handling of an unspecified item definition template name

Handling of an unspecified item definition template name
--------------------------------------------------------

                 Key: JCR-2315
                 URL: https://issues.apache.org/jira/browse/JCR-2315
             Project: Jackrabbit Content Repository
          Issue Type: Improvement
          Components: jackrabbit-spi-commons, nodetype
            Reporter: Jukka Zitting
            Priority: Minor


The code below currently leads to a NPE in registerNodeType() due to the missing name of the wildcard node definition. Uncommenting the setName() call fixes the issue.

    NodeTypeManager manager = ...;
    NodeTypeTemplate type = manager.createNodeTypeTemplate();
    NodeDefinitionTemplate wildcard = manager.createNodeDefinitionTemplate();
    // wildcard.setName("*");
    type.getNodeDefinitionTemplates().add(wildcard);
    manager.registerNodeType(type, false);

Whatever we do, the code should not throw a NullPointerException. There are basically two valid approaches:

1) Throw an exception in registerNodeType() if the name of an item definition has not been specified.

2) Treat item definitions with unspecified names as residual.

Note that a ItemDefinition.getName() is explicitly specified to return null (instead of "*") when the name has not been set, which seems to suggest that option 1 above is the correct behaviour. On the other hand, the respective setName() call is specified to accept only a "syntactically valid JCR name", which would suggest option 2 as the correct alternative.

Personally I tend to like option 2 better, as that's also how I intuitively was using the API when I ran into the NPE error. That approach was also what Jackrabbit used to do before the node type handling was recently merged with the SPI code.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (JCR-2315) Handling of an unspecified item definition template name

Posted by "Marcel Reutegger (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-2315?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12758227#action_12758227 ] 

Marcel Reutegger commented on JCR-2315:
---------------------------------------

I like 2) better as well.

> Handling of an unspecified item definition template name
> --------------------------------------------------------
>
>                 Key: JCR-2315
>                 URL: https://issues.apache.org/jira/browse/JCR-2315
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-spi-commons, nodetype
>            Reporter: Jukka Zitting
>            Priority: Minor
>
> The code below currently leads to a NPE in registerNodeType() due to the missing name of the wildcard node definition. Uncommenting the setName() call fixes the issue.
>     NodeTypeManager manager = ...;
>     NodeTypeTemplate type = manager.createNodeTypeTemplate();
>     NodeDefinitionTemplate wildcard = manager.createNodeDefinitionTemplate();
>     // wildcard.setName("*");
>     type.getNodeDefinitionTemplates().add(wildcard);
>     manager.registerNodeType(type, false);
> Whatever we do, the code should not throw a NullPointerException. There are basically two valid approaches:
> 1) Throw an exception in registerNodeType() if the name of an item definition has not been specified.
> 2) Treat item definitions with unspecified names as residual.
> Note that a ItemDefinition.getName() is explicitly specified to return null (instead of "*") when the name has not been set, which seems to suggest that option 1 above is the correct behaviour. On the other hand, the respective setName() call is specified to accept only a "syntactically valid JCR name", which would suggest option 2 as the correct alternative.
> Personally I tend to like option 2 better, as that's also how I intuitively was using the API when I ran into the NPE error. That approach was also what Jackrabbit used to do before the node type handling was recently merged with the SPI code.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.