public PagedResult<Repository> readRepositories(String source) throws ReviewboardException { try { JSONObject rootObject = checkedGetJSonRootObject(source); int totalResults = rootObject.getInt("total_results"); JSONArray jsonRepositories = rootObject.getJSONArray("repositories"); List<Repository> repositories = new ArrayList<Repository>(); for (int i = 0; i < jsonRepositories.length(); i++) { JSONObject jsonRepository = jsonRepositories.getJSONObject(i); Repository repository = new Repository(); repository.setId(jsonRepository.getInt("id")); repository.setName(jsonRepository.getString("name")); repository.setTool(RepositoryType.fromDisplayName(jsonRepository.getString("tool"))); repository.setPath(jsonRepository.getString("path")); repositories.add(repository); } return PagedResult.create(repositories, totalResults); } catch (JSONException e) { throw new ReviewboardException(e.getMessage(), e); } }