Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions src/main/java/com/stripe/model/StringInt64TypeAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.stripe.model;

import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

public class StringInt64TypeAdapter extends TypeAdapter<Long> {
/** Serializes Long values as JSON strings and deserializes string-encoded integers. */
@Override
public void write(JsonWriter out, Long value) throws IOException {
if (value == null) {
out.nullValue();
return;
}

out.value(value.toString());
}

@Override
public Long read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if (token == JsonToken.NULL) {
in.nextNull();
return null;
}

return Long.valueOf(in.nextString());
}
}
3 changes: 3 additions & 0 deletions src/main/java/com/stripe/model/v2/billing/Cadence.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -722,6 +724,7 @@ public static class Card extends StripeObject {
public static class MandateOptions extends StripeObject {
/** Amount to be charged for future payments. */
@SerializedName("amount")
@JsonAdapter(StringInt64TypeAdapter.class)
Long amount;

/** The AmountType for the mandate. One of {@code fixed} or {@code maximum}. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -247,6 +249,7 @@ public static class Card extends StripeObject {
public static class MandateOptions extends StripeObject {
/** Amount to be charged for future payments. */
@SerializedName("amount")
@JsonAdapter(StringInt64TypeAdapter.class)
Long amount;

/** The AmountType for the mandate. One of {@code fixed} or {@code maximum}. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -226,6 +228,7 @@ public static class Card extends StripeObject {
public static class MandateOptions extends StripeObject {
/** Amount to be charged for future payments. */
@SerializedName("amount")
@JsonAdapter(StringInt64TypeAdapter.class)
Long amount;

/** The AmountType for the mandate. One of {@code fixed} or {@code maximum}. */
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/stripe/model/v2/billing/LicenseFee.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -196,6 +198,7 @@ public static class Tier extends StripeObject {
public static class TransformQuantity extends StripeObject {
/** Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -124,6 +126,7 @@ public static class Tier extends StripeObject {
public static class TransformQuantity extends StripeObject {
/** Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/stripe/model/v2/billing/RateCardRate.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.List;
Expand Down Expand Up @@ -167,6 +169,7 @@ public static class Tier extends StripeObject {
public static class TransformQuantity extends StripeObject {
/** Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/stripe/model/v2/reporting/ReportRun.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// File generated from our OpenAPI spec
package com.stripe.model.v2.reporting;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.HasId;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.model.StripeObject;
import java.time.Instant;
import java.util.Map;
Expand Down Expand Up @@ -122,6 +124,7 @@ public static class File extends StripeObject {

/** The total size of the file in bytes. */
@SerializedName("size")
@JsonAdapter(StringInt64TypeAdapter.class)
Long size;

/** A pre-signed URL that allows secure, time-limited access to download the file. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec
package com.stripe.param.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.net.ApiRequestParams;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -1016,6 +1018,7 @@ public Builder setRequestThreeDSecure(
public static class MandateOptions {
/** Amount to be charged for future payments. */
@SerializedName("amount")
@JsonAdapter(StringInt64TypeAdapter.class)
Long amount;

/** The AmountType for the mandate. One of {@code fixed} or {@code maximum}. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec
package com.stripe.param.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.net.ApiRequestParams;
import com.stripe.param.common.EmptyParam;
import java.util.ArrayList;
Expand Down Expand Up @@ -1088,6 +1090,7 @@ public Builder setRequestThreeDSecure(
public static class MandateOptions {
/** Amount to be charged for future payments. */
@SerializedName("amount")
@JsonAdapter(StringInt64TypeAdapter.class)
Long amount;

/** The AmountType for the mandate. One of {@code fixed} or {@code maximum}. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec
package com.stripe.param.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.net.ApiRequestParams;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -516,6 +518,7 @@ public enum UpToInf implements ApiRequestParams.EnumParam {
public static class TransformQuantity {
/** <strong>Required.</strong> Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec
package com.stripe.param.v2.billing;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.net.ApiRequestParams;
import com.stripe.param.common.EmptyParam;
import java.util.ArrayList;
Expand Down Expand Up @@ -511,6 +513,7 @@ public enum UpToInf implements ApiRequestParams.EnumParam {
public static class TransformQuantity {
/** <strong>Required.</strong> Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// File generated from our OpenAPI spec
package com.stripe.param.v2.billing.ratecards;

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.net.ApiRequestParams;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -488,6 +490,7 @@ public enum UpToInf implements ApiRequestParams.EnumParam {
public static class TransformQuantity {
/** <strong>Required.</strong> Divide usage by this number. */
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
Long divideBy;

/**
Expand Down
32 changes: 32 additions & 0 deletions src/test/java/com/stripe/net/ApiRequestParamsConverterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.stripe.model.StringInt64TypeAdapter;
import com.stripe.param.common.EmptyParam;
import java.time.Instant;
import java.util.Arrays;
Expand Down Expand Up @@ -122,6 +126,12 @@ private static class HasInstantParam extends ApiRequestParams {
public Instant instantParam;
}

private static class HasStringInt64Param extends ApiRequestParams {
@SerializedName("divide_by")
@JsonAdapter(StringInt64TypeAdapter.class)
public Long divideBy;
}

@Test
public void testHasExtraParams() {
ModelHasExtraParams params = new ModelHasExtraParams(ParamCode.ENUM_FOO);
Expand Down Expand Up @@ -288,6 +298,28 @@ public void testObjectMaps() {
assertEquals(objBar.get("hello"), "world");
}

@Test
public void testToMapWithStringInt64Params() {
HasStringInt64Param params = new HasStringInt64Param();
params.divideBy = 123L;

Map<String, Object> paramMap = toMap(params);

TestCase.assertEquals(1, paramMap.size());
TestCase.assertTrue(paramMap.containsKey("divide_by"));
TestCase.assertEquals("123", paramMap.get("divide_by"));
}

@Test
public void testFromJsonWithStringInt64ResourceField() {
Gson gson = new GsonBuilder().create();

HasStringInt64Param resource =
gson.fromJson("{\"divide_by\":\"123\"}", HasStringInt64Param.class);

TestCase.assertEquals(Long.valueOf(123L), resource.divideBy);
}

@Test
public void testToMapWithInstantParams() {
HasInstantParam params = new HasInstantParam();
Expand Down
Loading