Search in sources :

Example 1 with Link

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);
    }
}
Also used : GraknTx(ai.grakn.GraknTx) Timer(com.codahale.metrics.Timer) Keyspace(ai.grakn.Keyspace) Jacksonisable(ai.grakn.engine.Jacksonisable) Link(ai.grakn.engine.controller.response.Link)

Example 2 with Link

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()));
}
Also used : Response(com.jayway.restassured.response.Response) GraknTx(ai.grakn.GraknTx) Matchers.containsString(org.hamcrest.Matchers.containsString) RolePlayer(ai.grakn.engine.controller.response.RolePlayer) Link(ai.grakn.engine.controller.response.Link) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

GraknTx (ai.grakn.GraknTx)2 Link (ai.grakn.engine.controller.response.Link)2 Keyspace (ai.grakn.Keyspace)1 Jacksonisable (ai.grakn.engine.Jacksonisable)1 RolePlayer (ai.grakn.engine.controller.response.RolePlayer)1 Timer (com.codahale.metrics.Timer)1 Response (com.jayway.restassured.response.Response)1 HashSet (java.util.HashSet)1 Matchers.containsString (org.hamcrest.Matchers.containsString)1 Test (org.junit.Test)1