/** * Generates a document view export using a {@link * org.apache.jackrabbit.commons.xml.DocumentViewExporter} instance. * * @param path of the node to be exported * @param handler handler for the SAX events of the export * @param skipBinary whether binary values should be skipped * @param noRecurse whether to export just the identified node * @throws PathNotFoundException if a node at the given path does not exist * @throws SAXException if the SAX event handler failed * @throws RepositoryException if another error occurs */ public void exportDocumentView( String path, ContentHandler handler, boolean skipBinary, boolean noRecurse) throws PathNotFoundException, SAXException, RepositoryException { DocumentViewExporter exporter = new DocumentViewExporter(this, handler, skipBinary, noRecurse); Item item = getItem(path); if (item.isNode()) { exporter.export((JCRNodeWrapper) item); } else { throw new PathNotFoundException("XML export is not defined for properties: " + path); } }
/** * Generates a system view export using a {@link * org.apache.jackrabbit.commons.xml.SystemViewExporter} instance. * * @param path of the node to be exported * @param handler handler for the SAX events of the export * @param skipBinary whether binary values should be skipped * @param noRecurse whether to export just the identified node * @throws PathNotFoundException if a node at the given path does not exist * @throws SAXException if the SAX event handler failed * @throws RepositoryException if another error occurs */ public void exportSystemView( String path, ContentHandler handler, boolean skipBinary, boolean noRecurse) throws PathNotFoundException, SAXException, RepositoryException { // todo implement our own system view .. ? SystemViewExporter exporter = new SystemViewExporter(this, handler, !noRecurse, !skipBinary); Item item = getItem(path); if (item.isNode()) { exporter.export((JCRNodeWrapper) item); } else { throw new PathNotFoundException("XML export is not defined for properties: " + path); } }
public JCRItemWrapper getItem(String path, final boolean checkVersion) throws PathNotFoundException, RepositoryException { if (sessionCacheByPath.containsKey(path)) { return sessionCacheByPath.get(path); } if (path.contains(DEREF_SEPARATOR)) { JCRNodeWrapper parent = (JCRNodeWrapper) getItem(StringUtils.substringBeforeLast(path, DEREF_SEPARATOR), checkVersion); return dereference(parent, StringUtils.substringAfterLast(path, DEREF_SEPARATOR)); } Map<String, JCRStoreProvider> dynamicMountPoints = sessionFactory.getDynamicMountPoints(); for (Map.Entry<String, JCRStoreProvider> mp : dynamicMountPoints.entrySet()) { if (path.startsWith(mp.getKey() + "/")) { String localPath = path.substring(mp.getKey().length()); JCRStoreProvider provider = mp.getValue(); Item item = getProviderSession(provider).getItem(provider.getRelativeRoot() + localPath); if (item.isNode()) { return provider.getNodeWrapper((Node) item, localPath, null, this); } else { return provider.getPropertyWrapper((Property) item, this); } } } Map<String, JCRStoreProvider> mountPoints = sessionFactory.getMountPoints(); for (Map.Entry<String, JCRStoreProvider> mp : mountPoints.entrySet()) { String key = mp.getKey(); if (key.equals("/") || path.equals(key) || path.startsWith(key + "/")) { String localPath = path; if (!key.equals("/")) { localPath = localPath.substring(key.length()); } JCRStoreProvider provider = mp.getValue(); if (localPath.equals("")) { localPath = "/"; } // Item item = getProviderSession(provider).getItem(localPath); Session session = getProviderSession(provider); if (session instanceof JahiaSessionImpl && getUser() != null && sessionFactory.getCurrentAliasedUser() != null && sessionFactory.getCurrentAliasedUser().equals(getUser())) { ((JahiaSessionImpl) session).toggleThisSessionAsAliased(); } Item item = session.getItem(provider.getRelativeRoot() + localPath); if (item.isNode()) { final Node node = (Node) item; JCRNodeWrapper wrapper = provider.getNodeWrapper(node, localPath, null, this); if (getUser() != null && sessionFactory.getCurrentAliasedUser() != null && !sessionFactory.getCurrentAliasedUser().equals(getUser())) { final JCRNodeWrapper finalWrapper = wrapper; JCRTemplate.getInstance() .doExecuteWithUserSession( sessionFactory.getCurrentAliasedUser().getUsername(), getWorkspace().getName(), getLocale(), new JCRCallback<Object>() { public Object doInJCR(JCRSessionWrapper session) throws RepositoryException { return session.getNodeByUUID(finalWrapper.getIdentifier(), checkVersion); } }); } if (checkVersion && (versionDate != null || versionLabel != null) && node.isNodeType("mix:versionable")) { wrapper = getFrozenVersionAsRegular(node, provider); } sessionCacheByPath.put(path, wrapper); sessionCacheByIdentifier.put(wrapper.getIdentifier(), wrapper); return wrapper; } else { return provider.getPropertyWrapper((Property) item, this); } } } throw new PathNotFoundException(path); }