All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.stripe.model.StripeObject Maven / Gradle / Ivy

There is a newer version: 26.8.0-beta.1
Show newest version
package com.stripe.model;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.stripe.net.ApiResource;
import com.stripe.net.StripeResponse;
import java.lang.reflect.Field;

public abstract class StripeObject {

  public static final Gson PRETTY_PRINT_GSON =
      new GsonBuilder()
          .setPrettyPrinting()
          .serializeNulls()
          .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
          .registerTypeAdapter(ExpandableField.class, new ExpandableFieldSerializer())
          .create();

  @Override
  public String toString() {
    return String.format(
        "<%s@%s id=%s> JSON: %s",
        this.getClass().getName(),
        System.identityHashCode(this),
        this.getIdString(),
        PRETTY_PRINT_GSON.toJson(this));
  }

  public StripeResponse getLastResponse() {
    return lastResponse;
  }

  public void setLastResponse(StripeResponse response) {
    this.lastResponse = response;
  }

  /**
   * Returns the raw JsonObject exposed by the Gson library. This can be used to access properties
   * that are not directly exposed by Stripe's Java library.
   *
   * 

Note: You should always prefer using the standard property accessors whenever possible. * Because this method exposes Gson's underlying API, it is not considered fully stable. Stripe's * Java library might move off Gson in the future and this method would be removed or change * significantly. * * @return The raw JsonObject. */ public JsonObject getRawJsonObject() { // Lazily initialize this the first time the getter is called. if ((this.rawJsonObject == null) && (this.getLastResponse() != null)) { this.rawJsonObject = ApiResource.GSON.fromJson(this.getLastResponse().body(), JsonObject.class); } return this.rawJsonObject; } public String toJson() { return PRETTY_PRINT_GSON.toJson(this); } private transient StripeResponse lastResponse; private transient JsonObject rawJsonObject; private Object getIdString() { try { Field idField = this.getClass().getDeclaredField("id"); return idField.get(this); } catch (SecurityException e) { return ""; } catch (NoSuchFieldException e) { return ""; } catch (IllegalArgumentException e) { return ""; } catch (IllegalAccessException e) { return ""; } } protected static boolean equals(Object a, Object b) { return a == null ? b == null : a.equals(b); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy