diff --git a/stripe/src/main/java/com/stripe/android/PaymentSessionData.java b/stripe/src/main/java/com/stripe/android/PaymentSessionData.java index 418eab9c4b5..b77c8405b4b 100644 --- a/stripe/src/main/java/com/stripe/android/PaymentSessionData.java +++ b/stripe/src/main/java/com/stripe/android/PaymentSessionData.java @@ -10,6 +10,8 @@ import com.stripe.android.model.ShippingMethod; import com.stripe.android.utils.ObjectUtils; +import java.util.Objects; + /** * A data class representing the state of the associated {@link PaymentSession}. */ @@ -211,7 +213,8 @@ public PaymentSessionData[] newArray(int size) { private PaymentSessionData(@NonNull Parcel in) { mCartTotal = in.readLong(); mIsPaymentReadyToCharge = in.readInt() == 1; - mPaymentResult = PaymentSessionUtils.paymentResultFromString(in.readString()); + mPaymentResult = PaymentSessionUtils.paymentResultFromString( + Objects.requireNonNull(in.readString())); mPaymentMethod = in.readParcelable(PaymentMethod.class.getClassLoader()); mShippingInformation = in.readParcelable(ShippingInformation.class.getClassLoader()); mShippingMethod = in.readParcelable(ShippingMethod.class.getClassLoader()); diff --git a/stripe/src/main/java/com/stripe/android/model/AccountParams.java b/stripe/src/main/java/com/stripe/android/model/AccountParams.java index f5b27041a0c..aed3672e68d 100644 --- a/stripe/src/main/java/com/stripe/android/model/AccountParams.java +++ b/stripe/src/main/java/com/stripe/android/model/AccountParams.java @@ -13,7 +13,7 @@ /** * Represents a grouping of parameters needed to create a Token for a Connect account on the server. */ -public class AccountParams { +public final class AccountParams { static final String API_BUSINESS_TYPE = "business_type"; static final String API_TOS_SHOWN_AND_ACCEPTED = "tos_shown_and_accepted"; diff --git a/stripe/src/main/java/com/stripe/android/model/Address.java b/stripe/src/main/java/com/stripe/android/model/Address.java index fc340a0126f..edc9bbb0676 100644 --- a/stripe/src/main/java/com/stripe/android/model/Address.java +++ b/stripe/src/main/java/com/stripe/android/model/Address.java @@ -26,7 +26,7 @@ * Model for an owner address * object in the Source api. */ -public class Address extends StripeJsonModel implements Parcelable { +public final class Address extends StripeJsonModel implements Parcelable { @IntDef({ RequiredBillingAddressFields.NONE, diff --git a/stripe/src/main/java/com/stripe/android/model/BankAccount.java b/stripe/src/main/java/com/stripe/android/model/BankAccount.java index 693fbfb538a..5e60507f935 100644 --- a/stripe/src/main/java/com/stripe/android/model/BankAccount.java +++ b/stripe/src/main/java/com/stripe/android/model/BankAccount.java @@ -19,7 +19,7 @@ * the Stripe * documentation. */ -public class BankAccount { +public final class BankAccount { @Retention(RetentionPolicy.SOURCE) @StringDef({TYPE_COMPANY, TYPE_INDIVIDUAL}) diff --git a/stripe/src/main/java/com/stripe/android/model/Card.java b/stripe/src/main/java/com/stripe/android/model/Card.java index 59daf318d53..ec9abb28a66 100644 --- a/stripe/src/main/java/com/stripe/android/model/Card.java +++ b/stripe/src/main/java/com/stripe/android/model/Card.java @@ -37,7 +37,7 @@ /** * A model object representing a Card in the Android SDK. */ -public class Card extends StripeJsonModel implements StripePaymentSource { +public final class Card extends StripeJsonModel implements StripePaymentSource { @Retention(RetentionPolicy.SOURCE) @StringDef({ diff --git a/stripe/src/main/java/com/stripe/android/model/Customer.java b/stripe/src/main/java/com/stripe/android/model/Customer.java index 928ee8fde05..8146c4b82e8 100644 --- a/stripe/src/main/java/com/stripe/android/model/Customer.java +++ b/stripe/src/main/java/com/stripe/android/model/Customer.java @@ -27,7 +27,7 @@ /** * Model for a Stripe Customer object */ -public class Customer extends StripeJsonModel { +public final class Customer extends StripeJsonModel { private static final String FIELD_ID = "id"; private static final String FIELD_OBJECT = "object"; diff --git a/stripe/src/main/java/com/stripe/android/model/CustomerSource.java b/stripe/src/main/java/com/stripe/android/model/CustomerSource.java index a0632640ab9..66dabcc80c6 100644 --- a/stripe/src/main/java/com/stripe/android/model/CustomerSource.java +++ b/stripe/src/main/java/com/stripe/android/model/CustomerSource.java @@ -16,7 +16,7 @@ /** * Model of the "data" object inside a {@link Customer} "source" object. */ -public class CustomerSource extends StripeJsonModel implements StripePaymentSource { +public final class CustomerSource extends StripeJsonModel implements StripePaymentSource { @NonNull private final StripePaymentSource mStripePaymentSource; diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentIntent.java b/stripe/src/main/java/com/stripe/android/model/PaymentIntent.java index 615ec85360a..79f8794beda 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentIntent.java +++ b/stripe/src/main/java/com/stripe/android/model/PaymentIntent.java @@ -39,7 +39,7 @@ *
  • PaymentIntents API
  • * */ -public class PaymentIntent extends StripeJsonModel { +public final class PaymentIntent extends StripeJsonModel { private static final String VALUE_PAYMENT_INTENT = "payment_intent"; static final String FIELD_ID = "id"; diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentIntentParams.java b/stripe/src/main/java/com/stripe/android/model/PaymentIntentParams.java index 38c6a2a0162..94fda7d57f1 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentIntentParams.java +++ b/stripe/src/main/java/com/stripe/android/model/PaymentIntentParams.java @@ -7,7 +7,7 @@ import java.util.HashMap; import java.util.Map; -public class PaymentIntentParams { +public final class PaymentIntentParams { public static final String API_PARAM_SOURCE_DATA = "source_data"; public static final String API_PARAM_PAYMENT_METHOD_DATA = "payment_method_data"; diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentMethod.java b/stripe/src/main/java/com/stripe/android/model/PaymentMethod.java index f82c52c0a36..95c50462fc8 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentMethod.java +++ b/stripe/src/main/java/com/stripe/android/model/PaymentMethod.java @@ -33,7 +33,7 @@ * * See {@link PaymentMethodCreateParams} for PaymentMethod creation */ -public class PaymentMethod extends StripeJsonModel implements Parcelable { +public final class PaymentMethod extends StripeJsonModel implements Parcelable { private static final String FIELD_ID = "id"; private static final String FIELD_BILLING_DETAILS = "billing_details"; private static final String FIELD_CARD = "card"; diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.java b/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.java index 03abe914758..fd9854aa043 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.java +++ b/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.java @@ -18,7 +18,7 @@ * * See {@link PaymentMethod} for API object */ -public class PaymentMethodCreateParams { +public final class PaymentMethodCreateParams { private static final String FIELD_BILLING_DETAILS = "billing_details"; private static final String FIELD_CARD = "card"; diff --git a/stripe/src/main/java/com/stripe/android/model/ShippingInformation.java b/stripe/src/main/java/com/stripe/android/model/ShippingInformation.java index cf25b72d103..f31a90465aa 100644 --- a/stripe/src/main/java/com/stripe/android/model/ShippingInformation.java +++ b/stripe/src/main/java/com/stripe/android/model/ShippingInformation.java @@ -20,7 +20,7 @@ /** * Model representing a shipping address object */ -public class ShippingInformation extends StripeJsonModel implements Parcelable { +public final class ShippingInformation extends StripeJsonModel implements Parcelable { public static final Creator CREATOR = new Creator() { @Override public ShippingInformation createFromParcel(Parcel source) { diff --git a/stripe/src/main/java/com/stripe/android/model/ShippingMethod.java b/stripe/src/main/java/com/stripe/android/model/ShippingMethod.java index 51d2e629263..dbd4d04eb71 100644 --- a/stripe/src/main/java/com/stripe/android/model/ShippingMethod.java +++ b/stripe/src/main/java/com/stripe/android/model/ShippingMethod.java @@ -21,7 +21,7 @@ /** * Model representing a shipping method in the Android SDK. */ -public class ShippingMethod extends StripeJsonModel implements Parcelable { +public final class ShippingMethod extends StripeJsonModel implements Parcelable { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@ -50,8 +50,7 @@ public ShippingMethod[] newArray(int size) { public ShippingMethod(@NonNull String label, @NonNull String identifier, long amount, - @NonNull @Size(min = 0, max = 3) String - currencyCode) { + @NonNull @Size(min = 0, max = 3) String currencyCode) { this(label, identifier, null, amount, currencyCode); } diff --git a/stripe/src/main/java/com/stripe/android/model/Source.java b/stripe/src/main/java/com/stripe/android/model/Source.java index a0042adc1fb..a22641c8190 100644 --- a/stripe/src/main/java/com/stripe/android/model/Source.java +++ b/stripe/src/main/java/com/stripe/android/model/Source.java @@ -29,7 +29,7 @@ * can be seen at * https://stripe.com/docs/api/sources/object?lang=java. */ -public class Source extends StripeJsonModel implements StripePaymentSource { +public final class Source extends StripeJsonModel implements StripePaymentSource { static final String VALUE_SOURCE = "source"; private static final String VALUE_CARD = "card"; diff --git a/stripe/src/main/java/com/stripe/android/model/SourceCardData.java b/stripe/src/main/java/com/stripe/android/model/SourceCardData.java index d4f9acf4a1e..930e18dbaeb 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceCardData.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceCardData.java @@ -28,7 +28,7 @@ /** * Model for data contained in the SourceTypeData of a Card Source. */ -public class SourceCardData extends StripeSourceTypeModel { +public final class SourceCardData extends StripeSourceTypeModel { @Retention(RetentionPolicy.SOURCE) @StringDef({ diff --git a/stripe/src/main/java/com/stripe/android/model/SourceCodeVerification.java b/stripe/src/main/java/com/stripe/android/model/SourceCodeVerification.java index 15a77b7581d..3713d3af010 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceCodeVerification.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceCodeVerification.java @@ -21,7 +21,7 @@ * https://stripe.com/docs/api/sources/object#source_object-code_verification * object in the source api, not source code verification */ -public class SourceCodeVerification extends StripeJsonModel { +public final class SourceCodeVerification extends StripeJsonModel { // Note: these are the same as the values for the @Redirect.Status StringDef. // They don't have to stay the same forever, so they are redefined here. diff --git a/stripe/src/main/java/com/stripe/android/model/SourceOwner.java b/stripe/src/main/java/com/stripe/android/model/SourceOwner.java index d0ffbee85c9..d6ab88c027c 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceOwner.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceOwner.java @@ -20,7 +20,7 @@ * Model for a owner object * in the Source api. */ -public class SourceOwner extends StripeJsonModel { +public final class SourceOwner extends StripeJsonModel { private static final String VERIFIED = "verified_"; private static final String FIELD_ADDRESS = "address"; @@ -32,14 +32,14 @@ public class SourceOwner extends StripeJsonModel { private static final String FIELD_VERIFIED_NAME = VERIFIED + FIELD_NAME; private static final String FIELD_VERIFIED_PHONE = VERIFIED + FIELD_PHONE; - @Nullable private Address mAddress; - @Nullable private String mEmail; - @Nullable private String mName; - @Nullable private String mPhone; - @Nullable private Address mVerifiedAddress; - @Nullable private String mVerifiedEmail; - @Nullable private String mVerifiedName; - @Nullable private String mVerifiedPhone; + @Nullable private final Address mAddress; + @Nullable private final String mEmail; + @Nullable private final String mName; + @Nullable private final String mPhone; + @Nullable private final Address mVerifiedAddress; + @Nullable private final String mVerifiedEmail; + @Nullable private final String mVerifiedName; + @Nullable private final String mVerifiedPhone; private SourceOwner( @Nullable Address address, @@ -100,38 +100,6 @@ public String getVerifiedPhone() { return mVerifiedPhone; } - void setAddress(Address address) { - mAddress = address; - } - - void setEmail(String email) { - mEmail = email; - } - - void setName(String name) { - mName = name; - } - - void setPhone(String phone) { - mPhone = phone; - } - - void setVerifiedAddress(Address verifiedAddress) { - mVerifiedAddress = verifiedAddress; - } - - void setVerifiedEmail(String verifiedEmail) { - mVerifiedEmail = verifiedEmail; - } - - void setVerifiedName(String verifiedName) { - mVerifiedName = verifiedName; - } - - void setVerifiedPhone(String verifiedPhone) { - mVerifiedPhone = verifiedPhone; - } - @NonNull @Override public Map toMap() { diff --git a/stripe/src/main/java/com/stripe/android/model/SourceParams.java b/stripe/src/main/java/com/stripe/android/model/SourceParams.java index 888955ea703..d267d4e5e59 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceParams.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceParams.java @@ -15,7 +15,7 @@ /** * Represents a grouping of parameters needed to create a {@link Source} object on the server. */ -public class SourceParams { +public final class SourceParams { private static final String API_PARAM_AMOUNT = "amount"; private static final String API_PARAM_CURRENCY = "currency"; @@ -246,7 +246,7 @@ public static SourceParams createCustomParams() { * @return a {@link SourceParams} object that can be used to create a source. */ @NonNull - public static SourceParams createSourceFromTokenParams(String tokenId) { + public static SourceParams createSourceFromTokenParams(@NonNull String tokenId) { SourceParams sourceParams = SourceParams.createCustomParams(); sourceParams.setType(Source.CARD); sourceParams.setToken(tokenId); diff --git a/stripe/src/main/java/com/stripe/android/model/SourceReceiver.java b/stripe/src/main/java/com/stripe/android/model/SourceReceiver.java index 219c6846bfc..495c6225008 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceReceiver.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceReceiver.java @@ -9,14 +9,16 @@ import org.json.JSONException; import org.json.JSONObject; +import java.util.AbstractMap; import java.util.HashMap; import java.util.Map; /** - * Model for a receiver object in - * the source api. Present if the {@link Source} is a receiver. + * Model for a + * receiver object + * in the Sources API. Present if the {@link Source} is a receiver. */ -public class SourceReceiver extends StripeJsonModel { +public final class SourceReceiver extends StripeJsonModel { private static final String FIELD_ADDRESS = "address"; private static final String FIELD_AMOUNT_CHARGED = "amount_charged"; @@ -24,10 +26,10 @@ public class SourceReceiver extends StripeJsonModel { private static final String FIELD_AMOUNT_RETURNED = "amount_returned"; // This is not to be confused with the Address object - @Nullable private String mAddress; - private long mAmountCharged; - private long mAmountReceived; - private long mAmountReturned; + @Nullable private final String mAddress; + private final long mAmountCharged; + private final long mAmountReceived; + private final long mAmountReturned; private SourceReceiver(@Nullable String address, long amountCharged, @@ -44,38 +46,22 @@ public String getAddress() { return mAddress; } - public void setAddress(@Nullable String address) { - mAddress = address; - } - public long getAmountCharged() { return mAmountCharged; } - public void setAmountCharged(long amountCharged) { - mAmountCharged = amountCharged; - } - public long getAmountReceived() { return mAmountReceived; } - public void setAmountReceived(long amountReceived) { - mAmountReceived = amountReceived; - } - public long getAmountReturned() { return mAmountReturned; } - public void setAmountReturned(long amountReturned) { - mAmountReturned = amountReturned; - } - @NonNull @Override public Map toMap() { - final Map map = new HashMap<>(); + final AbstractMap map = new HashMap<>(); if (!StripeTextUtils.isBlank(mAddress)) { map.put(FIELD_ADDRESS, mAddress); } diff --git a/stripe/src/main/java/com/stripe/android/model/SourceRedirect.java b/stripe/src/main/java/com/stripe/android/model/SourceRedirect.java index fef8be556b3..f07825bc09a 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceRedirect.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceRedirect.java @@ -24,7 +24,7 @@ * Model for a * redirect object in the source api. */ -public class SourceRedirect extends StripeJsonModel { +public final class SourceRedirect extends StripeJsonModel { @Retention(RetentionPolicy.SOURCE) @StringDef({ @@ -43,9 +43,9 @@ public class SourceRedirect extends StripeJsonModel { private static final String FIELD_STATUS = "status"; private static final String FIELD_URL = "url"; - @Nullable private String mReturnUrl; - @Nullable @Status private String mStatus; - @Nullable private String mUrl; + @Nullable private final String mReturnUrl; + @Nullable @Status private final String mStatus; + @Nullable private final String mUrl; private SourceRedirect(@Nullable String returnUrl, @Status @Nullable String status, @Nullable String url) { @@ -59,29 +59,17 @@ public String getReturnUrl() { return mReturnUrl; } - public void setReturnUrl(@Nullable String returnUrl) { - mReturnUrl = returnUrl; - } - @Nullable @Status public String getStatus() { return mStatus; } - public void setStatus(@Nullable @Status String status) { - mStatus = status; - } - @Nullable public String getUrl() { return mUrl; } - public void setUrl(@Nullable String url) { - mUrl = url; - } - @NonNull @Override public Map toMap() { diff --git a/stripe/src/main/java/com/stripe/android/model/SourceSepaDebitData.java b/stripe/src/main/java/com/stripe/android/model/SourceSepaDebitData.java index c42a4fb9358..554c7afe2bc 100644 --- a/stripe/src/main/java/com/stripe/android/model/SourceSepaDebitData.java +++ b/stripe/src/main/java/com/stripe/android/model/SourceSepaDebitData.java @@ -23,7 +23,7 @@ /** * Model for the SourceTypeData contained in a SEPA Debit Source object. */ -public class SourceSepaDebitData extends StripeSourceTypeModel { +public final class SourceSepaDebitData extends StripeSourceTypeModel { private static final String FIELD_BANK_CODE = "bank_code"; private static final String FIELD_BRANCH_CODE = "branch_code"; diff --git a/stripe/src/main/java/com/stripe/android/model/StripePaymentSource.java b/stripe/src/main/java/com/stripe/android/model/StripePaymentSource.java index 07b88044a7f..619112c4f23 100644 --- a/stripe/src/main/java/com/stripe/android/model/StripePaymentSource.java +++ b/stripe/src/main/java/com/stripe/android/model/StripePaymentSource.java @@ -6,6 +6,5 @@ * Represents an object that has an ID field that can be used to create payments with Stripe. */ public interface StripePaymentSource { - @Nullable - String getId(); + @Nullable String getId(); } diff --git a/stripe/src/main/java/com/stripe/android/model/Token.java b/stripe/src/main/java/com/stripe/android/model/Token.java index 2e91da09f66..1b53df224d4 100644 --- a/stripe/src/main/java/com/stripe/android/model/Token.java +++ b/stripe/src/main/java/com/stripe/android/model/Token.java @@ -19,7 +19,7 @@ * account details or personally identifiable information (PII), directly from your customers in a * secure manner. A Token representing this information is returned to you to use. */ -public class Token implements StripePaymentSource { +public final class Token implements StripePaymentSource { @Retention(RetentionPolicy.SOURCE) @StringDef({TYPE_CARD, TYPE_BANK_ACCOUNT, TYPE_PII, TYPE_ACCOUNT, TYPE_CVC_UPDATE}) diff --git a/stripe/src/main/java/com/stripe/android/model/wallets/WalletFactory.java b/stripe/src/main/java/com/stripe/android/model/wallets/WalletFactory.java index 5e68e6bf41b..86ef330ecc5 100644 --- a/stripe/src/main/java/com/stripe/android/model/wallets/WalletFactory.java +++ b/stripe/src/main/java/com/stripe/android/model/wallets/WalletFactory.java @@ -8,7 +8,7 @@ import static com.stripe.android.model.StripeJsonUtils.optString; import static com.stripe.android.model.wallets.Wallet.FIELD_DYNAMIC_LAST4; -public class WalletFactory { +public final class WalletFactory { @Nullable public Wallet create(@Nullable JSONObject walletJson) { diff --git a/stripe/src/test/java/com/stripe/android/PaymentSessionDataTest.java b/stripe/src/test/java/com/stripe/android/PaymentSessionDataTest.java index 67e899c7eb4..25270e24e19 100644 --- a/stripe/src/test/java/com/stripe/android/PaymentSessionDataTest.java +++ b/stripe/src/test/java/com/stripe/android/PaymentSessionDataTest.java @@ -57,7 +57,7 @@ public void updateIsPaymentReadyToCharge_shippingRequired() { assertFalse(data.updateIsPaymentReadyToCharge(config)); assertFalse(data.isPaymentReadyToCharge()); - data.setShippingMethod(Mockito.mock(ShippingMethod.class)); + data.setShippingMethod(new ShippingMethod("label", "id", 0, "USD")); assertTrue(data.updateIsPaymentReadyToCharge(config)); assertTrue(data.isPaymentReadyToCharge()); }