List of usage examples for org.springframework.hateoas Link REL_FIRST
LinkRelation REL_FIRST
To view the source code for org.springframework.hateoas Link REL_FIRST.
Click Source Link
From source file:org.lareferencia.backend.rest.PageResource.java
public PageResource(Page<T> page, String pageParam, String sizeParam) { super();// ww w.ja v a2s .com 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: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 ww . 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(); } }