Package org.apache.jackrabbit.core.state

Examples of org.apache.jackrabbit.core.state.ChildNodeEntry


         * @param newName new name
         * @throws ItemStateException if getting the parent node fails
         */
        public void renameNode(NodeState child, String newName) throws ItemStateException {
            NodeState parent = (NodeState) getItemState(child.getParentId());
            ChildNodeEntry cne = parent.getChildNodeEntry(child.getNodeId());
            if (cne == null) {
                throw new ItemStateException(child.getNodeId().toString());
            }
            parent.renameChildNodeEntry(cne.getName(), cne.getIndex(), toName(newName));
        }
View Full Code Here


            }
            for (PathMap.Element element : entry.getElements()) {
                Iterator iter = element.getChildren();
                while (iter.hasNext()) {
                    PathMap.Element child = (PathMap.Element) iter.next();
                    ChildNodeEntry cne = modified.getChildNodeEntry(
                            child.getName(), child.getNormalizedIndex());
                    if (cne == null) {
                        // Item does not exist, remove
                        evict(child, true);
                        continue;
                    }

                    LRUEntry childEntry = (LRUEntry) child.get();
                    if (childEntry != null && !cne.getId().equals(childEntry.getId())) {
                        // Different child item, remove
                        evict(child, true);
                    }
                }
            }
View Full Code Here

                         */
                        evict(child, false);
                        continue;
                    }
                    NodeId childId = childEntry.getId();
                    ChildNodeEntry cne = state.getChildNodeEntry(childId);
                    if (cne == null) {
                        /* Child no longer in parent node state, so remove it */
                        evict(child, false);
                        continue;
                    }

                    /**
                     * Put all children into map of new children order - regardless
                     * whether their position changed or not - as we might need
                     * to reorder them later on.
                     */
                    Path.Element newNameIndex = PathFactoryImpl.getInstance().createElement(
                            cne.getName(), cne.getIndex());
                    newChildrenOrder.put(newNameIndex, child);

                    if (!newNameIndex.equals(child.getPathElement())) {
                        orderChanged = true;
                    }
View Full Code Here

                List entries = node.getState().getChildNodeEntries();
                frozenNodes = new InternalFreeze[entries.size()];
                Iterator iter = entries.iterator();
                int i = 0;
                while (iter.hasNext()) {
                    ChildNodeEntry entry =
                            (ChildNodeEntry) iter.next();
                    frozenNodes[i++] = (InternalFreeze) vMgr.getItem(entry.getId());
                }
            } catch (RepositoryException e) {
                throw new VersionException("Unable to retrieve frozen child nodes", e);
            }
        }
View Full Code Here

                    + " has invalid definitionId (" + defId + ")");

            // fallback: try finding applicable definition
            NodeImpl parent = (NodeImpl) getItem(state.getParentId());
            NodeState parentState = (NodeState) parent.getItemState();
            ChildNodeEntry cne = parentState.getChildNodeEntry(state.getNodeId());
            def = parent.getApplicableChildNodeDefinition(cne.getName(), state.getNodeTypeName());
            state.setDefinitionId(def.unwrap().getId());
        }
        return def;
    }
View Full Code Here

            throw new RepositoryException(msg);
        }
        Iterator iter = ((NodeState) data.getState()).getChildNodeEntries().iterator();

        while (iter.hasNext()) {
            ChildNodeEntry entry = (ChildNodeEntry) iter.next();
            // make sure any of the properties can be read.
            if (canRead(entry.getId())) {
                return true;
            }
        }
        return false;
    }
View Full Code Here

        }
        ArrayList<ItemId> childIds = new ArrayList<ItemId>();
        Iterator<ChildNodeEntry> iter = ((NodeState) data.getState()).getChildNodeEntries().iterator();

        while (iter.hasNext()) {
            ChildNodeEntry entry = iter.next();
            // delay check for read-access until item is being built
            // thus avoid duplicate check
            childIds.add(entry.getId());
        }

        return new LazyItemIterator(this, childIds, parentId);
    }
