@RvdAuth @GET @Produces(MediaType.APPLICATION_JSON) public Response listProjects(@Context HttpServletRequest request) { Principal loggedUser = securityContext.getUserPrincipal(); List<ProjectItem> items; try { items = projectService.getAvailableProjectsByOwner(loggedUser.getName()); projectService.fillStartUrlsForProjects(items, request); } catch (BadWorkspaceDirectoryStructure e) { logger.error(e.getMessage(), e); return Response.status(Status.INTERNAL_SERVER_ERROR).build(); } catch (StorageException e) { logger.error(e.getMessage(), e); return Response.status(Status.INTERNAL_SERVER_ERROR).build(); } catch (ProjectException e) { logger.error(e.getMessage(), e); return Response.status(Status.INTERNAL_SERVER_ERROR).build(); } Gson gson = new Gson(); return Response.ok(gson.toJson(items), MediaType.APPLICATION_JSON).build(); }