@Override public List<JcrNode> childNodes(String path) throws RemoteException { List<JcrNode> children = null; if (path == null || path.trim().length() == 0) { return Collections.emptyList(); } try { Node node = (Node) session().getItem(path); NodeIterator it = node.getNodes(); children = new ArrayList<JcrNode>((int) it.getSize()); while (it.hasNext()) { Node n = it.nextNode(); JcrNode childNode = new JcrNode(n.getName(), n.getPath(), n.getPrimaryNodeType().getName()); childNode.setProperties(getProperties(n)); childNode.setAcessControlList(getAccessList(session().getAccessControlManager(), node)); childNode.setMixins(mixins(n)); childNode.setPropertyDefs(propertyDefs(n)); children.add(childNode); } } catch (PathNotFoundException e) { log.log(Level.FINER, e.getLocalizedMessage()); } catch (RepositoryException e) { log.log(Level.SEVERE, "Unexpected error", e); throw new RemoteException(e.getMessage()); } return children; }
@Override public JcrNode getRootNode() throws RemoteException { try { // take root node Node root = session().getRootNode(); // convert into value object JcrNode node = new JcrNode("root", root.getPath(), root.getPrimaryNodeType().getName()); node.setProperties(getProperties(root)); node.setAcessControlList(getAccessList(session().getAccessControlManager(), root)); return node; } catch (RepositoryException e) { throw new RemoteException(e.getMessage()); } }