GroupRest { @GET @Path("{groupTitle}") @RolesAllowed("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("Get a single Mobi Group") public Response getGroup(@PathParam("groupTitle") String groupTitle) { if (StringUtils.isEmpty(groupTitle)) { throw ErrorUtils.sendError("Group title must be provided", Response.Status.BAD_REQUEST); } try { Group group = engineManager.retrieveGroup(groupTitle).orElseThrow(() -> ErrorUtils.sendError("Group " + groupTitle + " not found", Response.Status.NOT_FOUND)); String json = groupedModelToString(group.getModel().filter(group.getResource(), null, null), getRDFFormat("jsonld"), transformer); return Response.ok(getObjectFromJsonld(json)).build(); } catch (IllegalArgumentException ex) { throw ErrorUtils.sendError(ex.getMessage(), Response.Status.BAD_REQUEST); } }  @GET @RolesAllowed("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("Get all Mobi Groups") Response getGroups(); @POST @RolesAllowed("admin") @ApiOperation("Create a new Mobi Group") @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.MULTIPART_FORM_DATA) Response createGroup(@FormDataParam("title") String title,
                         @FormDataParam("description") String description,
                         @FormDataParam("roles") List<FormDataBodyPart> roles,
                         @FormDataParam("members") List<FormDataBodyPart> members); @GET @Path("{groupTitle}") @RolesAllowed("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("Get a single Mobi Group") Response getGroup(@PathParam("groupTitle") String groupTitle); @PUT @Path("{groupTitle}") @RolesAllowed("admin") @ApiOperation("Update a Mobi Group's information") @Consumes(MediaType.APPLICATION_JSON) Response updateGroup(@PathParam("groupTitle") String groupTitle, String newGroupStr); @DELETE @Path("{groupTitle}") @RolesAllowed("admin") @ApiOperation("Remove a Mobi Group") Response deleteGroup(@PathParam("groupTitle") String groupTitle); @GET @Path("{groupTitle}/roles") @RolesAllowed("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("List roles of a Mobi Group") Response getGroupRoles(@PathParam("groupTitle") String groupTitle); @PUT @Path("{groupTitle}/roles") @RolesAllowed("admin") @ApiOperation("Add roles to a Mobi Group") Response addGroupRoles(@PathParam("groupTitle") String groupTitle, @QueryParam("roles") List<String> roles); @DELETE @Path("{groupTitle}/roles") @RolesAllowed("admin") @ApiOperation("Remove role from a Mobi Group") Response removeGroupRole(@PathParam("groupTitle") String groupTitle, @QueryParam("role") String role); @GET @Path("{groupTitle}/users") @RolesAllowed("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("List users of a Mobi Group") Response getGroupUsers(@PathParam("groupTitle") String groupTitle); @PUT @Path("{groupTitle}/users") @RolesAllowed("admin") @ApiOperation("Add a Mobi User to a Group") Response addGroupUser(@PathParam("groupTitle") String groupTitle, 
                                 @QueryParam("users") List<String> usernames); @DELETE @Path("{groupTitle}/users") @RolesAllowed("admin") @ApiOperation("Remove a Mobi User from a Group") Response removeGroupUser(@PathParam("groupTitle") String groupTitle, @QueryParam("user") String username);  }
@Test public void getGroupTest() { Response response = target().path("groups/testGroup").request().get(); assertEquals(response.getStatus(), 200); verify(engineManager).retrieveGroup("testGroup"); JSONObject result = JSONObject.fromObject(response.readEntity(String.class)); assertFalse(result.containsKey("@graph")); assertTrue(result.containsKey("@id")); assertEquals(result.getString("@id"), group.getResource().stringValue()); }