Search in sources :

Example 26 with NodeId

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

the class RepositoryServiceImpl method buildNodeInfo.

private NodeInfoImpl buildNodeInfo(String baseUri, MultiStatusResponse nodeResponse, NodeId parentId, DavPropertySet propSet, SessionInfo sessionInfo, NamePathResolver resolver) throws RepositoryException {
    NodeId id = uriResolver.buildNodeId(parentId, baseUri, nodeResponse, sessionInfo.getWorkspaceName(), getNamePathResolver(sessionInfo));
    NodeInfoImpl nInfo = new NodeInfoImpl(id, propSet, resolver);
    DavProperty p = propSet.get(JcrRemotingConstants.JCR_REFERENCES_LN, ItemResourceConstants.NAMESPACE);
    if (p != null) {
        HrefProperty refProp = new HrefProperty(p);
        for (String propertyHref : refProp.getHrefs()) {
            PropertyId propertyId = uriResolver.getPropertyId(propertyHref, sessionInfo);
            nInfo.addReference(propertyId);
        }
    }
    return nInfo;
}
Also used : HrefProperty(org.apache.jackrabbit.webdav.property.HrefProperty) NodeId(org.apache.jackrabbit.spi.NodeId) DefaultDavProperty(org.apache.jackrabbit.webdav.property.DefaultDavProperty) DavProperty(org.apache.jackrabbit.webdav.property.DavProperty) PropertyId(org.apache.jackrabbit.spi.PropertyId)

Example 27 with NodeId

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

the class RepositoryServiceImpl method getLockInfo.

@Override
public LockInfo getLockInfo(SessionInfo sessionInfo, NodeId nodeId) throws RepositoryException {
    // set of Dav-properties to be retrieved
    DavPropertyNameSet nameSet = new DavPropertyNameSet();
    nameSet.add(DavPropertyName.LOCKDISCOVERY);
    nameSet.add(JcrRemotingConstants.JCR_PARENT_LN, ItemResourceConstants.NAMESPACE);
    HttpPropfind request = null;
    try {
        String uri = getItemUri(nodeId, sessionInfo);
        request = new HttpPropfind(uri, nameSet, DEPTH_0);
        initMethod(request, sessionInfo, false);
        HttpResponse response = executeRequest(sessionInfo, request);
        request.checkSuccess(response);
        MultiStatusResponse[] mresponses = request.getResponseBodyAsMultiStatus(response).getResponses();
        if (mresponses.length != 1) {
            throw new ItemNotFoundException("Unable to retrieve the LockInfo. No such node " + saveGetIdString(nodeId, sessionInfo));
        }
        DavPropertySet ps = mresponses[0].getProperties(DavServletResponse.SC_OK);
        if (ps.contains(DavPropertyName.LOCKDISCOVERY)) {
            DavProperty<?> p = ps.get(DavPropertyName.LOCKDISCOVERY);
            LockDiscovery ld = LockDiscovery.createFromXml(p.toXml(DomUtil.createDocument()));
            NodeId parentId = getParentId(uri, ps, sessionInfo);
            return retrieveLockInfo(ld, sessionInfo, nodeId, parentId);
        } else {
            // no lock present
            log.debug("No Lock present on node with id " + saveGetIdString(nodeId, sessionInfo));
            return null;
        }
    } catch (IOException e) {
        throw new RepositoryException(e);
    } catch (ParserConfigurationException e) {
        throw new RepositoryException(e);
    } catch (DavException e) {
        throw ExceptionConverter.generate(e);
    } finally {
        if (request != null) {
            request.releaseConnection();
        }
    }
}
Also used : DavException(org.apache.jackrabbit.webdav.DavException) MultiStatusResponse(org.apache.jackrabbit.webdav.MultiStatusResponse) HttpResponse(org.apache.http.HttpResponse) RepositoryException(javax.jcr.RepositoryException) IOException(java.io.IOException) LockDiscovery(org.apache.jackrabbit.webdav.lock.LockDiscovery) DavPropertySet(org.apache.jackrabbit.webdav.property.DavPropertySet) HttpPropfind(org.apache.jackrabbit.webdav.client.methods.HttpPropfind) DavPropertyNameSet(org.apache.jackrabbit.webdav.property.DavPropertyNameSet) NodeId(org.apache.jackrabbit.spi.NodeId) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) ItemNotFoundException(javax.jcr.ItemNotFoundException)

Example 28 with NodeId

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

the class NodeInfoImpl method createSerializableNodeInfo.

/**
     * Creates a new serializable <code>NodeInfo</code> for the given
     * <code>NodeInfo</code>.
     *
     * @param nodeInfo
     */
