Example usage for org.springframework.hateoas Link REL_PREVIOUS

List of usage examples for org.springframework.hateoas Link REL_PREVIOUS

Introduction

In this page you can find the example usage for org.springframework.hateoas Link REL_PREVIOUS.

Prototype

LinkRelation REL_PREVIOUS

To view the source code for org.springframework.hateoas Link REL_PREVIOUS.

Click Source Link

Usage

From source file:org.lareferencia.backend.rest.PageResource.java

public PageResource(Page<T> page, String pageParam, String sizeParam) {
    super();//from   w  w  w  .  j  a  v  a 2 s.c  o m
    this.page = page;
    if (page.hasPrevious()) {
        String path = createBuilder().queryParam(pageParam, page.getNumber() - 1)
                .queryParam(sizeParam, page.getSize()).build().toUriString();
        Link link = new Link(path, Link.REL_PREVIOUS);
        add(link);
    }
    if (page.hasNext()) {
        String path = createBuilder().queryParam(pageParam, page.getNumber() + 1)
                .queryParam(sizeParam, page.getSize()).build().toUriString();
        Link link = new Link(path, Link.REL_NEXT);
        add(link);
    }

    Link link = buildPageLink(pageParam, 0, sizeParam, page.getSize(), Link.REL_FIRST);
    add(link);

    int indexOfLastPage = page.getTotalPages() - 1;
    link = buildPageLink(pageParam, indexOfLastPage, sizeParam, page.getSize(), Link.REL_LAST);
    add(link);

    link = buildPageLink(pageParam, page.getNumber(), sizeParam, page.getSize(), Link.REL_SELF);
    add(link);
}

From source file:com.github.hateoas.forms.spring.uber.AbstractUberNodeTest.java

@Test
public void getsFirstNodeByRel() throws Exception {
    dummyUberNode.addData(bar);//  w w w .  j  ava2  s  .  c  o  m
    dummyUberNode.addLink(linkPrevious);

    assertNotNull("rel previous not found", dummyUberNode.getFirstByRel(Link.REL_PREVIOUS));
}

From source file:com.github.hateoas.forms.spring.uber.AbstractUberNodeTest.java

@Test
public void findsAddedLinks() throws Exception {
    dummyUberNode.addLinks(Arrays.asList(linkNext, linkPrevious));
    assertEquals(URL_NEXT, dummyUberNode.getFirstByRel(Link.REL_NEXT).getUrl());
    assertEquals(URL_PREVIOUS, dummyUberNode.getFirstByRel(Link.REL_PREVIOUS).getUrl());
    assertNull(dummyUberNode.getFirstByRel("noSuchRel"));
}

From source file:de.escalon.hypermedia.spring.hydra.PagedResourcesSerializer.java

