use of ai.grakn.engine.controller.response.Link in project grakn by graknlabs.
the class ConceptController method getConceptCollection.
private <X extends ai.grakn.concept.Concept> String getConceptCollection(Request request, Response response, String key, Function<GraknTx, X> getter, Function<X, Stream<Jacksonisable>> collector) throws JsonProcessingException {
response.type(APPLICATION_JSON);
Keyspace keyspace = Keyspace.of(mandatoryPathParameter(request, KEYSPACE_PARAM));
try (GraknTx tx = factory.tx(keyspace, READ);
Timer.Context context = labelGetTimer.time()) {
X concept = getter.apply(tx);
// If the concept was not found return;
if (concept == null) {
response.status(SC_NOT_FOUND);
return "[]";
}
List<Jacksonisable> list = collector.apply(concept).collect(Collectors.toList());
Link link = Link.create(request.pathInfo());
ListResource<Jacksonisable> listResource = ListResource.create(link, key, list);
return objectMapper.writeValueAsString(listResource);
}
}
use of ai.grakn.engine.controller.response.Link in project grakn by graknlabs.
the class ConceptControllerTest method whenGettingRelationships_EnsureRolePlayersAreReturned.
@Test
public void whenGettingRelationships_EnsureRolePlayersAreReturned() throws IOException {
// Get Expected Relationships
Set<RolePlayer> relationshipsExpected = new HashSet<>();
try (GraknTx tx = factory.tx(keyspace, GraknTxType.READ)) {
entity.plays().forEach(role -> {
Link roleWrapper = Link.create(role);
entity.relationships(role).forEach(relationship -> {
Link relationshipWrapper = Link.create(relationship);
relationshipsExpected.add(RolePlayer.create(roleWrapper, relationshipWrapper));
});
});
}
// Make the request
String request = entityWrapper.relationships().id();
Response response = RestAssured.when().get(request);
assertEquals(SC_OK, response.getStatusCode());
// Check relationships are embedded
RolePlayer[] relationships = response.jsonPath().getObject("relationships", RolePlayer[].class);
assertThat(relationships, arrayContainingInAnyOrder(relationshipsExpected.toArray()));
}
Aggregations