public static NodeInfo createSerializableNodeInfo(NodeInfo nodeInfo, final IdFactory idFactory) {
    if (nodeInfo instanceof Serializable) {
        return nodeInfo;
    } else {
        List<PropertyId> serRefs = new ArrayList<PropertyId>();
        for (PropertyId ref : nodeInfo.getReferences()) {
            NodeId parentId = ref.getParentId();
            parentId = idFactory.createNodeId(parentId.getUniqueID(), parentId.getPath());
            serRefs.add(idFactory.createPropertyId(parentId, ref.getName()));
        }
        NodeId nodeId = nodeInfo.getId();
        nodeId = idFactory.createNodeId(nodeId.getUniqueID(), nodeId.getPath());
        final Iterator<PropertyId> propIds = nodeInfo.getPropertyIds();
        final Iterator<ChildInfo> childInfos = nodeInfo.getChildInfos();
        return new NodeInfoImpl(nodeInfo.getPath(), nodeId, nodeInfo.getIndex(), nodeInfo.getNodetype(), nodeInfo.getMixins(), serRefs.iterator(), new Iterator<PropertyId>() {

            public boolean hasNext() {
                return propIds.hasNext();
            }

            public PropertyId next() {
                PropertyId propId = propIds.next();
                NodeId parentId = propId.getParentId();
                idFactory.createNodeId(parentId.getUniqueID(), parentId.getPath());
                return idFactory.createPropertyId(parentId, propId.getName());
            }

            public void remove() {
                throw new UnsupportedOperationException();
            }
        }, ((childInfos == null) ? null : new Iterator<ChildInfo>() {

            public boolean hasNext() {
                return childInfos.hasNext();
            }

            public ChildInfo next() {
                ChildInfo cInfo = childInfos.next();
                if (cInfo instanceof Serializable) {
                    return cInfo;
                } else {
                    return new ChildInfoImpl(cInfo.getName(), cInfo.getUniqueID(), cInfo.getIndex());
                }
            }

            public void remove() {
                throw new UnsupportedOperationException();
            }
        }));
    }
}
Also used : Serializable(java.io.Serializable) ArrayList(java.util.ArrayList) NodeId(org.apache.jackrabbit.spi.NodeId) ChildInfo(org.apache.jackrabbit.spi.ChildInfo) PropertyId(org.apache.jackrabbit.spi.PropertyId)

Example 29 with NodeId

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

the class VersionManagerImpl method getVersionHistoryEntry.

public NodeEntry getVersionHistoryEntry(NodeState versionableState) throws RepositoryException {
    PropertyState ps = versionableState.getPropertyState(NameConstants.JCR_VERSIONHISTORY);
    String uniqueID = ps.getValue().getString();
    NodeId vhId = workspaceManager.getIdFactory().createNodeId(uniqueID);
    return workspaceManager.getHierarchyManager().getNodeEntry(vhId);
}
Also used : NodeId(org.apache.jackrabbit.spi.NodeId) PropertyState(org.apache.jackrabbit.jcr2spi.state.PropertyState)

Example 30 with NodeId

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

the class NodeState method retrieveDefinition.

private QNodeDefinition retrieveDefinition() throws RepositoryException {
    QNodeDefinition def;
    if (isRoot()) {
        def = definitionProvider.getRootNodeDefinition();
    } else {
        /*
             Don't use getAllNodeTypeNames() to retrieve the definition:
             for NEW-states the definition is always set upon creation.
             for all other states the definition must be retrieved only taking
             the effective nodetypes present on the parent into account
             any kind of transiently added mixins must not have an effect
             on the definition retrieved for an state that has been persisted
             before. The effective NT must be evaluated as if it had been
             evaluated upon creating the workspace state.
             */
        NodeState parent = getParent();
        NodeId wspId = (NodeId) getWorkspaceId();
        def = definitionProvider.getQNodeDefinition(parent.getNodeTypeNames(), getName(), getNodeTypeName(), wspId);
    }
    return def;
}
Also used : NodeId(org.apache.jackrabbit.spi.NodeId) QNodeDefinition(org.apache.jackrabbit.spi.QNodeDefinition)

Aggregations

NodeId (org.apache.jackrabbit.spi.NodeId)80 Batch (org.apache.jackrabbit.spi.Batch)35 Name (org.apache.jackrabbit.spi.Name)32 PropertyInfo (org.apache.jackrabbit.spi.PropertyInfo)23 RepositoryException (javax.jcr.RepositoryException)21 QValue (org.apache.jackrabbit.spi.QValue)21 PropertyId (org.apache.jackrabbit.spi.PropertyId)13 Path (org.apache.jackrabbit.spi.Path)11 NodeInfo (org.apache.jackrabbit.spi.NodeInfo)10 ArrayList (java.util.ArrayList)9 ItemNotFoundException (javax.jcr.ItemNotFoundException)9 DavPropertyNameSet (org.apache.jackrabbit.webdav.property.DavPropertyNameSet)9 IOException (java.io.IOException)6 Node (javax.jcr.Node)5 HttpResponse (org.apache.http.HttpResponse)5 ItemId (org.apache.jackrabbit.spi.ItemId)5 DavException (org.apache.jackrabbit.webdav.DavException)5 InputStream (java.io.InputStream)4 ChildInfo (org.apache.jackrabbit.spi.ChildInfo)4 PathNotFoundException (javax.jcr.PathNotFoundException)3