@Override
public void serialize(PagedResources pagedResources, JsonGenerator jgen, SerializerProvider serializerProvider)
        throws IOException {

    final SerializationConfig config = serializerProvider.getConfig();
    JavaType javaType = config.constructType(pagedResources.getClass());

    JsonSerializer<Object> serializer = BeanSerializerFactory.instance.createSerializer(serializerProvider,
            javaType);/*from   w w w  . j  av  a  2 s .  c o  m*/

    // replicate pretty much everything from JacksonHydraSerializer
    // since we must reorganize the internals of pagedResources to get a hydra collection
    // with partial page view, we have to serialize pagedResources with an
    // unwrapping serializer
    Deque<LdContext> contextStack = (Deque<LdContext>) serializerProvider.getAttribute(KEY_LD_CONTEXT);
    if (contextStack == null) {
        contextStack = new ArrayDeque<LdContext>();
        serializerProvider.setAttribute(KEY_LD_CONTEXT, contextStack);
    }

    // TODO: filter next/previous/first/last from link list - maybe create new PagedResources without them?
    List<Link> links = pagedResources.getLinks();
    List<Link> filteredLinks = new ArrayList<Link>();
    for (Link link : links) {
        String rel = link.getRel();
        if (navigationRels.contains(rel)) {
            continue;
        } else {
            filteredLinks.add(link);
        }
    }

    PagedResources toRender = new PagedResources(pagedResources.getContent(), pagedResources.getMetadata(),
            filteredLinks);

    jgen.writeStartObject();

    serializeContext(toRender, jgen, serializerProvider, contextStack);

    jgen.writeStringField(JsonLdKeywords.AT_TYPE, "hydra:Collection");

    // serialize with PagedResourcesMixin
    serializer.unwrappingSerializer(NameTransformer.NOP).serialize(toRender, jgen, serializerProvider);

    PagedResources.PageMetadata metadata = pagedResources.getMetadata();
    jgen.writeNumberField("hydra:totalItems", metadata.getTotalElements());

    // begin hydra:view
    jgen.writeObjectFieldStart("hydra:view");
    jgen.writeStringField(JsonLdKeywords.AT_TYPE, "hydra:PartialCollectionView");
    writeRelLink(pagedResources, jgen, Link.REL_NEXT);
    writeRelLink(pagedResources, jgen, "previous");
    // must also translate prev to its synonym previous
    writeRelLink(pagedResources, jgen, Link.REL_PREVIOUS, "previous");
    writeRelLink(pagedResources, jgen, Link.REL_FIRST);
    writeRelLink(pagedResources, jgen, Link.REL_LAST);
    jgen.writeEndObject();
    // end hydra:view

    jgen.writeEndObject();

    contextStack = (Deque<LdContext>) serializerProvider.getAttribute(KEY_LD_CONTEXT);
    if (!contextStack.isEmpty()) {
        contextStack.pop();
    }

}

From source file:org.springframework.data.rest.webmvc.jpa.JpaWebTests.java

@Test
public void accessPersons() throws Exception {

    MockHttpServletResponse response = client.request("/people?page=0&size=1");

    Link nextLink = client.assertHasLinkWithRel(Link.REL_NEXT, response);
    assertDoesNotHaveLinkWithRel(Link.REL_PREVIOUS, response);

    response = client.request(nextLink);
    client.assertHasLinkWithRel(Link.REL_PREVIOUS, response);
    nextLink = client.assertHasLinkWithRel(Link.REL_NEXT, response);

    response = client.request(nextLink);
    client.assertHasLinkWithRel(Link.REL_PREVIOUS, response);
    assertDoesNotHaveLinkWithRel(Link.REL_NEXT, response);
}

From source file:org.springframework.data.rest.webmvc.solr.SolrWebTests.java

/**
 * @see DATAREST-387/*from w ww. j a v  a2 s. co  m*/
 */
@Test
public void allowsPaginationThroughData() throws Exception {

    MockHttpServletResponse response = client.request("/products?page=0&size=1");

    Link nextLink = client.assertHasLinkWithRel(Link.REL_NEXT, response);
    assertDoesNotHaveLinkWithRel(Link.REL_PREVIOUS, response);

    response = client.request(nextLink);
    client.assertHasLinkWithRel(Link.REL_PREVIOUS, response);
    nextLink = client.assertHasLinkWithRel(Link.REL_NEXT, response);

    response = client.request(nextLink);
    client.assertHasLinkWithRel(Link.REL_PREVIOUS, response);
    assertDoesNotHaveLinkWithRel(Link.REL_NEXT, response);
}

From source file:org.springframework.hateoas.LinkUnitTest.java

@Test
public void differentRelMakesDifferentLink() {

    Link left = new Link("foo", Link.REL_PREVIOUS);
    Link right = new Link("foo", Link.REL_NEXT);

    TestUtils.assertNotEqualAndDifferentHashCode(left, right);
}

From source file:org.springframework.hateoas.PagedResources.java

/**
 * Returns the Link pointing to the previous page (if set).
 * /*from  ww w .ja v  a 2  s.  co  m*/
 * @see #addPaginationLinks(Link)
 * @return
 */
@JsonIgnore
public Link getPreviousLink() {
    return getLink(Link.REL_PREVIOUS);
}