extends LinkEnricher api to append link arrays to the response

This commit is contained in:
Sebastian Sdorra
2019-01-03 11:18:22 +01:00
parent 7821b68d9c
commit 5f80f5c4af
3 changed files with 103 additions and 0 deletions

View File

@@ -3,6 +3,9 @@ package sonia.scm.api.v2.resources;
import de.otto.edison.hal.Link;
import de.otto.edison.hal.Links;
import java.util.ArrayList;
import java.util.List;
class EdisonLinkAppender implements LinkAppender {
private final Links.Builder builder;
@@ -15,4 +18,32 @@ class EdisonLinkAppender implements LinkAppender {
public void appendOne(String rel, String href) {
builder.single(Link.link(rel, href));
}
@Override
public LinkArrayBuilder arrayBuilder(String rel) {
return new EdisonLinkArrayBuilder(builder, rel);
}
private static class EdisonLinkArrayBuilder implements LinkArrayBuilder {
private final Links.Builder builder;
private final String rel;
private final List<Link> linkArray = new ArrayList<>();
private EdisonLinkArrayBuilder(Links.Builder builder, String rel) {
this.builder = builder;
this.rel = rel;
}
@Override
public LinkArrayBuilder append(String name, String href) {
linkArray.add(Link.linkBuilder(rel, href).withName(name).build());
return this;
}
@Override
public void build() {
builder.array(linkArray);
}
}
}