use of org.xwiki.rest.model.jaxb.Spaces in project xwiki-platform by xwiki.
the class PageResourceTest method getFirstPage.
private Page getFirstPage() throws Exception {
GetMethod getMethod = executeGet(getFullUri(WikisResource.class));
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Wikis wikis = (Wikis) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(wikis.getWikis().size() > 0);
Wiki wiki = wikis.getWikis().get(0);
// Get a link to an index of spaces (http://localhost:8080/xwiki/rest/wikis/xwiki/spaces)
Link spacesLink = getFirstLinkByRelation(wiki, Relations.SPACES);
Assert.assertNotNull(spacesLink);
getMethod = executeGet(spacesLink.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Spaces spaces = (Spaces) this.unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(spaces.getSpaces().size() > 0);
Space space = null;
for (final Space s : spaces.getSpaces()) {
if (this.space.equals(s.getName())) {
space = s;
break;
}
}
// get the pages list for the space
// eg: http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Main/pages
Link pagesInSpace = getFirstLinkByRelation(space, Relations.PAGES);
Assert.assertNotNull(pagesInSpace);
getMethod = executeGet(pagesInSpace.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Pages pages = (Pages) this.unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(pages.getPageSummaries().size() > 0);
Link pageLink = null;
for (final PageSummary ps : pages.getPageSummaries()) {
if (this.pageName.equals(ps.getName())) {
pageLink = getFirstLinkByRelation(ps, Relations.PAGE);
Assert.assertNotNull(pageLink);
break;
}
}
Assert.assertNotNull(pageLink);
getMethod = executeGet(pageLink.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Page page = (Page) this.unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
return page;
}
use of org.xwiki.rest.model.jaxb.Spaces in project xwiki-platform by xwiki.
the class PagesResourceTest method testRepresentation.
@Override
@Test
public void testRepresentation() throws Exception {
GetMethod getMethod = executeGet(getFullUri(WikisResource.class));
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Wikis wikis = (Wikis) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(wikis.getWikis().size() > 0);
Wiki wiki = wikis.getWikis().get(0);
Link link = getFirstLinkByRelation(wiki, Relations.SPACES);
Assert.assertNotNull(link);
getMethod = executeGet(link.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Spaces spaces = (Spaces) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(spaces.getSpaces().size() > 0);
Space space = spaces.getSpaces().get(0);
link = getFirstLinkByRelation(space, Relations.PAGES);
Assert.assertNotNull(link);
getMethod = executeGet(link.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Pages pages = (Pages) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(pages.getPageSummaries().size() > 0);
checkLinks(pages);
}
use of org.xwiki.rest.model.jaxb.Spaces in project xwiki-platform by xwiki.
the class SpacesResourceTest method testRepresentation.
@Override
@Test
public void testRepresentation() throws Exception {
// Create a subspace
createPageIfDoesntExist(Arrays.asList("SpaceA", "SpaceB", "SpaceC"), "MyPage", "some content");
GetMethod getMethod = executeGet(getFullUri(WikisResource.class));
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Wikis wikis = (Wikis) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(wikis.getWikis().size() > 0);
Wiki wiki = wikis.getWikis().get(0);
Link link = getFirstLinkByRelation(wiki, Relations.SPACES);
Assert.assertNotNull(link);
getMethod = executeGet(link.getHref());
Assert.assertEquals(getHttpMethodInfo(getMethod), HttpStatus.SC_OK, getMethod.getStatusCode());
Spaces spaces = (Spaces) unmarshaller.unmarshal(getMethod.getResponseBodyAsStream());
Assert.assertTrue(spaces.getSpaces().size() > 0);
boolean nestedSpaceFound = false;
for (Space space : spaces.getSpaces()) {
link = getFirstLinkByRelation(space, Relations.SEARCH);
Assert.assertNotNull(link);
checkLinks(space);
if ("xwiki:SpaceA.SpaceB.SpaceC".equals(space.getId())) {
Assert.assertEquals("SpaceC", space.getName());
nestedSpaceFound = true;
}
/*
* Check that in the returned spaces there are not spaces not visible to user Guest, for example the
* "Scheduler" space
*/
Assert.assertFalse(space.getName().equals("Scheduler"));
}
Assert.assertTrue(nestedSpaceFound);
}
use of org.xwiki.rest.model.jaxb.Spaces in project xwiki-platform by xwiki.
the class SpacesResourceImpl method getSpaces.
@Override
public Spaces getSpaces(String wikiName, Integer start, Integer number) throws XWikiRestException {
Spaces spaces = objectFactory.createSpaces();
try {
List<String> spaceNames = queryManager.getNamedQuery("getSpaces").addFilter(componentManager.<QueryFilter>getInstance(QueryFilter.class, "hidden")).setOffset(start).setLimit(number).setWiki(wikiName).execute();
for (String spaceName : spaceNames) {
List<String> spaceList = Utils.getSpacesFromSpaceId(spaceName);
String homeId = Utils.getPageId(wikiName, spaceList, "WebHome");
Document home = null;
XWiki xwikiApi = Utils.getXWikiApi(componentManager);
if (xwikiApi.hasAccessLevel("view", homeId)) {
if (xwikiApi.exists(homeId)) {
home = Utils.getXWikiApi(componentManager).getDocument(homeId);
}
spaces.getSpaces().add(DomainObjectFactory.createSpace(objectFactory, uriInfo.getBaseUri(), wikiName, spaceList, home));
}
}
} catch (Exception e) {
throw new XWikiRestException(e);
}
return spaces;
}
Aggregations