/** * See CMIS 1.0 section 2.2.4.2 createDocumentFromSource * * @throws CmisStorageException */ public JcrNode addNodeFromSource(JcrDocument source, Properties properties) { try { String destPath = PathManager.createCmisPath(getNode().getPath(), source.getName()); Session session = getNode().getSession(); session.getWorkspace().copy(source.getNode().getPath(), destPath); JcrNode jcrNode = create(session.getNode(destPath)); // overlay new properties if (properties != null && properties.getProperties() != null) { updateProperties(jcrNode.getNode(), jcrNode.getTypeId(), properties); } session.save(); return jcrNode; } catch (RepositoryException e) { log.debug(e.getMessage(), e); throw new CmisStorageException(e.getMessage(), e); } }
/** * See CMIS 1.0 section 2.2.4.14 deleteObject * * @throws CmisRuntimeException */ @Override public void delete(boolean allVersions, boolean isPwc) { try { if (getNode().hasNodes()) { throw new CmisConstraintException("Folder is not empty!"); } else { super.delete(allVersions, isPwc); } } catch (RepositoryException e) { log.debug(e.getMessage(), e); throw new CmisRuntimeException(e.getMessage(), e); } }
@Override protected void compileProperties( PropertiesImpl properties, Set<String> filter, ObjectInfoImpl objectInfo) throws RepositoryException { super.compileProperties(properties, filter, objectInfo); objectInfo.setHasContent(false); objectInfo.setSupportsDescendants(true); objectInfo.setSupportsFolderTree(true); String typeId = getTypeIdInternal(); addPropertyString(properties, typeId, filter, PropertyIds.PATH, pathManager.getPath(getNode())); // folder properties if (pathManager.isRoot(getNode())) { objectInfo.setHasParent(false); } else { objectInfo.setHasParent(true); addPropertyId(properties, typeId, filter, PropertyIds.PARENT_ID, getParent().getObjectId()); } }