View Full Code Here

                                                         Name name,
                                                         int index) {
        // check removed child node entries first
        Iterator iter = parent.getRemovedChildNodeEntries().iterator();
        while (iter.hasNext()) {
            ChildNodeEntry entry =
                    (ChildNodeEntry) iter.next();
            if (entry.getName().equals(name)
                    && entry.getIndex() == index) {
                return entry;
            }
        }
        // no matching removed child node entry found in parent,
        // delegate to base class
View Full Code Here

    protected ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                         NodeId id) {
        // check removed child node entries first
        Iterator iter = parent.getRemovedChildNodeEntries().iterator();
        while (iter.hasNext()) {
            ChildNodeEntry entry =
                    (ChildNodeEntry) iter.next();
            if (entry.getId().equals(id)) {
                return entry;
            }
        }
        // no matching removed child node entry found in parent,
        // delegate to base class
View Full Code Here

                            log.error(msg);
                            throw new ItemStateException(msg, e);
                        }
                        if (parent != null) {
                            // check if node has been renamed
                            ChildNodeEntry moved = null;
                            for (ChildNodeEntry child : parent.getRemovedChildNodeEntries()) {
                                if (child.getId().equals(n.getNodeId())) {
                                    // found node re-added with different name
                                    moved = child;
                                }
                            }
                            if (moved != null) {
                                NodeTypeImpl nodeType = getNodeType(parent, session);
                                Set<Name> mixins = parent.getMixinTypeNames();
                                Path newPath = getPath(state.getId(), hmgr);
                                Path parentPath = getParent(newPath);
                                Path oldPath;
                                try {
                                    if (moved.getIndex() == 0) {
                                        oldPath = PathFactoryImpl.getInstance().create(parentPath, moved.getName(), false);
                                    } else {
                                        oldPath = PathFactoryImpl.getInstance().create(
                                                parentPath, moved.getName(), moved.getIndex(), false);
                                    }
                                } catch (RepositoryException e) {
                                    // should never happen actually
                                    String msg = "Malformed path for item: " + state.getId();
                                    log.error(msg);
                                    throw new ItemStateException(msg, e);
                                }
                                events.add(EventState.childNodeRemoved(
                                        parent.getNodeId(), parentPath,
                                        n.getNodeId(), oldPath.getNameElement(),
                                        nodeType.getQName(), mixins, session));

                                events.add(EventState.childNodeAdded(
                                        parent.getNodeId(), parentPath,
                                        n.getNodeId(), newPath.getNameElement(),
                                        nodeType.getQName(), mixins, session));

                                events.add(EventState.nodeMoved(
                                        parent.getNodeId(), newPath, n.getNodeId(),
                                        oldPath, nodeType.getQName(), mixins,
                                        session, false));
                            }
                        }
                    }
                }

                // check if child nodes of modified node state have been reordered
                List<ChildNodeEntry> reordered = n.getReorderedChildNodeEntries();
                NodeTypeImpl nodeType = getNodeType(n, session);
                Set<Name> mixins = n.getMixinTypeNames();
                if (reordered.size() > 0) {
                    // create a node removed and a node added event for every
                    // reorder
                    for (ChildNodeEntry child : reordered) {
                        Path.Element addedElem = getPathElement(child);
                        Path parentPath = getPath(n.getNodeId(), hmgr);
                        // get removed index
                        NodeState overlayed = (NodeState) n.getOverlayedState();
                        ChildNodeEntry entry = overlayed.getChildNodeEntry(child.getId());
                        if (entry == null) {
                            throw new ItemStateException("Unable to retrieve old child index for item: " + child.getId());
                        }
                        Path.Element removedElem = getPathElement(entry);
View Full Code Here

TOP

Related Classes of org.apache.jackrabbit.core.state.ChildNodeEntry

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.