public static RESTLink assertLinkExist( final SingleResourceTransportDto resource, final String href, final String expectedRel, final String expectedType, final String expectedTitle) { Optional<RESTLink> link = tryFind( resource.searchLinksByHref(href), new Predicate<RESTLink>() { @Override public boolean apply(final RESTLink input) { return expectedRel.equals(input.getRel()) && expectedType.equals(input.getType()) && expectedTitle.equals(input.getTitle()); } }); assertTrue( link.isPresent(), String.format( "link with 'href' %s 'rel' %s, type '%s' and title '%s' was not found", href, expectedRel, expectedType, expectedTitle)); return link.get(); }
@Override public <R extends HttpRequest> R bindToRequest(final R request, final Object input) { checkArgument( checkNotNull(input, "input") instanceof SingleResourceTransportDto[], "this binder is only valid for SingleResourceTransportDto arrays"); SingleResourceTransportDto[] dtos = (SingleResourceTransportDto[]) input; LinksDto refs = new LinksDto(); for (SingleResourceTransportDto dto : dtos) { RESTLink editLink = checkNotNull(dto.getEditLink(), "entity must have an edit link"); // Do not add repeated references if (refs.searchLinkByHref(editLink.getHref()) == null) { refs.addLink(new RESTLink(getRelToUse(input), editLink.getHref())); } } return super.bindToRequest(request, refs); }
@Override public void handleResponse(final MessageContext msgContext) throws Throwable { if (msgContext.getResponseEntity() != null && msgContext.getResponseEntity() instanceof SingleResourceTransportDto) { SingleResourceTransportDto srtDto = (SingleResourceTransportDto) msgContext.getResponseEntity(); if (srtDto != null) { String baseUri = StringUtils.removeEnd(msgContext.getUriInfo().getBaseUri().toString(), SLASH); if (srtDto instanceof WrapperDto<?>) { for (Object obj : ((WrapperDto<?>) srtDto).getCollection()) { if (obj instanceof SingleResourceTransportDto) { SingleResourceTransportDto srt = (SingleResourceTransportDto) obj; srt.setLinks(checkLinks(srt.getLinks(), baseUri)); } } } else if (srtDto.getLinks() != null) { srtDto.setLinks(checkLinks(srtDto.getLinks(), baseUri)); } } } super.handleResponse(msgContext); }