You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Julian Reschke (JIRA)" <ji...@apache.org> on 2013/06/10 15:50:20 UTC

[jira] [Created] (JCR-3606) misleading expepction message in ItemSaveOperation.validateTransientItems()

Julian Reschke created JCR-3606:
-----------------------------------

             Summary: misleading expepction message in ItemSaveOperation.validateTransientItems()
                 Key: JCR-3606
                 URL: https://issues.apache.org/jira/browse/JCR-3606
             Project: Jackrabbit Content Repository
          Issue Type: Improvement
          Components: jackrabbit-core
    Affects Versions: 2.7, 2.6.1, 2.4.4
            Reporter: Julian Reschke
            Priority: Minor


When checking for mandatory child nodes, the code also checks whether that child node is the expected defining node type. If it does not, the same message as for a *missing* child node is generated:

                    String msg = itemMgr.safeGetJCRPath(id)
                                + ": mandatory child node " + cnd.getName()
                                + " does not exist";
                    if (!nodeState.hasChildNodeEntry(cnd.getName())) {
                        log.debug(msg);
                        throw new ConstraintViolationException(msg);
                    } else {
                        /*
                        there exists a child node with the mandatory-name.
                        make sure the node really has the expected mandatory
                        node definition.
                        */
                        boolean hasMandatoryChild = false;
                        for (ChildNodeEntry cne : nodeState.getChildNodeEntries(cnd.getName())) {
                            ItemData childData = itemMgr.getItemData(cne.getId(), null, false);
                            if (childData.getDefinition().isMandatory()) {
                                hasMandatoryChild = true;
                                break;
                            }
                        }
                        if (!hasMandatoryChild) {
                            throw new ConstraintViolationException(msg);
                        }
                    }


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira