public Object fromJson()

in src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/CacheKeyJsonParser.java [39:64]


  public Object fromJson(String cacheName, String jsonString) {
    JsonElement json = gson.fromJson(Strings.nullToEmpty(jsonString), JsonElement.class);
    Supplier<JsonElement> id = Suppliers.memoize(() -> json.getAsJsonObject().get("id"));
    Supplier<JsonElement> uuid = Suppliers.memoize(() -> json.getAsJsonObject().get("uuid"));

    // Need to add a case for 'adv_bases'
    switch (cacheName) {
      case Constants.ACCOUNTS:
        return id.get() == null ? null : Account.id(id.get().getAsInt());
      case Constants.GROUPS:
        return id.get() == null ? null : AccountGroup.id(id.get().getAsInt());
      case Constants.GROUPS_BYINCLUDE:
      case Constants.GROUPS_MEMBERS:
        return uuid.get() == null ? null : AccountGroup.uuid(uuid.get().getAsString());
      case Constants.PROJECT_LIST:
        return gson.fromJson(json, Object.class);
      case Constants.PROJECTS:
        return Project.nameKey(json.getAsString());
      default:
        try {
          return gson.fromJson(json, String.class);
        } catch (Exception e) {
          return gson.fromJson(json, Object.class);
        }
    }
  }