private boolean parseBody(String body) {
    JsonObject jsonObject = gson.fromJson(body, JsonObject.class);
    if (jsonObject == null) {
      return false;
    }

    JsonElement artifact_data = jsonObject.get("artifact_data");
    if (artifact_data == null) {
      return false;
    }
    JsonArray identities = artifact_data.getAsJsonObject().getAsJsonArray("identities");
    if (identities != null) {
      if (checkKeytabsPrincipal(identities)) {
        return true;
      }
    }

    JsonArray services = artifact_data.getAsJsonObject().getAsJsonArray("services");
    for (int i = 0; i < services.size(); i++) {
      JsonArray components = services.get(i).getAsJsonObject().get("components").getAsJsonArray();
      if (services.get(i).getAsJsonObject().get("identities") != null) {
        if (checkKeytabsPrincipal((JsonArray)services.get(i).getAsJsonObject().get("identities"))) {
          return true;
        }
      }
      for (int ii = 0; ii < components.size(); ii++) {
        JsonArray componentsIdentities = (JsonArray) components.get(ii).getAsJsonObject().get("identities");
        if (componentsIdentities != null) {
          if (checkKeytabsPrincipal(componentsIdentities)) {
            return true;
          }
        }
      }
    }

    Set<Map.Entry<String, JsonElement>> properties = artifact_data.getAsJsonObject().getAsJsonObject("properties").entrySet();
    for (Map.Entry<String, JsonElement> entry : properties) {
      boolean res = validateValues(String.valueOf(entry.getValue()));
      if (res) {
        return true;
      }
    }
    return false;
  }
Create an artifact resource instance.

@param clusterName  cluster name
@param artifactName artifact name

@return an artifact resource instance
ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterService.java