Search in sources :

Example 1 with NodeInfo

use of org.apache.jackrabbit.spi.NodeInfo in project jackrabbit by apache.

the class BatchTest method testAddNode.

public void testAddNode() throws RepositoryException {
    NodeId nid = getNodeId(testPath);
    Batch b = rs.createBatch(si, nid);
    b.addNode(nid, resolver.getQName("aNode"), NameConstants.NT_UNSTRUCTURED, null);
    b.addProperty(nid, resolver.getQName("aString"), rs.getQValueFactory().create("ba", PropertyType.STRING));
    b.addProperty(nid, resolver.getQName("aName"), new QValue[] { rs.getQValueFactory().create(NameConstants.JCR_ENCODING), rs.getQValueFactory().create(NameConstants.JCR_DATA) });
    b.addProperty(nid, resolver.getQName("aBinary"), rs.getQValueFactory().create(new byte[] { 'a', 'b', 'c' }));
    rs.submit(b);
    NodeId id = rs.getIdFactory().createNodeId(nid, resolver.getQPath("aNode"));
    Iterator<? extends ItemInfo> it = rs.getItemInfos(si, id);
    while (it.hasNext()) {
        ItemInfo info = it.next();
        if (info.denotesNode()) {
            NodeInfo nInfo = (NodeInfo) info;
            assertEquals(NameConstants.NT_UNSTRUCTURED, nInfo.getNodetype());
            Iterator<ChildInfo> childIt = nInfo.getChildInfos();
            assertTrue(childIt == null || !childIt.hasNext());
            assertEquals(id, nInfo.getId());
        }
    }
    b = rs.createBatch(si, nid);
    b.remove(id);
    rs.submit(b);
}
Also used : Batch(org.apache.jackrabbit.spi.Batch) ItemInfo(org.apache.jackrabbit.spi.ItemInfo) NodeInfo(org.apache.jackrabbit.spi.NodeInfo) NodeId(org.apache.jackrabbit.spi.NodeId) ChildInfo(org.apache.jackrabbit.spi.ChildInfo)

Example 2 with NodeInfo

use of org.apache.jackrabbit.spi.NodeInfo in project jackrabbit by apache.

the class RepositoryServiceImpl method getItemInfos.

@Override
public Iterator<? extends ItemInfo> getItemInfos(SessionInfo sessionInfo, ItemId itemId) throws RepositoryException {
    // currently: missing prop-names with child-NodeInfo
    if (itemId.denotesNode()) {
        List<ItemInfo> l = new ArrayList<ItemInfo>();
        NodeInfo nInfo = getNodeInfo(sessionInfo, (NodeId) itemId);
        l.add(nInfo);
        // at least add propertyInfos for the meta-props already known from the
        // nodeInfo.
        l.addAll(buildPropertyInfos(nInfo));
        return l.iterator();
    } else {
        PropertyInfo pInfo = getPropertyInfo(sessionInfo, (PropertyId) itemId);
        return Iterators.singleton(pInfo);
    }
}
Also used : ItemInfo(org.apache.jackrabbit.spi.ItemInfo) NodeInfo(org.apache.jackrabbit.spi.NodeInfo) ArrayList(java.util.ArrayList) PropertyInfo(org.apache.jackrabbit.spi.PropertyInfo)

Example 3 with NodeInfo

use of org.apache.jackrabbit.spi.NodeInfo in project jackrabbit by apache.

the class ItemInfoCacheImpl method put.

/**
     * This implementation cached the item by its id and if the id
     * is uuid based but has no path, also by its path.
     */
public void put(ItemInfo info, long generation) {
    ItemId id = info.getId();
    Entry<? extends ItemInfo> entry = info.denotesNode() ? new Entry<NodeInfo>((NodeInfo) info, generation) : new Entry<PropertyInfo>((PropertyInfo) info, generation);
    put(id, entry);
    if (id.getUniqueID() != null && id.getPath() == null) {
        put(info.getPath(), entry);
    }
}
Also used : NodeInfo(org.apache.jackrabbit.spi.NodeInfo) PropertyInfo(org.apache.jackrabbit.spi.PropertyInfo) ItemId(org.apache.jackrabbit.spi.ItemId)

Example 4 with NodeInfo

use of org.apache.jackrabbit.spi.NodeInfo in project jackrabbit by apache.

the class WorkspaceItemStateFactory method createNodeState.

/**
     * Creates the node with information retrieved from the <code>RepositoryService</code>.
     */
