/** * Returns the {@link Link} with the given rel. * * @param rel the relation type to lookup a link for. * @return the link with the given rel or {@literal Optional#empty()} if none found. */ public Optional<Link> getLink(String rel) { return links.stream() // .filter(link -> link.getRel().equals(rel)).findFirst(); }
/** * Returns all {@link Links} with the given relation type. * * @return the links */ public List<Link> getLinks(String rel) { return links.stream() // .filter(link -> link.getRel().endsWith(rel)).collect(Collectors.toList()); }
@Override public Link findLinkWithRel(String rel, InputStream representation) { return getLinks(representation).stream() .filter(link -> link.getRel().equals(rel)) .findFirst() .orElse(null); }
@Override public List<Link> findLinksWithRel(String rel, InputStream representation) { return getLinks(representation).stream() .filter(link -> link.getRel().equals(rel)) .collect(Collectors.toList()); }
private static List<Link> withoutSelfLink(List<Link> links) { return links.stream() .filter(link -> !link.getRel().equals(IanaLinkRelation.SELF.value())) .collect(Collectors.toList()); }
@Override public List<Link> findLinksWithRel(String rel, String representation) { return getLinks(representation).stream() .filter(link -> link.getRel().equals(rel)) .collect(Collectors.toList()); }
@Override public Link findLinkWithRel(String rel, String representation) { return getLinks(representation).stream() .filter(link -> link.getRel().equals(rel)) .findFirst() .orElse(null); }
@Override public String getNamespacedRelFrom(Link link) { return getNamespacedRelFor(link.getRel()); }
/** * Wraps the given link into a HAL specific extension. * * @param link must not be {@literal null}. * @return */ private HalLink toHalLink(Link link) { String rel = link.getRel(); String title = getTitle(rel); if (title == null) { title = getTitle(rel.contains(":") ? rel.substring(rel.indexOf(":") + 1) : rel); } return new HalLink(link, title); }
/** * Turns the current template into a {@link Link} by expanding it using the given parameters. * * @param arguments * @return */ public Link expand(Object... arguments) { return new Link(getUriTemplate().expand(arguments).toString(), getRel()); }
/** * Turn a {@list List} of {@link Link}s into a {@link Map}, where you can see ALL the rels of a given * link. * * @param links * @return a map with links mapping onto a {@link List} of rels */ private static Map<String, LinkAndRels> urlRelMap(List<Link> links) { Map<String, LinkAndRels> urlRelMap = new LinkedHashMap<>(); links.forEach(link -> { LinkAndRels linkAndRels = urlRelMap.computeIfAbsent(link.getHref(), s -> new LinkAndRels()); linkAndRels.setLink(link); linkAndRels.getRels().add(link.getRel()); }); return urlRelMap; }
/** * Turns the current template into a {@link Link} by expanding it using the given parameters. * * @param arguments must not be {@literal null}. * @return */ public Link expand(Map<String, ? extends Object> arguments) { return new Link(getUriTemplate().expand(arguments).toString(), getRel()); }
@Override public void doWithAssociation(final Association<? extends PersistentProperty<?>> association) { if (associationLinks.isLinkableAssociation(association)) { PersistentProperty<?> property = association.getInverse(); Links existingLinks = new Links(links); for (Link link : associationLinks.getLinksFor(association, basePath)) { if (existingLinks.hasLink(link.getRel())) { throw new MappingException(String.format(AMBIGUOUS_ASSOCIATIONS, property.toString())); } else { links.add(link); } } } } }
@Override public void doWithAssociation(final Association<? extends PersistentProperty<?>> association) { PersistentProperty<?> property = association.getInverse(); if (associations.isLinkableAssociation(property)) { Links existingLinks = new Links(links); for (Link link : associations.getLinksFor(association, basePath)) { if (existingLinks.hasLink(link.getRel())) { throw new MappingException(String.format(AMBIGUOUS_ASSOCIATIONS, property.toString())); } else { links.add(link); } } } } }
map.put(l2.getRel(), loadPropertyValue(prop.propertyType, l2));
private List<Link> getNavigationalLinks(List<Link> links) { List<Link> ret = new ArrayList<Link>(); for (Link link : links) { if (navigationalRels.contains(link.getRel())) { ret.add(link); } } return ret; }
private List<SirenLink> toSirenLinks(List<Link> links) { List<SirenLink> ret = new ArrayList<SirenLink>(); for (Link link : links) { if (link instanceof Affordance) { ret.add(new SirenLink(null, ((Affordance) link).getRels(), link.getHref(), null, null)); } else { ret.add(new SirenLink(null, Collections.singletonList(link.getRel()), link.getHref(), null, null)); } } return ret; }
/** * Turns the current template into a {@link Link} by expanding it using the given parameters. * * @param arguments must not be {@literal null}. * @return */ public Link expand(Map<String, ? extends Object> arguments) { return new Link(getUriTemplate().expand(arguments).toString(), getRel()); }
private List<SirenLink> toSirenLinks(List<Link> links) { List<SirenLink> ret = new ArrayList<SirenLink>(); for (Link link : links) { if (link instanceof Affordance) { ret.add(new SirenLink(null, ((Affordance) link).getRels(), link.getHref(), null, null)); } else { ret.add(new SirenLink(null, Collections.singletonList(link.getRel()), link.getHref(), null, null)); } } return ret; }