You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "David Buchmann (Created) (JIRA)" <ji...@apache.org> on 2012/03/06 18:54:58 UTC

[jira] [Created] (JCR-3251) NullPointerException on property with same name as node

NullPointerException on property with same name as node
-------------------------------------------------------

                 Key: JCR-3251
                 URL: https://issues.apache.org/jira/browse/JCR-3251
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-spi2dav
            Reporter: David Buchmann
             Fix For: 2.4


when a node has a child node and a property with the same name, getting the property without previously getting the node having the property results in a NullPointerException.

the repository is something like this:

<test toast="bar">
    <toast/>
</test>

Session s = repository.login(credentials,workspace);
Node n = s.getRootNode().addNode("test");
n.setProperty("toast", "bar");
n.addNode("toast");
s.save();

s = repository.login(credentials,workspace);
n = s.getNode("/test/toast");
System.out.println(s.itemExists("/test/toast")); // true
// enabling the following line makes the code run without exception (getting the test node which has the toast property)
// n.getParent();
Property p = s.getProperty("/test/toast");


Exception in thread "main" java.lang.NullPointerException
        at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPropertyInfo(RepositoryServiceImpl.java:398)
        at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getItemInfos(RepositoryServiceImpl.java:335)
        at org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createDeepPropertyState(WorkspaceItemStateFactory.java:201)
        at org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createDeepPropertyState(TransientISFactory.java:125)
        at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.loadPropertyEntry(NodeEntryImpl.java:1179)
        at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.getDeepPropertyEntry(NodeEntryImpl.java:509)
        at org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl.getPropertyEntry(HierarchyManagerImpl.java:173)
        at org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getProperty(ItemManagerImpl.java:186)
        at org.apache.jackrabbit.jcr2spi.SessionImpl.getProperty(SessionImpl.java:537)
        at Client.main(Client.java:35)


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (JCR-3251) NullPointerException on property with same name as node

Posted by "angela (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-3251?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

angela resolved JCR-3251.
-------------------------

    Resolution: Duplicate

duplicate of JCR-1616
                
> NullPointerException on property with same name as node
> -------------------------------------------------------
>
>                 Key: JCR-3251
>                 URL: https://issues.apache.org/jira/browse/JCR-3251
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-spi2dav
>            Reporter: David Buchmann
>             Fix For: 2.4
>
>
> when a node has a child node and a property with the same name, getting the property without previously getting the node having the property results in a NullPointerException.
> the repository is something like this:
> <test toast="bar">
>     <toast/>
> </test>
> Session s = repository.login(credentials,workspace);
> Node n = s.getRootNode().addNode("test");
> n.setProperty("toast", "bar");
> n.addNode("toast");
> s.save();
> s = repository.login(credentials,workspace);
> n = s.getNode("/test/toast");
> System.out.println(s.itemExists("/test/toast")); // true
> // enabling the following line makes the code run without exception (getting the test node which has the toast property)
> // n.getParent();
> Property p = s.getProperty("/test/toast");
> Exception in thread "main" java.lang.NullPointerException
>         at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPropertyInfo(RepositoryServiceImpl.java:398)
>         at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getItemInfos(RepositoryServiceImpl.java:335)
>         at org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createDeepPropertyState(WorkspaceItemStateFactory.java:201)
>         at org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createDeepPropertyState(TransientISFactory.java:125)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.loadPropertyEntry(NodeEntryImpl.java:1179)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.getDeepPropertyEntry(NodeEntryImpl.java:509)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl.getPropertyEntry(HierarchyManagerImpl.java:173)
>         at org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getProperty(ItemManagerImpl.java:186)
>         at org.apache.jackrabbit.jcr2spi.SessionImpl.getProperty(SessionImpl.java:537)
>         at Client.main(Client.java:35)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (JCR-3251) NullPointerException on property with same name as node

Posted by "David Buchmann (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13223562#comment-13223562 ] 

David Buchmann commented on JCR-3251:
-------------------------------------

investigating further, i notice that the request to get the node contains a peculiar json:

{"toast":"bar",":jcr:primaryType":"Name","jcr:primaryType":"nt:unstructured","toast":{}}

according to this for example, i think that duplicated keys are invalid in json
http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject%28java.lang.String%29

php json_decode and online javascript parsers seem to accept but just update the key "toast" to the second value which is the empty list indicating a child node. but aparently jackrabbit can handle this - is it using a modified parser and some sort of non-standard json notion that allows duplicated keys?
                
> NullPointerException on property with same name as node
> -------------------------------------------------------
>
>                 Key: JCR-3251
>                 URL: https://issues.apache.org/jira/browse/JCR-3251
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-spi2dav
>            Reporter: David Buchmann
>             Fix For: 2.4
>
>
> when a node has a child node and a property with the same name, getting the property without previously getting the node having the property results in a NullPointerException.
> the repository is something like this:
> <test toast="bar">
>     <toast/>
> </test>
> Session s = repository.login(credentials,workspace);
> Node n = s.getRootNode().addNode("test");
> n.setProperty("toast", "bar");
> n.addNode("toast");
> s.save();
> s = repository.login(credentials,workspace);
> n = s.getNode("/test/toast");
> System.out.println(s.itemExists("/test/toast")); // true
> // enabling the following line makes the code run without exception (getting the test node which has the toast property)
> // n.getParent();
> Property p = s.getProperty("/test/toast");
> Exception in thread "main" java.lang.NullPointerException
>         at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPropertyInfo(RepositoryServiceImpl.java:398)
>         at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getItemInfos(RepositoryServiceImpl.java:335)
>         at org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createDeepPropertyState(WorkspaceItemStateFactory.java:201)
>         at org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createDeepPropertyState(TransientISFactory.java:125)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.loadPropertyEntry(NodeEntryImpl.java:1179)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.getDeepPropertyEntry(NodeEntryImpl.java:509)
>         at org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl.getPropertyEntry(HierarchyManagerImpl.java:173)
>         at org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getProperty(ItemManagerImpl.java:186)
>         at org.apache.jackrabbit.jcr2spi.SessionImpl.getProperty(SessionImpl.java:537)
>         at Client.main(Client.java:35)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira