public static String getLicense(final String licenseName) {
    URL url = resourceManager.getUrl("licenses/" + licenseName + ".txt");
    if (url == null) {
      throw new IllegalArgumentException("Could not find license file for license: " + licenseName);
    }
    BufferedReader reader = null;
    try {
      reader =
          new BufferedReader(new InputStreamReader(url.openStream(), FileHelper.UTF_8_ENCODING));
      final StringBuilder sb = new StringBuilder();
      for (String line = reader.readLine(); line != null; line = reader.readLine()) {
        if (sb.length() != 0) {
          sb.append('\n');
        }
        sb.append(line);
      }

      return sb.toString();
    } catch (Exception e) {
      throw new IllegalStateException(
          "Error occurred while reading license file: " + licenseName, e);
    } finally {
      if (reader != null) {
        try {
          reader.close();
        } catch (IOException e) {
          // do nothing
        }
      }
    }
  }
  public static List<LicensedProject> getLicensedProjects() {
    final List<LicensedProject> result = new ArrayList<AboutDialog.LicensedProject>();
    final URL url = resourceManager.getUrl("licenses/dependency-licenses.csv");
    if (url == null) {
      throw new IllegalStateException("Could not find dependencies file");
    }
    try {
      DataContext dc = DataContextFactory.createCsvDataContext(url.openStream(), ',', '"');
      Table table = dc.getDefaultSchema().getTables()[0];
      Column projectColumn = table.getColumnByName("Project");
      Column websiteColumn = table.getColumnByName("Website");
      Column licenseColumn = table.getColumnByName("License");
      Query q =
          dc.query().from(table).select(table.getColumns()).orderBy(projectColumn).asc().toQuery();
      DataSet ds = dc.executeQuery(q);
      while (ds.next()) {
        final LicensedProject licensedProject = new LicensedProject();
        final Row row = ds.getRow();
        final String licenseName = row.getValue(licenseColumn).toString();

        licensedProject.name = row.getValue(projectColumn).toString();
        licensedProject.websiteUrl = row.getValue(websiteColumn).toString();
        licensedProject.license = getLicense(licenseName);

        result.add(licensedProject);
      }

    } catch (IOException e) {
      throw new IllegalStateException("Error occurred while reading dependencies file", e);
    }

    return result;
  }