public NodeState createNodeState(NodeId nodeId, NodeEntry entry) throws ItemNotFoundException, RepositoryException {
    try {
        Entry<NodeInfo> cached = cache.getNodeInfo(nodeId);
        ItemInfo info;
        if (isUpToDate(cached, entry)) {
            info = cached.info;
        } else {
            // otherwise retrieve item info from service and cache the whole batch
            Iterator<? extends ItemInfo> infos = service.getItemInfos(sessionInfo, nodeId);
            info = first(infos, cache, entry.getGeneration());
            if (info == null || !info.denotesNode()) {
                throw new ItemNotFoundException("NodeId: " + nodeId);
            }
        }
        assertMatchingPath(info, entry);
        return createNodeState((NodeInfo) info, entry);
    } catch (PathNotFoundException e) {
        throw new ItemNotFoundException(e);
    }
}
Also used : ItemInfo(org.apache.jackrabbit.spi.ItemInfo) NodeInfo(org.apache.jackrabbit.spi.NodeInfo) PathNotFoundException(javax.jcr.PathNotFoundException) ItemNotFoundException(javax.jcr.ItemNotFoundException)

Example 5 with NodeInfo

use of org.apache.jackrabbit.spi.NodeInfo in project jackrabbit by apache.

the class WorkspaceItemStateFactory method createDeepNodeState.

/**
     * Creates the node with information retrieved from the <code>RepositoryService</code>.
     * Intermediate entries are created as needed.
     */
public NodeState createDeepNodeState(NodeId nodeId, NodeEntry anyParent) throws ItemNotFoundException, RepositoryException {
    try {
        // Get item info from cache
        Iterator<? extends ItemInfo> infos = null;
        Entry<NodeInfo> cached = cache.getNodeInfo(nodeId);
        ItemInfo info;
        if (cached == null) {
            // or from service if not in cache
            infos = service.getItemInfos(sessionInfo, nodeId);
            info = first(infos, null, 0);
            if (info == null || !info.denotesNode()) {
                throw new ItemNotFoundException("NodeId: " + nodeId);
            }
        } else {
            info = cached.info;
        }
        // Build the hierarchy entry for the item info
        HierarchyEntry entry = createHierarchyEntries(info, anyParent);
        if (entry == null || !entry.denotesNode()) {
            throw new ItemNotFoundException("HierarchyEntry does not belong to any existing ItemInfo. No ItemState was created.");
        } else {
            // Now we can check whether the item info from the cache is up to date
            long generation = entry.getGeneration();
            if (isOutdated(cached, entry)) {
                // if not, retrieve the item info from the service and put the whole batch into the cache
                infos = service.getItemInfos(sessionInfo, nodeId);
                info = first(infos, cache, generation);
            } else if (infos != null) {
                // Otherwise put the whole batch retrieved from the service earlier into the cache
                cache.put(info, generation);
                first(infos, cache, generation);
            }
            assertMatchingPath(info, entry);
            return createNodeState((NodeInfo) info, (NodeEntry) entry);
        }
    } catch (PathNotFoundException e) {
        throw new ItemNotFoundException(e);
    }
}
Also used : ItemInfo(org.apache.jackrabbit.spi.ItemInfo) NodeInfo(org.apache.jackrabbit.spi.NodeInfo) PathNotFoundException(javax.jcr.PathNotFoundException) HierarchyEntry(org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry) ItemNotFoundException(javax.jcr.ItemNotFoundException)

Aggregations

NodeInfo (org.apache.jackrabbit.spi.NodeInfo)17 NodeId (org.apache.jackrabbit.spi.NodeId)10 Batch (org.apache.jackrabbit.spi.Batch)6 Name (org.apache.jackrabbit.spi.Name)6 ItemInfo (org.apache.jackrabbit.spi.ItemInfo)5 PropertyInfo (org.apache.jackrabbit.spi.PropertyInfo)5 RepositoryException (javax.jcr.RepositoryException)4 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 ItemNotFoundException (javax.jcr.ItemNotFoundException)2 PathNotFoundException (javax.jcr.PathNotFoundException)2 ChildInfo (org.apache.jackrabbit.spi.ChildInfo)2 QValue (org.apache.jackrabbit.spi.QValue)2 ItemVisitor (javax.jcr.ItemVisitor)1 Node (javax.jcr.Node)1 Property (javax.jcr.Property)1 TraversingItemVisitor (javax.jcr.util.TraversingItemVisitor)1 HierarchyEntry (org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry)1 ItemId (org.apache.jackrabbit.spi.ItemId)1 Path (org.apache.jackrabbit.spi.Path)1