public static void writeLinkNode( Content content, org.sakaiproject.nakamura.api.lite.Session session, JSONWriter writer, boolean objectInProgress) throws StorageClientException, JSONException { if (!objectInProgress) { writer.object(); } ContentManager contentManager = session.getContentManager(); // Write all the properties. ExtendedJSONWriter.writeNodeContentsToWriter(writer, content); // permissions writePermissions(content, session, writer); // Write the actual file. if (content.hasProperty(SAKAI_LINK)) { String linkPath = (String) content.getProperty(SAKAI_LINK); writer.key("file"); try { Content fileNode = contentManager.get(linkPath); writeFileNode(fileNode, session, writer); } catch (org.sakaiproject.nakamura.api.lite.accesscontrol.AccessDeniedException e) { writer.value(false); } } if (!objectInProgress) { writer.endObject(); } }
public static void writeFileNode( Content content, org.sakaiproject.nakamura.api.lite.Session session, JSONWriter write, int maxDepth) throws JSONException, StorageClientException { writeFileNode(content, session, write, maxDepth, false); }
/** * Give a JSON representation of the content. * * @param content * @param session * @param write The {@link JSONWriter} to output to. * @param depth * @throws JSONException * @throws StorageClientException */ protected void handleContent( final Content content, final Session session, final JSONWriter write, final int depth) throws JSONException, StorageClientException { write.object(); final String type = (String) content.getProperty(SLING_RESOURCE_TYPE_PROPERTY); if (FilesConstants.RT_SAKAI_LINK.equals(type)) { FileUtils.writeLinkNode(content, session, write, true); } else { FileUtils.writeFileNode(content, session, write, depth, true); } FileUtils.writeComments(content, session, write); FileUtils.writeCommentCountProperty(content, session, write, repository); write.endObject(); }
@Test public void testWriteFileNode() throws JSONException, RepositoryException, UnsupportedEncodingException, IOException { Session session = mock(Session.class); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Writer w = new PrintWriter(baos); JSONWriter write = new JSONWriter(w); SiteService siteService = mock(SiteService.class); Node node = createFileNode(); FileUtils.writeFileNode(node, session, write, siteService); w.flush(); String s = baos.toString("UTF-8"); JSONObject j = new JSONObject(s); assertFileNodeInfo(j); }
/** * Writes all the properties for a linked node. * * @param node * @param write * @throws JSONException * @throws RepositoryException */ public static void writeLinkNode(Node node, Session session, JSONWriter write) throws JSONException, RepositoryException { write.object(); // Write all the properties. ExtendedJSONWriter.writeNodeContentsToWriter(write, node); // permissions writePermissions(node, session, write); // Write the actual file. if (node.hasProperty(SAKAI_LINK)) { String uuid = node.getProperty(SAKAI_LINK).getString(); write.key("file"); try { Node fileNode = session.getNodeByIdentifier(uuid); writeFileNode(fileNode, session, write); } catch (ItemNotFoundException e) { write.value(false); } } write.endObject(); }
/** * Writes all the properties of a sakai/file node. Also checks what the permissions are for a * session and where the links are.<br> * Same as calling {@link #writeFileNode(Node, Session, JSONWriter, 0)} * * @param node * @param write * @throws JSONException * @throws RepositoryException */ public static void writeFileNode(Node node, Session session, JSONWriter write) throws JSONException, RepositoryException { writeFileNode(node, session, write, 0); }