PageService extends BasicService implements OwnerAPISupport<Page> { @GET @Path("/pages/{pageId}/references") @Produces(MediaType.APPLICATION_JSON) public PageReferences getReferences(@PathParam("pageId") long pageId) { Page existingPage = getExistingPage(pageId, false); if (!existingPage.isListPublicly() && !this.isAdmin() && !inAdminOwners(existingPage.getOwners())) { throwUnauthorized(); } PageReferences refs = new PageReferences(); List<Playlist> playlists = PlaylistDAO.getPlaylistsByPage(existingPage); for (Playlist playlist : playlists) { if (this.isAdmin() || inAdminOwners(playlist.getOwners())) { refs.addUserPlaylist(playlist); } else { refs.setForeignPlaylists(refs.getForeignPlaylists() + 1); } } return refs; }  @GET @Path("/pages") @Produces(MediaType.APPLICATION_JSON) List<Page> getPages(@QueryParam("userId") String userId); @GET @Path("/catalog") @Produces(MediaType.APPLICATION_JSON) List<Page> getPageCatalog(); @GET @Path("/advertisedpages") @Produces(MediaType.APPLICATION_JSON) List<Page> getAdvertisedPages(@DefaultValue("0") @QueryParam("maxResults") int maxResults); @GET @Path("/pages/{pageId}") @Produces(MediaType.APPLICATION_JSON) Page getPage(@PathParam("pageId") long pageId); @PUT @Path("/pages/{pageId}") @Produces(MediaType.APPLICATION_JSON) Page updatePage(@PathParam("pageId") long pageId, Page pageData); @PUT @Path("/pages/{pageId}/templatevalues") @Produces(MediaType.APPLICATION_JSON) Page updateTemplateValues(@PathParam("pageId") long pageId, Page pageData); @POST @Path("/pages") @Consumes(MediaType.APPLICATION_JSON) Page createPage(Page page); @POST @Path("/pages/{pageId}/screenshot") Response uploadScreenshot(@PathParam("pageId") long pageId); @DELETE @Path("/pages/{pageId}/screenshot") Response deleteScreenshot(@PathParam("pageId") long pageId); @GET @Path("/drafts/{pageId}") @Produces(MediaType.APPLICATION_JSON) Page getDraft(@PathParam("pageId") long pageId); @PUT @Path("/drafts/{pageId}") @Consumes(MediaType.APPLICATION_JSON) Page setDraft(@PathParam("pageId") long pageId, Page page); @DELETE @Path("/drafts/{pageId}") Response deleteDraft(@PathParam("pageId") long pageId); @DELETE @Path("/pages/{pageId}") Response deletePage(@PathParam("pageId") long pageId); @POST @Path("/pages/{pageId}/copy") @Consumes(MediaType.APPLICATION_JSON) Page copyPage(@PathParam("pageId") long pageId, Page newPage); @GET @Path("/pages/{pageId}/references") @Produces(MediaType.APPLICATION_JSON) PageReferences getReferences(@PathParam("pageId") long pageId); @Override @POST @Path("/pages/{pageId}/owners") @Consumes(MediaType.APPLICATION_JSON) Page addOwners(@PathParam("pageId") long pageId, Owner[] ownerData); @Override @PUT @Path("/pages/{pageId}/owners/{ownerId}") @Consumes(MediaType.APPLICATION_JSON) Page updateOwner(@PathParam("pageId") long pageId, @PathParam("ownerId") long ownerId, Owner owner); @Override @DELETE @Path("/pages/{pageId}/owners/{ownerId}") @Produces(MediaType.APPLICATION_JSON) Page deleteOwner(@PathParam("pageId") long pageId, @PathParam("ownerId") long ownerId);  }
@Test public void testGetReferences() throws Exception { Playlist playlist1 = new Playlist("d1"); playlist1 = playlistService.createPlaylist(playlist1); Playlist playlist2 = new Playlist("d2"); playlist2 = playlistService.createPlaylist(playlist2); Playlist playlist3 = new Playlist("d3"); playlist3 = playlistService.createPlaylist(playlist3); Page page1 = pageService.createPage(new Page("p1")); Page page2 = pageService.createPage(new Page("p2")); playlist1 = playlistService.addPage(playlist1.getId(), page1); playlist1 = playlistService.addPage(playlist1.getId(), page2); playlist2 = playlistService.addPage(playlist2.getId(), page1); playlist3 = playlistService.addPage(playlist3.getId(), page1); playlist3.getOwners().clear(); playlist3 = PlaylistDAO.save(playlist3); PageReferences refs = pageService.getReferences(page1.getId()); assertEquals(2, refs.getUserPlaylists().size()); assertEquals(1, refs.getForeignPlaylists()); refs = pageService.getReferences(page2.getId()); assertEquals(1, refs.getUserPlaylists().size()); assertEquals(0, refs.getForeignPlaylists()); }
@Test(expected = WebApplicationException.class) public void testGetReferencesForNonExistingPage() throws Exception { pageService.getReferences(-1); }