From d9aaed6d6f590e378d8ac384f48a33c1df9e52e2 Mon Sep 17 00:00:00 2001 From: Dusty Gutzmann Date: Thu, 17 Sep 2020 09:07:47 -0600 Subject: [PATCH] Release 262.2 (#81) --- clover-android-connector-sdk/build.gradle | 2 +- .../sdk/v3/session/PropertyAction.java | 56 ++ .../sdk/v3/session/SessionConnector.java | 49 +- .../sdk/v3/session/SessionContract.java | 6 - .../sdk/v3/session/SessionProperty.java | 267 ++++++ .../java/com/clover/sdk/v3/base/CardData.java | 13 +- .../com/clover/sdk/v3/base/Challenge.java | 13 +- .../clover/sdk/v3/base/ChallengeTypeEnum.java | 13 +- .../sdk/v3/base/PendingPaymentEntry.java | 15 +- .../operation/DiscountsAddedOperation.java | 13 +- .../operation/DiscountsDeletedOperation.java | 13 +- .../operation/LineItemsAddedOperation.java | 13 +- .../operation/LineItemsDeletedOperation.java | 13 +- .../operation/OrderDeletedOperation.java | 13 +- .../sdk/v3/remotepay/ActivityMessage.java | 15 +- .../clover/sdk/v3/remotepay/AuthRequest.java | 21 +- .../clover/sdk/v3/remotepay/AuthResponse.java | 13 +- .../clover/sdk/v3/remotepay/BaseRequest.java | 15 +- .../clover/sdk/v3/remotepay/BaseResponse.java | 13 +- .../v3/remotepay/BaseTransactionRequest.java | 21 +- .../v3/remotepay/CapturePreAuthRequest.java | 17 +- .../v3/remotepay/CapturePreAuthResponse.java | 15 +- .../sdk/v3/remotepay/CardInfoRequest.java | 15 +- .../sdk/v3/remotepay/CardInfoResponse.java | 13 +- .../sdk/v3/remotepay/CloseoutRequest.java | 17 +- .../sdk/v3/remotepay/CloseoutResponse.java | 13 +- .../v3/remotepay/CloverDeviceErrorEvent.java | 13 +- .../sdk/v3/remotepay/CloverDeviceEvent.java | 13 +- .../v3/remotepay/ConfirmPaymentRequest.java | 15 +- .../v3/remotepay/CustomActivityRequest.java | 15 +- .../v3/remotepay/CustomActivityResponse.java | 13 +- .../clover/sdk/v3/remotepay/CustomerInfo.java | 13 +- .../sdk/v3/remotepay/DeviceEventEnum.java | 13 +- .../clover/sdk/v3/remotepay/DeviceInfo.java | 19 +- .../DisplayReceiptOptionsRequest.java | 29 +- .../v3/remotepay/ExternalDeviceStateData.java | 13 +- .../v3/remotepay/ExternalDeviceStateEnum.java | 13 +- .../java/com/clover/sdk/v3/remotepay/Img.java | 13 +- .../clover/sdk/v3/remotepay/InputOption.java | 13 +- .../clover/sdk/v3/remotepay/KeyPressEnum.java | 13 +- .../sdk/v3/remotepay/ManualRefundRequest.java | 21 +- .../v3/remotepay/ManualRefundResponse.java | 13 +- .../clover/sdk/v3/remotepay/MerchantInfo.java | 17 +- .../sdk/v3/remotepay/MessageFromActivity.java | 15 +- .../sdk/v3/remotepay/MessageToActivity.java | 15 +- .../v3/remotepay/OpenCashDrawerRequest.java | 15 +- .../sdk/v3/remotepay/PaymentResponse.java | 13 +- .../sdk/v3/remotepay/PlatformError.java | 13 +- .../sdk/v3/remotepay/PreAuthRequest.java | 21 +- .../sdk/v3/remotepay/PreAuthResponse.java | 13 +- .../v3/remotepay/PrintJobStatusRequest.java | 15 +- .../v3/remotepay/PrintJobStatusResponse.java | 13 +- .../PrintRefundPaymentReceiptResponse.java | 13 +- .../clover/sdk/v3/remotepay/PrintRequest.java | 16 +- .../sdk/v3/remotepay/QueryStatusEnum.java | 13 +- .../sdk/v3/remotepay/ReadCardDataRequest.java | 15 +- .../v3/remotepay/ReadCardDataResponse.java | 13 +- .../v3/remotepay/RefundPaymentRequest.java | 19 +- .../v3/remotepay/RefundPaymentResponse.java | 17 +- .../sdk/v3/remotepay/ResetDeviceResponse.java | 13 +- .../sdk/v3/remotepay/ResponseCodeEnum.java | 13 +- .../sdk/v3/remotepay/ResultStatusEnum.java | 13 +- .../RetrieveDeviceStatusRequest.java | 15 +- .../RetrieveDeviceStatusResponse.java | 13 +- .../v3/remotepay/RetrievePaymentRequest.java | 15 +- .../v3/remotepay/RetrievePaymentResponse.java | 13 +- .../RetrievePendingPaymentsResponse.java | 13 +- .../v3/remotepay/RetrievePrintersRequest.java | 15 +- .../remotepay/RetrievePrintersResponse.java | 13 +- .../clover/sdk/v3/remotepay/SaleRequest.java | 21 +- .../clover/sdk/v3/remotepay/SaleResponse.java | 13 +- .../com/clover/sdk/v3/remotepay/TipAdded.java | 13 +- .../v3/remotepay/TipAdjustAuthRequest.java | 19 +- .../v3/remotepay/TipAdjustAuthResponse.java | 15 +- .../sdk/v3/remotepay/TransactionRequest.java | 21 +- .../sdk/v3/remotepay/TransactionTypeEnum.java | 13 +- .../sdk/v3/remotepay/VaultCardRequest.java | 15 +- .../sdk/v3/remotepay/VaultCardResponse.java | 13 +- .../v3/remotepay/VerifySignatureRequest.java | 15 +- .../sdk/v3/remotepay/VoidCreditRequest.java | 19 +- .../sdk/v3/remotepay/VoidCreditResponse.java | 15 +- .../remotepay/VoidPaymentRefundRequest.java | 21 +- .../remotepay/VoidPaymentRefundResponse.java | 17 +- .../sdk/v3/remotepay/VoidPaymentRequest.java | 21 +- .../sdk/v3/remotepay/VoidPaymentResponse.java | 13 +- clover-android-loyalty-kit/build.gradle | 2 +- clover-android-sdk-examples/build.gradle | 10 +- .../src/main/AndroidManifest.xml | 24 +- .../sdk/examples/CashDrawersActivity.java | 224 +++++ .../sdk/examples/CashEventTestActivity.java | 2 +- .../android/sdk/examples/CurrencyUtils.java | 61 ++ .../android/sdk/examples/DebouncedButton.java | 61 ++ .../sdk/examples/EmployeeTestActivity.java | 34 +- .../sdk/examples/InventoryTestActivity.java | 45 +- .../android/sdk/examples/KeypadEditText.java | 40 + .../sdk/examples/KeypadTestActivity.java | 92 ++ .../sdk/examples/MerchantTestActivity.java | 26 +- .../sdk/examples/OrderPaidActivity.java | 112 +-- .../android/sdk/examples/OrderUtils.java | 56 ++ .../sdk/examples/PrintTaskTestActivity.java | 171 ++-- .../sdk/examples/PrinterListAdapter.java | 52 +- .../sdk/examples/PrinterTestActivity.java | 33 +- .../ReceiptRegistrationTestActivity.java | 225 +++++ .../ReceiptRegistrationTestProvider.java | 129 +++ .../sdk/examples/SaleRefundTestActivity.java | 195 ++++ .../clover/android/sdk/examples/Utils.java | 101 ++ .../src/main/res/drawable/clover_logo.png | Bin 12772 -> 1635 bytes .../main/res/layout/activity_cash_drawers.xml | 30 + .../main/res/layout/activity_keypad_test.xml | 70 ++ .../res/layout/activity_print_task_test.xml | 7 - .../res/layout/activity_salerefund_test.xml | 82 ++ .../src/main/res/layout/cashdrawer_view.xml | 10 + .../src/main/res/values/completions_email.xml | 9 + .../src/main/res/values/strings.xml | 43 +- clover-android-sdk/build.gradle | 5 +- clover-android-sdk/lib/calc-297.4.jar | Bin 33408 -> 0 bytes clover-android-sdk/lib/calc-311.2.jar | Bin 0 -> 33576 bytes .../payments/TerminalManagementComponent.aidl | 3 + .../clover/common/payments/VoidExtraData.aidl | 3 + .../sdk/v3/employees/IEmployeeService.aidl | 2 +- .../sdk/v3/inventory/IInventoryService.aidl | 40 +- .../clover/sdk/v3/order/IOrderService.aidl | 7 +- .../sdk/v3/order/IOrderServiceV3_1.aidl | 317 ++++++- .../payments/TerminalManagementComponent.java | 392 ++++++++ .../TerminalManagementComponentType.java | 57 ++ .../payments/TerminalManagementStandard.java | 408 ++++++++ .../clover/common/payments/VoidExtraData.java | 218 +++++ .../clover/common2/payments/PayIntent.java | 55 +- .../java/com/clover/sdk/ExtractableEnum.java | 3 + .../clover/sdk/ExtractionStrategyEnum.java | 5 +- .../java/com/clover/sdk/FdParcelable.java | 7 +- .../java/com/clover/sdk/GenericClient.java | 373 ++++++-- .../com/clover/sdk/GenericParcelable.java | 9 +- .../main/java/com/clover/sdk/JSONifiable.java | 11 +- .../com/clover/sdk/ValueExtractorEnum.java | 13 +- .../sdk/cashdrawer/APG554aCashDrawer.java | 29 + .../com/clover/sdk/cashdrawer/CashDrawer.java | 129 ++- .../clover/sdk/cashdrawer/CashDrawers.java | 185 +++- .../cashdrawer/CloverServiceCashDrawer.java | 108 +++ .../sdk/cashdrawer/MiniPrinterCashDrawer.java | 27 + .../Station2018PrinterCashDrawer.java | 32 +- .../cashdrawer/StationPrinterCashDrawer.java | 28 + .../clover/sdk/cashdrawer/package-info.java | 4 +- .../extractors/BasicExtractionStrategy.java | 5 +- .../BasicListExtractionStrategy.java | 5 +- .../extractors/EnumExtractionStrategy.java | 5 +- .../EnumListExtractionStrategy.java | 5 +- .../sdk/extractors/ExtractionStrategy.java | 5 +- .../sdk/extractors/MapExtractionStrategy.java | 5 +- .../extractors/RecordExtractionStrategy.java | 9 +- .../RecordListExtractionStrategy.java | 9 +- .../sdk/internal/util/UnstableCallClient.java | 68 +- .../util/UnstableContentResolverClient.java | 245 +++++ .../com/clover/sdk/internal/util/Views.java | 87 +- .../com/clover/sdk/util/CloverAccount.java | 44 +- .../java/com/clover/sdk/util/CloverAuth.java | 113 ++- .../com/clover/sdk/util/CustomerMode.java | 10 +- .../java/com/clover/sdk/util/Platform.java | 463 ---------- .../java/com/clover/sdk/util/Platform2.java | 6 +- .../main/java/com/clover/sdk/v1/Intents.java | 131 ++- .../com/clover/sdk/v1/ServiceConnector.java | 16 +- .../com/clover/sdk/v1/merchant/Merchant.java | 15 +- .../sdk/v1/merchant/MerchantAddress.java | 10 +- .../sdk/v1/merchant/MerchantConnector.java | 10 +- .../com/clover/sdk/v1/merchant/Module.java | 57 +- .../com/clover/sdk/v1/printer/CashDrawer.java | 52 +- .../com/clover/sdk/v1/printer/Printer.java | 288 +++--- .../sdk/v1/printer/PrinterConnector.java | 10 +- .../clover/sdk/v1/printer/PrinterIntent.java | 5 +- .../printer/ReceiptRegistrationConnector.java | 10 +- .../sdk/v1/printer/job/ImagePrintJob.java | 29 +- .../sdk/v1/printer/job/ImagePrintJob2.java | 35 +- .../clover/sdk/v1/printer/job/PrintJob.java | 30 + .../sdk/v1/printer/job/ViewPrintJob.java | 69 +- .../clover/sdk/v1/tender/TenderConnector.java | 10 +- .../java/com/clover/sdk/v3/JsonHelper.java | 24 +- .../com/clover/sdk/v3/JsonParcelHelper.java | 12 +- .../java/com/clover/sdk/v3/Validator.java | 12 +- .../com/clover/sdk/v3/account/Account.java | 34 +- .../sdk/v3/analytics/AnalyticalEvent.java | 14 +- .../sdk/v3/analytics/CreditAnalytic.java | 15 +- .../sdk/v3/analytics/GatewayTxAnalytic.java | 13 +- .../sdk/v3/analytics/PaymentAnalytic.java | 13 +- .../v3/analytics/PaymentProcessedPayload.java | 14 +- .../v3/analytics/PaymentRefundPayload.java | 14 +- .../sdk/v3/analytics/RefundAnalytic.java | 15 +- .../sdk/v3/analytics/TipAdjustedPayload.java | 14 +- .../clover/sdk/v3/apps/AggregateRating.java | 13 +- .../clover/sdk/v3/apps/AndroidPermission.java | 17 +- .../clover/sdk/v3/apps/AndroidVersion.java | 24 +- .../main/java/com/clover/sdk/v3/apps/App.java | 98 +- .../clover/sdk/v3/apps/AppBillingInfo.java | 15 +- .../com/clover/sdk/v3/apps/AppBundle.java | 20 +- .../clover/sdk/v3/apps/AppBundleCountry.java | 17 +- .../com/clover/sdk/v3/apps/AppCarousel.java | 40 +- .../com/clover/sdk/v3/apps/AppCategory.java | 19 +- .../com/clover/sdk/v3/apps/AppHistory.java | 14 +- .../com/clover/sdk/v3/apps/AppLocale.java | 54 +- .../com/clover/sdk/v3/apps/AppMetered.java | 23 +- .../clover/sdk/v3/apps/AppMeteredCountry.java | 28 +- .../clover/sdk/v3/apps/AppNotification.java | 18 +- .../clover/sdk/v3/apps/AppSubscription.java | 28 +- .../sdk/v3/apps/AppSubscriptionCountry.java | 32 +- .../clover/sdk/v3/apps/AppSuggestRecord.java | 14 +- .../com/clover/sdk/v3/apps/AppTracking.java | 13 +- .../com/clover/sdk/v3/apps/AppUsbDevice.java | 20 +- .../com/clover/sdk/v3/apps/BusinessType.java | 20 +- .../com/clover/sdk/v3/apps/DeviceType.java | 21 +- .../clover/sdk/v3/apps/MccAppCarousel.java | 18 +- .../com/clover/sdk/v3/apps/ReleaseNote.java | 17 +- .../com/clover/sdk/v3/apps/Screenshot.java | 23 +- .../java/com/clover/sdk/v3/apps/WebHook.java | 19 +- .../java/com/clover/sdk/v3/base/Address.java | 29 +- .../com/clover/sdk/v3/base/CountryInfo.java | 21 +- .../java/com/clover/sdk/v3/base/IdArray.java | 222 +++++ .../java/com/clover/sdk/v3/base/Point.java | 13 +- .../java/com/clover/sdk/v3/base/Points.java | 13 +- .../com/clover/sdk/v3/base/Reference.java | 15 +- .../com/clover/sdk/v3/base/ServiceCharge.java | 24 +- .../com/clover/sdk/v3/base/Signature.java | 13 +- .../java/com/clover/sdk/v3/base/Tender.java | 19 +- .../clover/sdk/v3/billing/AppLineItem.java | 870 ------------------ .../sdk/v3/billing/AppLineItemStatus.java | 28 - .../sdk/v3/billing/AppLineItemType.java | 28 - .../sdk/v3/billing/AppMeteredEvent.java | 20 +- .../com/clover/sdk/v3/billing/Charge.java | 27 +- .../clover/sdk/v3/billing/ChargeStatus.java | 2 +- .../sdk/v3/billing/DeviceCountInfo.java | 75 +- .../sdk/v3/billing/DevicePriceInfo.java | 13 +- .../v3/billing/InfoleaseChargeAttempt.java | 15 +- .../sdk/v3/billing/MerchantAppCharge.java | 21 +- .../sdk/v3/billing/MerchantPlanCharge.java | 15 +- .../com/clover/sdk/v3/billing/Statement.java | 13 +- .../com/clover/sdk/v3/boarding/Equipment.java | 614 ------------ .../clover/sdk/v3/cacheindex/CacheIndex.java | 13 +- .../com/clover/sdk/v3/cash/CashContract.java | 12 +- .../com/clover/sdk/v3/cash/CashEvent.java | 16 +- .../com/clover/sdk/v3/cash/CashEvents.java | 177 +++- .../clover/sdk/v3/custom/CustomActivity.java | 13 +- .../com/clover/sdk/v3/customers/Address.java | 38 +- .../com/clover/sdk/v3/customers/Card.java | 30 +- .../com/clover/sdk/v3/customers/Customer.java | 21 +- .../clover/sdk/v3/customers/CustomerInfo.java | 13 +- .../sdk/v3/customers/CustomerMetadata.java | 18 +- .../clover/sdk/v3/customers/EmailAddress.java | 16 +- .../sdk/v3/customers/IdentityDocument.java | 20 +- .../clover/sdk/v3/customers/PhoneNumber.java | 16 +- .../sdk/v3/customers/RemoteCustomer.java | 15 +- .../clover/sdk/v3/developer/Developer.java | 83 +- .../v3/developer/DeveloperMerchantLimits.java | 13 +- .../sdk/v3/developer/DeveloperPermission.java | 17 +- .../sdk/v3/developer/DeveloperRole.java | 21 +- .../sdk/v3/developer/MerchantBatch.java | 14 +- .../v3/developer/MerchantGroupAppVersion.java | 23 +- .../sdk/v3/developer/RolloutMerchant.java | 15 +- .../java/com/clover/sdk/v3/device/Device.java | 43 +- .../clover/sdk/v3/device/DeviceAccessory.java | 28 +- .../clover/sdk/v3/device/LimitedDevice.java | 19 +- .../java/com/clover/sdk/v3/device/Rom.java | 17 +- .../clover/sdk/v3/device/RomBuildType.java | 19 + .../com/clover/sdk/v3/employees/Employee.java | 33 +- .../clover/sdk/v3/employees/EmployeeCard.java | 20 +- .../sdk/v3/employees/EmployeeConnector.java | 5 + .../sdk/v3/employees/PermissionSet.java | 22 +- .../sdk/v3/employees/PermissionSetRole.java | 21 +- .../clover/sdk/v3/employees/Permissions.java | 15 +- .../com/clover/sdk/v3/employees/Role.java | 23 +- .../com/clover/sdk/v3/employees/Shift.java | 15 +- .../v3/entitlements/EntitlementPlanCode.java | 30 +- .../MerchantGatewayEntitlement.java | 25 +- ...rchantGatewayEntitlementConfiguration.java | 18 +- .../sdk/v3/happyhour/HappyHourDiscount.java | 31 +- .../com/clover/sdk/v3/hours/HourRange.java | 21 +- .../com/clover/sdk/v3/hours/HoursSet.java | 17 +- .../com/clover/sdk/v3/hours/Reference.java | 15 +- .../clover/sdk/v3/inventory/Attribute.java | 22 +- .../com/clover/sdk/v3/inventory/Category.java | 21 +- .../clover/sdk/v3/inventory/CategoryItem.java | 17 +- .../com/clover/sdk/v3/inventory/Discount.java | 23 +- .../sdk/v3/inventory/InventoryConnector.java | 31 +- .../sdk/v3/inventory/InventoryContract.java | 12 +- .../com/clover/sdk/v3/inventory/Item.java | 38 +- .../clover/sdk/v3/inventory/ItemGroup.java | 21 +- .../sdk/v3/inventory/ItemModifierGroup.java | 17 +- .../clover/sdk/v3/inventory/ItemStock.java | 21 +- .../com/clover/sdk/v3/inventory/Modifier.java | 26 +- .../v3/inventory/ModifierFdParcelable.java | 2 +- .../sdk/v3/inventory/ModifierGroup.java | 28 +- .../sdk/v3/inventory/ModifierGroupArray.java | 13 +- .../com/clover/sdk/v3/inventory/Option.java | 21 +- .../clover/sdk/v3/inventory/OptionItem.java | 15 +- .../java/com/clover/sdk/v3/inventory/Tag.java | 21 +- .../com/clover/sdk/v3/inventory/TagItem.java | 17 +- .../clover/sdk/v3/inventory/TagPrinter.java | 17 +- .../com/clover/sdk/v3/inventory/TaxRate.java | 24 +- .../clover/sdk/v3/inventory/TaxRateItem.java | 17 +- .../EnforceAdditionalAppsAuthorization.java | 2 +- .../v3/merchant/EnforcePlanAuthorization.java | 2 +- .../sdk/v3/merchant/ExternalMerchant.java | 24 +- .../com/clover/sdk/v3/merchant/Gateway.java | 51 +- .../java/com/clover/sdk/v3/merchant/Logo.java | 21 +- .../com/clover/sdk/v3/merchant/Merchant.java | 79 +- .../v3/merchant/MerchantBankProcessing.java | 26 +- .../sdk/v3/merchant/MerchantBillingInfo.java | 15 +- .../sdk/v3/merchant/MerchantBoarding.java | 110 ++- .../v3/merchant/MerchantDeviceBoarding.java | 30 +- .../merchant/MerchantDevicesV2Connector.java | 15 + .../sdk/v3/merchant/MerchantHierarchy.java | 65 +- .../clover/sdk/v3/merchant/MerchantPlan.java | 34 +- .../sdk/v3/merchant/MerchantPlanMeta.java | 17 +- .../v3/merchant/MerchantPlanPricingModel.java | 2 +- .../sdk/v3/merchant/MerchantPlanRules.java | 19 +- .../sdk/v3/merchant/MerchantPlanType.java | 2 +- .../v3/merchant/MerchantProgramExpress.java | 22 +- .../sdk/v3/merchant/MerchantProperties.java | 68 +- .../com/clover/sdk/v3/merchant/Module.java | 15 +- .../clover/sdk/v3/merchant/TipSuggestion.java | 23 +- .../sdk/v3/onlineorder/OnboardingStatus.java | 57 ++ .../sdk/v3/onlineorder/OnlineOrder.java | 149 ++- .../v3/onlineorder/OnlineOrderCustomer.java | 15 +- .../v3/onlineorder/OnlineOrderMerchant.java | 121 ++- .../OnlineOrderMerchantProvider.java | 444 +++++++++ .../v3/onlineorder/OnlineOrderProvider.java | 554 +++++++++++ .../OnlineOrderProviderService.java | 382 ++++++++ .../v3/onlineorder/OnlineOrderService.java | 575 ++++++++++++ .../clover/sdk/v3/onlineorder/ProviderId.java | 2 +- .../sdk/v3/onlineorder/ServiceOrderType.java | 249 +++++ .../sdk/v3/onlineorder/ServiceType.java | 57 ++ .../clover/sdk/v3/order/ClientEventType.java | 4 +- .../sdk/v3/order/CreateLineItemsRequest.java | 13 +- .../com/clover/sdk/v3/order/Discount.java | 25 +- .../sdk/v3/order/DiscountFdParcelable.java | 2 +- .../v3/order/DiscountListFdParcelable.java | 2 +- .../clover/sdk/v3/order/DisplayDiscount.java | 19 +- .../clover/sdk/v3/order/DisplayLineItem.java | 27 +- .../sdk/v3/order/DisplayModification.java | 17 +- .../com/clover/sdk/v3/order/DisplayOrder.java | 61 +- .../clover/sdk/v3/order/DisplayPayment.java | 15 +- .../com/clover/sdk/v3/order/LineItem.java | 34 +- .../sdk/v3/order/LineItemFdParcelable.java | 2 +- .../v3/order/LineItemListFdParcelable.java | 2 +- .../sdk/v3/order/LineItemMapFdParcelable.java | 2 +- .../com/clover/sdk/v3/order/Modification.java | 19 +- .../v3/order/ModificationFdParcelable.java | 2 +- .../java/com/clover/sdk/v3/order/Order.java | 29 +- .../clover/sdk/v3/order/OrderConnector.java | 11 +- .../sdk/v3/order/OrderFdParcelable.java | 2 +- .../sdk/v3/order/OrderListFdParcelable.java | 2 +- .../com/clover/sdk/v3/order/OrderType.java | 32 +- .../sdk/v3/order/OrderV31Connector.java | 69 +- .../clover/sdk/v3/order/OrderV3Connector.java | 21 +- .../com/clover/sdk/v3/order/PrintGroup.java | 20 +- .../sdk/v3/order/PrintGroupFdParcelable.java | 2 +- .../com/clover/sdk/v3/order/PrintOrder.java | 449 +++++++++ .../com/clover/sdk/v3/order/PrintState.java | 61 ++ .../com/clover/sdk/v3/order/TaxRateCalc.java | 2 +- .../com/clover/sdk/v3/order/VoidReason.java | 4 +- .../clover/sdk/v3/order/VoidedLineItem.java | 51 +- .../clover/sdk/v3/pay/PaymentProcessor.java | 19 +- .../com/clover/sdk/v3/pay/PaymentRequest.java | 23 +- .../sdk/v3/pay/PaymentRequestCardDetails.java | 42 +- .../v3/pay/PaymentRequestFdParcelable.java | 2 +- .../com/clover/sdk/v3/pay/ProcessorKey.java | 15 +- .../clover/sdk/v3/pay/TransactionData.java | 13 +- .../sdk/v3/payments/AdditionalCharge.java | 21 +- .../v3/payments/AdditionalChargeAmount.java | 57 +- .../sdk/v3/payments/AdditionalChargeType.java | 6 +- .../clover/sdk/v3/payments/Authorization.java | 25 +- .../com/clover/sdk/v3/payments/Batch.java | 79 +- .../sdk/v3/payments/BatchCardTotal.java | 17 +- .../clover/sdk/v3/payments/BatchDetail.java | 33 +- .../clover/sdk/v3/payments/BatchRequest.java | 13 +- .../sdk/v3/payments/BatchTotalStats.java | 13 +- .../sdk/v3/payments/BatchTotalType.java | 13 +- .../sdk/v3/payments/BatchTransactions.java | 13 +- .../sdk/v3/payments/CardTransaction.java | 26 +- .../sdk/v3/payments/CardlessPaymentData.java | 13 +- .../CashAdvanceCustomerIdentification.java | 37 +- .../sdk/v3/payments/CashAdvanceExtra.java | 15 +- .../com/clover/sdk/v3/payments/Credit.java | 20 +- .../sdk/v3/payments/CreditFdParcelable.java | 2 +- .../clover/sdk/v3/payments/CreditRefund.java | 19 +- .../v3/payments/CreditRefundFdParcelable.java | 2 +- .../sdk/v3/payments/CreditRefundResponse.java | 13 +- .../clover/sdk/v3/payments/CreditRequest.java | 15 +- .../sdk/v3/payments/CreditResponse.java | 13 +- .../com/clover/sdk/v3/payments/DCCInfo.java | 15 +- .../sdk/v3/payments/DeviceTotalStats.java | 13 +- .../v3/payments/DisplayAndPrintMessage.java | 248 +++++ .../sdk/v3/payments/ECommTransactionInfo.java | 13 +- .../sdk/v3/payments/EndpointTotalStats.java | 57 +- .../clover/sdk/v3/payments/GermanInfo.java | 13 +- .../com/clover/sdk/v3/payments/GiftCard.java | 13 +- .../sdk/v3/payments/GiftCardResponse.java | 13 +- .../sdk/v3/payments/GiftCardTransaction.java | 13 +- .../v3/payments/IncrementalAuthorization.java | 50 +- .../sdk/v3/payments/LineItemPayment.java | 17 +- .../sdk/v3/payments/MessageDestination.java | 57 ++ .../com/clover/sdk/v3/payments/Payment.java | 134 ++- .../sdk/v3/payments/PaymentFdParcelable.java | 2 +- .../v3/payments/PaymentListFdParcelable.java | 2 +- .../sdk/v3/payments/PaymentResponse.java | 13 +- .../sdk/v3/payments/PaymentTaxRate.java | 25 +- .../sdk/v3/payments/PcTaxIndicator.java | 57 ++ .../sdk/v3/payments/PromotionalMessage.java | 13 +- .../v3/payments/PurchaseCardBillingInfo.java | 250 +++++ .../sdk/v3/payments/PurchaseCardL2.java | 659 +++++++++++++ .../payments/PurchaseCardL2DataWrapper.java | 252 +++++ .../com/clover/sdk/v3/payments/Refund.java | 21 +- .../sdk/v3/payments/RefundFdParcelable.java | 2 +- .../clover/sdk/v3/payments/RefundRequest.java | 13 +- .../sdk/v3/payments/RefundResponse.java | 13 +- .../com/clover/sdk/v3/payments/Result.java | 4 +- .../v3/payments/SepaElvTransactionInfo.java | 430 +++++++++ .../sdk/v3/payments/ServerTotalStats.java | 15 +- .../sdk/v3/payments/ServiceChargeAmount.java | 17 +- .../v3/payments/ServiceFeeRefundRequest.java | 13 +- .../sdk/v3/payments/ServiceFeeRequest.java | 17 +- .../sdk/v3/payments/SignatureDisclaimer.java | 13 +- .../sdk/v3/payments/TaxableAmountRate.java | 18 +- .../clover/sdk/v3/payments/TokenRequest.java | 23 +- .../clover/sdk/v3/payments/Transaction.java | 13 +- .../sdk/v3/payments/TransactionInfo.java | 211 +++-- .../sdk/v3/payments/TransactionSettings.java | 86 +- .../com/clover/sdk/v3/payments/VasConfig.java | 13 +- .../clover/sdk/v3/payments/VasDataType.java | 13 +- .../clover/sdk/v3/payments/VasPayload.java | 13 +- .../sdk/v3/payments/VasPayloadElement.java | 13 +- .../sdk/v3/payments/VasPayloadResponse.java | 13 +- .../sdk/v3/payments/VasServiceProvider.java | 13 +- .../clover/sdk/v3/payments/VasSettings.java | 13 +- .../clover/sdk/v3/payments/VaultedCard.java | 27 +- .../com/clover/sdk/v3/printer/Printer.java | 23 +- .../com/clover/sdk/v3/report/BaseSale.java | 13 +- .../sdk/v3/report/DeviceCashSummaryRow.java | 15 +- .../clover/sdk/v3/report/DiscountsReport.java | 13 +- .../clover/sdk/v3/report/ItemSalesBucket.java | 14 +- .../clover/sdk/v3/report/KeyedSummary.java | 13 +- .../clover/sdk/v3/report/LabelSummaryRow.java | 13 +- .../sdk/v3/report/LabelSummarySection.java | 13 +- .../v3/report/LineItemsArrayAndWarning.java | 13 +- .../clover/sdk/v3/report/LineItemsReport.java | 13 +- .../PaymentsAndNonRevenueGroupedOverTime.java | 39 +- .../sdk/v3/report/ReportDiscountGroup.java | 13 +- .../v3/report/ReportDiscountGroupTotal.java | 13 +- .../sdk/v3/report/ReportDiscountRow.java | 15 +- .../com/clover/sdk/v3/report/ReportItem.java | 17 +- .../com/clover/sdk/v3/report/ReportLabel.java | 15 +- .../sdk/v3/report/ReportPaymentsV2Row.java | 13 +- .../v3/report/ReportPaymentsV2Section.java | 13 +- .../clover/sdk/v3/report/SalesSummary.java | 13 +- .../sdk/v3/report/SalesSummarySection.java | 13 +- .../com/clover/sdk/v3/report/Summary.java | 13 +- .../clover/sdk/v3/report/SummaryGroup.java | 14 +- .../sdk/v3/report/SummaryLineItems.java | 13 +- .../sdk/v3/report/SummaryMerchantCharges.java | 13 +- .../clover/sdk/v3/report/SummarySection.java | 13 +- .../clover/sdk/v3/resellers/BrandAsset.java | 16 +- .../sdk/v3/resellers/BroadcastMessage.java | 16 +- .../com/clover/sdk/v3/resellers/Reseller.java | 77 +- .../sdk/v3/serverfeature/ServerFeature.java | 16 +- .../java/com/clover/sdk/v3/tables2/Guest.java | 17 +- .../clover/sdk/v3/tables2/GuestLineItem.java | 15 +- .../com/clover/sdk/v3/tables2/GuestV2.java | 18 +- .../com/clover/sdk/v3/tables2/Section.java | 20 +- .../java/com/clover/sdk/v3/tables2/Table.java | 21 +- .../com/clover/sdk/v3/tables2/TableOrder.java | 15 +- .../main/res/values-nl-rNL-port/strings.xml | 23 + .../src/main/res/values-nl-rNL/strings.xml | 34 + .../common2/payments/PayIntentTest.java | 13 + .../com/clover/sdk/util/PlatformTest.java | 149 --- .../clover/sdk/v1/merchant/MerchantTest.java | 38 + .../printer/job/StaticOrderPrintJobTest.java | 8 + .../java/com/clover/sdk/v3/ValidatorTest.java | 176 ++++ .../clover/sdk/v3/order/TaxRateCalcTest.java | 43 + proguard-test-rules.txt | 3 + scripts/install_apps.py | 78 +- versions.gradle | 3 + 478 files changed, 14510 insertions(+), 6701 deletions(-) create mode 100644 clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/PropertyAction.java create mode 100644 clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionProperty.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashDrawersActivity.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CurrencyUtils.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/DebouncedButton.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadEditText.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadTestActivity.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderUtils.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestActivity.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestProvider.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/SaleRefundTestActivity.java create mode 100644 clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/Utils.java create mode 100644 clover-android-sdk-examples/src/main/res/layout/activity_cash_drawers.xml create mode 100644 clover-android-sdk-examples/src/main/res/layout/activity_keypad_test.xml create mode 100644 clover-android-sdk-examples/src/main/res/layout/activity_salerefund_test.xml create mode 100644 clover-android-sdk-examples/src/main/res/layout/cashdrawer_view.xml create mode 100644 clover-android-sdk-examples/src/main/res/values/completions_email.xml delete mode 100644 clover-android-sdk/lib/calc-297.4.jar create mode 100644 clover-android-sdk/lib/calc-311.2.jar create mode 100644 clover-android-sdk/src/main/aidl/com/clover/common/payments/TerminalManagementComponent.aidl create mode 100644 clover-android-sdk/src/main/aidl/com/clover/common/payments/VoidExtraData.aidl create mode 100644 clover-android-sdk/src/main/java/com/clover/common/payments/TerminalManagementComponent.java create mode 100644 clover-android-sdk/src/main/java/com/clover/common/payments/TerminalManagementComponentType.java create mode 100644 clover-android-sdk/src/main/java/com/clover/common/payments/TerminalManagementStandard.java create mode 100644 clover-android-sdk/src/main/java/com/clover/common/payments/VoidExtraData.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/cashdrawer/CloverServiceCashDrawer.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/internal/util/UnstableContentResolverClient.java delete mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/util/Platform.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/base/IdArray.java rename {clover-android-connector-sdk => clover-android-sdk}/src/main/java/com/clover/sdk/v3/base/Point.java (97%) rename {clover-android-connector-sdk => clover-android-sdk}/src/main/java/com/clover/sdk/v3/base/Points.java (97%) rename {clover-android-connector-sdk => clover-android-sdk}/src/main/java/com/clover/sdk/v3/base/Signature.java (97%) delete mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/billing/AppLineItem.java delete mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/billing/AppLineItemStatus.java delete mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/billing/AppLineItemType.java delete mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/boarding/Equipment.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/OnboardingStatus.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/OnlineOrderMerchantProvider.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/OnlineOrderProvider.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/OnlineOrderProviderService.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/OnlineOrderService.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/ServiceOrderType.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/onlineorder/ServiceType.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/order/PrintOrder.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/order/PrintState.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/DisplayAndPrintMessage.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/MessageDestination.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/PcTaxIndicator.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/PurchaseCardBillingInfo.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/PurchaseCardL2.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/PurchaseCardL2DataWrapper.java create mode 100644 clover-android-sdk/src/main/java/com/clover/sdk/v3/payments/SepaElvTransactionInfo.java create mode 100755 clover-android-sdk/src/main/res/values-nl-rNL-port/strings.xml create mode 100755 clover-android-sdk/src/main/res/values-nl-rNL/strings.xml delete mode 100644 clover-android-sdk/src/test/java/com/clover/sdk/util/PlatformTest.java create mode 100644 clover-android-sdk/src/test/java/com/clover/sdk/v1/merchant/MerchantTest.java create mode 100644 clover-android-sdk/src/test/java/com/clover/sdk/v3/ValidatorTest.java create mode 100644 clover-android-sdk/src/test/java/com/clover/sdk/v3/order/TaxRateCalcTest.java diff --git a/clover-android-connector-sdk/build.gradle b/clover-android-connector-sdk/build.gradle index 937f4090d..b601de2ca 100644 --- a/clover-android-connector-sdk/build.gradle +++ b/clover-android-connector-sdk/build.gradle @@ -14,7 +14,7 @@ * limitations under the License. */ group = 'com.clover.sdk' -version = '248.4' +version = '262.2' apply from: file("${project.rootDir}/lib.gradle") diff --git a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/PropertyAction.java b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/PropertyAction.java new file mode 100644 index 000000000..261e40f42 --- /dev/null +++ b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/PropertyAction.java @@ -0,0 +1,56 @@ +/** + * Autogenerated by Avro + * + * DO NOT EDIT DIRECTLY + */ + + +/* + * Copyright (C) 2019 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.clover.connector.sdk.v3.session; + +import android.os.Parcelable; +import android.os.Parcel; + +/** + * This is an auto-generated Clover data enum. + */ +@SuppressWarnings("all") +public enum PropertyAction implements Parcelable { + INSERT, UPDATE, DELETE; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeString(name()); + } + + public static final Creator CREATOR = new Creator() { + @Override + public PropertyAction createFromParcel(final Parcel source) { + return PropertyAction.valueOf(source.readString()); + } + + @Override + public PropertyAction[] newArray(final int size) { + return new PropertyAction[size]; + } + }; +} diff --git a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionConnector.java b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionConnector.java index f9f795c20..aa5ebef42 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionConnector.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionConnector.java @@ -7,7 +7,6 @@ import com.clover.sdk.v3.payments.Transaction; import android.content.ContentProviderClient; -import android.content.ContentValues; import android.content.Context; import android.database.ContentObserver; import android.database.Cursor; @@ -62,11 +61,6 @@ public class SessionConnector implements Serializable, SessionListener { private ContentProviderClient sessionContentProviderClient; private WeakReference contextWeakReference; - CustomerInfo customerInfo; - DisplayOrder displayOrder; - Map properties = new HashMap<>(); - Transaction transaction; - Set sessionListeners = new LinkedHashSet<>(); private SessionContentObserver sessionContentObserver = null; private ContentObserver propertyContentObserver; @@ -115,10 +109,6 @@ public boolean removeSessionListener(SessionListener listener) { } public boolean clear() { - customerInfo = null; - displayOrder = null; - properties.clear(); - transaction = null; try { if (connect()) { sessionContentProviderClient.call(SessionContract.CALL_METHOD_CLEAR_SESSION, null, null); @@ -131,7 +121,7 @@ public boolean clear() { } public CustomerInfo getCustomerInfo() { - customerInfo = null; + CustomerInfo customerInfo = null; try { if (connect()) { try (Cursor cursor = sessionContentProviderClient.query(SessionContract.SESSION_CUSTOMER_URI, null, null, null, null)) { @@ -163,7 +153,7 @@ public void setCustomerInfo(CustomerInfo customerInfo) { } public DisplayOrder getDisplayOrder() { - displayOrder = null; + DisplayOrder displayOrder = null; try { if (connect()) { try (Cursor cursor = sessionContentProviderClient.query(SessionContract.SESSION_DISPLAY_ORDER_URI, null, null, null, null)) { @@ -195,7 +185,7 @@ public void setDisplayOrder(DisplayOrder displayOrder, boolean isOrderModificati } public Map getProperties() { - properties = new HashMap<>(); + Map properties = new HashMap<>(); try { if (connect()) { try (Cursor cursor = sessionContentProviderClient.query(SessionContract.PROPERTIES_URI, null, null, null, null)) { @@ -252,11 +242,9 @@ public void setProperty(String key, String value) { public String getProperty(String key) { try { if (!connect()) return null; - - ContentValues values = new ContentValues(); - values.put(SessionContract.COLUMN_KEY, key); - Uri propUri = SessionContract.PROPERTIES_KEY_URI.buildUpon().appendPath(key).build(); - try (Cursor cursor = sessionContentProviderClient.query(propUri, null, null, null, null)) { + String selectionClause = SessionContract.COLUMN_KEY + " = ?"; + String[] selectionArgs = {key}; + try (Cursor cursor = sessionContentProviderClient.query(SessionContract.PROPERTIES_URI, null, selectionClause, selectionArgs, null)) { if (null != cursor && cursor.moveToFirst()) { return cursor.getString(1); // 0=Key, 1=Value } @@ -270,15 +258,16 @@ public String getProperty(String key) { public void removeProperty(String key) { try { if (!connect()) return; - - Uri propUri = SessionContract.PROPERTIES_KEY_URI.buildUpon().appendPath(key).build(); - sessionContentProviderClient.delete(propUri, null, null); + String selectionClause = SessionContract.COLUMN_KEY + " = ?"; + String[] selectionArgs = {key}; + sessionContentProviderClient.delete(SessionContract.PROPERTIES_URI, selectionClause, selectionArgs); } catch (Exception e) { Log.e(TAG, e.getMessage(), e); } } public Transaction getTransaction() { + Transaction transaction = null; try { if (connect()) { try (Cursor cursor = sessionContentProviderClient.query(SessionContract.SESSION_TRANSACTION_URI, null, null, null, null)) { @@ -324,6 +313,7 @@ public void sendSessionEvent(String eventType, String data) { @Override public void onSessionDataChanged(String type, Object data) { + Log.d(this.getClass().getSimpleName(), "onSessionDataChanged called with type = " + type); for (SessionListener listener : sessionListeners) { listener.onSessionDataChanged(type, data); } @@ -331,27 +321,12 @@ public void onSessionDataChanged(String type, Object data) { @Override public void onSessionEvent(String type, String data) { + Log.d(this.getClass().getSimpleName(), "onSessionEvent called with type = " + type); for (SessionListener listener : sessionListeners) { listener.onSessionEvent(type, data); } } - public void announceCustomerProvidedData(String type, String data) { - Bundle bundle = new Bundle(); - bundle.putString(BUNDLE_KEY_TYPE, type); - bundle.putString(BUNDLE_KEY_DATA, data); - - try { - sessionContentProviderClient.call(SessionContract.CALL_METHOD_ANNOUNCE_CUSTOMER_PROVIDED_DATA, null, bundle); - } catch (Exception e) { - Log.e(TAG, e.getMessage(), e); - } - } - - public void start(String type) { - - } - private static void registerContentObserver(Context context, SessionContentObserver sessionContentObserver) { if (null == context || null == sessionContentObserver) return; diff --git a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionContract.java b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionContract.java index c720c1925..362a58fc5 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionContract.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionContract.java @@ -28,12 +28,6 @@ public class SessionContract { public static final String COLUMN_TRANSACTION = "TX"; public static final String COLUMN_TRANSACTION_CLASS = "TX_CLASS"; - // Session property key definitions - public static final String PROPERTY_LOYALTY_RECEIPT_PRINTED = "LOYALTY_RECEIPT_PRINTED"; - public static final String PROPERTY_LOYALTY_POINTS_EARNED = "LOYALTY_POINTS_EARNED"; - public static final String PROPERTY_LOYALTY_POINTS_CALCULATED = "LOYALTY_POINTS_CALCULATED"; - public static final String PROPERTY_LOYALTY_UUID = "LOYALTY_UUID"; - public static final String PROPERTY_LOYALTY_ORDER_ID = "LOYALTY_ORDER_ID"; // Session property table/column definition public static final String PROPERTIES_TABLE_NAME = "SESSION_PROPERTY"; public static final String COLUMN_KEY = "KEY"; diff --git a/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionProperty.java b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionProperty.java new file mode 100644 index 000000000..787e53840 --- /dev/null +++ b/clover-android-connector-sdk/src/main/java/com/clover/connector/sdk/v3/session/SessionProperty.java @@ -0,0 +1,267 @@ +package com.clover.connector.sdk.v3.session; + +import com.clover.sdk.GenericClient; +import com.clover.sdk.GenericParcelable; + +/** + * Autogenerated by Avro + * + * DO NOT EDIT DIRECTLY + */ + + +/* + * Copyright (C) 2019 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This is an auto-generated Clover data object. + *

+ *

Fields

+ *
    + *
  • {@link #getPropertyName propertyName}
  • + *
  • {@link #getPropertyValue propertyValue}
  • + *
  • {@link #getPropertyAction propertyAction}
  • + *
  • {@link #getInputOptions inputOptions}
  • + *
+ */ +@SuppressWarnings("all") +public class SessionProperty extends GenericParcelable implements com.clover.sdk.v3.Validator, com.clover.sdk.JSONifiable { + + public java.lang.String getPropertyName() { + return genClient.cacheGet(CacheKey.propertyName); + } + + public java.lang.String getPropertyValue() { + return genClient.cacheGet(CacheKey.propertyValue); + } + + public com.clover.connector.sdk.v3.session.PropertyAction getPropertyAction() { + return genClient.cacheGet(CacheKey.propertyAction); + } + + private enum CacheKey implements com.clover.sdk.ExtractionStrategyEnum { + propertyName + (com.clover.sdk.extractors.BasicExtractionStrategy.instance(java.lang.String.class)), + propertyValue + (com.clover.sdk.extractors.BasicExtractionStrategy.instance(java.lang.String.class)), + propertyAction + (com.clover.sdk.extractors.EnumExtractionStrategy.instance(com.clover.connector.sdk.v3.session.PropertyAction.class)) + ; + + private final com.clover.sdk.extractors.ExtractionStrategy extractionStrategy; + + private CacheKey(com.clover.sdk.extractors.ExtractionStrategy s) { + extractionStrategy = s; + } + + @Override + public com.clover.sdk.extractors.ExtractionStrategy getExtractionStrategy() { + return extractionStrategy; + } + } + + private final GenericClient genClient; + + /** + * Constructs a new empty instance. + */ + public SessionProperty() { + genClient = new GenericClient(this); + } + + @Override + protected GenericClient getGenericClient() { + return genClient; + } + + /** + * Constructs a new empty instance. + */ + protected SessionProperty(boolean noInit) { + genClient = null; + } + + /** + * Constructs a new instance from the given JSON String. + */ + public SessionProperty(String json) throws IllegalArgumentException { + this(); + try { + genClient.setJsonObject(new org.json.JSONObject(json)); + } catch (org.json.JSONException e) { + throw new IllegalArgumentException("invalid json", e); + } + } + + /** + * Construct a new instance backed by the given JSONObject, the parameter is not copied so changes to it will be + * reflected in this instance and vice-versa. + */ + public SessionProperty(org.json.JSONObject jsonObject) { + this(); + genClient.setJsonObject(jsonObject); + } + + /** + * Constructs a new instance that is a deep copy of the source instance. It does not copy the bundle or changelog. + */ + public SessionProperty(SessionProperty src) { + this(); + if (src.genClient.getJsonObject() != null) { + genClient.setJsonObject(com.clover.sdk.v3.JsonHelper.deepCopy(src.genClient.getJSONObject())); + } + } + + /** + * Returns the internal JSONObject backing this instance, the return value is not a copy so changes to it will be + * reflected in this instance and vice-versa. + */ + public org.json.JSONObject getJSONObject() { + return genClient.getJSONObject(); + } + + @Override + public void validate() { + } + + /** Checks whether the 'propertyName' field is set and is not null */ + public boolean isNotNullPropertyName() { + return genClient.cacheValueIsNotNull(CacheKey.propertyName); + } + + /** Checks whether the 'propertyValue' field is set and is not null */ + public boolean isNotNullPropertyValue() { + return genClient.cacheValueIsNotNull(CacheKey.propertyValue); + } + + /** Checks whether the 'propertyAction' field is set and is not null */ + public boolean isNotNullPropertyAction() { + return genClient.cacheValueIsNotNull(CacheKey.propertyAction); + } + + + /** Checks whether the 'propertyName' field has been set, however the value could be null */ + public boolean hasPropertyName() { + return genClient.cacheHasKey(CacheKey.propertyName); + } + + /** Checks whether the 'propertyValue' field has been set, however the value could be null */ + public boolean hasPropertyValue() { + return genClient.cacheHasKey(CacheKey.propertyValue); + } + + /** Checks whether the 'propertyAction' field has been set, however the value could be null */ + public boolean hasPropertyAction() { + return genClient.cacheHasKey(CacheKey.propertyAction); + } + + /** + * Sets the field 'propertyName'. + */ + public SessionProperty setPropertyName(java.lang.String propertyName) { + return genClient.setOther(propertyName, CacheKey.propertyName); + } + + /** + * Sets the field 'propertyValue'. + */ + public SessionProperty setPropertyValue(java.lang.String propertyValue) { + return genClient.setOther(propertyValue, CacheKey.propertyValue); + } + + /** + * Sets the field 'propertyAction'. + */ + public SessionProperty setPropertyAction(com.clover.connector.sdk.v3.session.PropertyAction propertyAction) { + return genClient.setOther(propertyAction, CacheKey.propertyAction); + } + + /** Clears the 'propertyName' field, the 'has' method for this field will now return false */ + public void clearPropertyName() { + genClient.clear(CacheKey.propertyName); + } + /** Clears the 'propertyValue' field, the 'has' method for this field will now return false */ + public void clearPropertyValue() { + genClient.clear(CacheKey.propertyValue); + } + /** Clears the 'propertyAction' field, the 'has' method for this field will now return false */ + public void clearPropertyAction() { + genClient.clear(CacheKey.propertyAction); + } + + /** + * Returns true if this instance has any changes. + */ + public boolean containsChanges() { + return genClient.containsChanges(); + } + + /** + * Reset the log of changes made to this instance, calling copyChanges() after this would return an empty instance. + */ + public void resetChangeLog() { + genClient.resetChangeLog(); + } + + /** + * Create a copy of this instance that contains only fields that were set after the constructor was called. + */ + public SessionProperty copyChanges() { + SessionProperty copy = new SessionProperty(); + copy.mergeChanges(this); + copy.resetChangeLog(); + return copy; + } + + /** + * Copy all the changed fields from the given source to this instance. + */ + public void mergeChanges(SessionProperty src) { + if (src.genClient.getChangeLog() != null) { + genClient.mergeChanges(new SessionProperty(src).getJSONObject(), src.genClient); + } + } + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + @Override + public SessionProperty createFromParcel(android.os.Parcel in) { + SessionProperty instance = new SessionProperty(com.clover.sdk.v3.JsonParcelHelper.ObjectWrapper.CREATOR.createFromParcel(in).unwrap()); + instance.genClient.setBundle(in.readBundle(getClass().getClassLoader())); + instance.genClient.setChangeLog(in.readBundle()); + return instance; + } + + @Override + public SessionProperty[] newArray(int size) { + return new SessionProperty[size]; + } + }; + + public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + @Override + public SessionProperty create(org.json.JSONObject jsonObject) { + return new SessionProperty(jsonObject); + } + }; + + public interface Constraints { + + public static final boolean PROPERTYNAME_IS_REQUIRED = false; + public static final boolean PROPERTYVALUE_IS_REQUIRED = false; + public static final boolean PROPERTYACTION_IS_REQUIRED = false; + } + +} diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/CardData.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/CardData.java index 175e98930..9618de628 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/CardData.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/CardData.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -220,11 +219,7 @@ protected CardData(boolean noInit) { */ public CardData(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -607,6 +602,10 @@ public CardData[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CardData.class; + } + @Override public CardData create(org.json.JSONObject jsonObject) { return new CardData(jsonObject); @@ -614,7 +613,6 @@ public CardData create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TRACK1_IS_REQUIRED = false; public static final boolean TRACK2_IS_REQUIRED = false; public static final boolean TRACK3_IS_REQUIRED = false; @@ -629,7 +627,6 @@ public interface Constraints { public static final boolean EXP_IS_REQUIRED = false; public static final boolean LAST4_IS_REQUIRED = false; public static final boolean FIRST6_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/Challenge.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/Challenge.java index ac3c6dea5..5828f5374 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/Challenge.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/Challenge.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -110,11 +109,7 @@ protected Challenge(boolean noInit) { */ public Challenge(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -266,6 +261,10 @@ public Challenge[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return Challenge.class; + } + @Override public Challenge create(org.json.JSONObject jsonObject) { return new Challenge(jsonObject); @@ -273,11 +272,9 @@ public Challenge create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TYPE_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/ChallengeTypeEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/ChallengeTypeEnum.java index ab1c70aba..bac9c348c 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/ChallengeTypeEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/ChallengeTypeEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected ChallengeTypeEnum(boolean noInit) { */ public ChallengeTypeEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public ChallengeTypeEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ChallengeTypeEnum.class; + } + @Override public ChallengeTypeEnum create(org.json.JSONObject jsonObject) { return new ChallengeTypeEnum(jsonObject); @@ -208,9 +207,7 @@ public ChallengeTypeEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CHALLENGETYPE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/PendingPaymentEntry.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/PendingPaymentEntry.java index 25ad9662e..b2ac97d9b 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/PendingPaymentEntry.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/base/PendingPaymentEntry.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -120,11 +119,7 @@ protected PendingPaymentEntry(boolean noInit) { */ public PendingPaymentEntry(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -157,7 +152,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); } /** Checks whether the 'amount' field is set and is not null */ @@ -299,6 +294,10 @@ public PendingPaymentEntry[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PendingPaymentEntry.class; + } + @Override public PendingPaymentEntry create(org.json.JSONObject jsonObject) { return new PendingPaymentEntry(jsonObject); @@ -306,13 +305,11 @@ public PendingPaymentEntry create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean AMOUNT_IS_REQUIRED = false; public static final boolean PAYMENTID_IS_REQUIRED = false; public static final long PAYMENTID_MAX_LEN = 13; public static final boolean EXTERNALID_IS_REQUIRED = false; public static final boolean TIPAMOUNT_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsAddedOperation.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsAddedOperation.java index e5a1d42dd..56f4dc24f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsAddedOperation.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsAddedOperation.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -94,11 +93,7 @@ protected DiscountsAddedOperation(boolean noInit) { */ public DiscountsAddedOperation(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -234,6 +229,10 @@ public DiscountsAddedOperation[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return DiscountsAddedOperation.class; + } + @Override public DiscountsAddedOperation create(org.json.JSONObject jsonObject) { return new DiscountsAddedOperation(jsonObject); @@ -241,10 +240,8 @@ public DiscountsAddedOperation create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean IDS_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsDeletedOperation.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsDeletedOperation.java index c1f221808..1f64e33bf 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsDeletedOperation.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/DiscountsDeletedOperation.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -94,11 +93,7 @@ protected DiscountsDeletedOperation(boolean noInit) { */ public DiscountsDeletedOperation(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -234,6 +229,10 @@ public DiscountsDeletedOperation[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return DiscountsDeletedOperation.class; + } + @Override public DiscountsDeletedOperation create(org.json.JSONObject jsonObject) { return new DiscountsDeletedOperation(jsonObject); @@ -241,10 +240,8 @@ public DiscountsDeletedOperation create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean IDS_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsAddedOperation.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsAddedOperation.java index 38b96c4dd..3bfaabdb7 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsAddedOperation.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsAddedOperation.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -94,11 +93,7 @@ protected LineItemsAddedOperation(boolean noInit) { */ public LineItemsAddedOperation(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -234,6 +229,10 @@ public LineItemsAddedOperation[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return LineItemsAddedOperation.class; + } + @Override public LineItemsAddedOperation create(org.json.JSONObject jsonObject) { return new LineItemsAddedOperation(jsonObject); @@ -241,10 +240,8 @@ public LineItemsAddedOperation create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean IDS_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsDeletedOperation.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsDeletedOperation.java index 2af997429..4d2f729f7 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsDeletedOperation.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/LineItemsDeletedOperation.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -94,11 +93,7 @@ protected LineItemsDeletedOperation(boolean noInit) { */ public LineItemsDeletedOperation(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -234,6 +229,10 @@ public LineItemsDeletedOperation[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return LineItemsDeletedOperation.class; + } + @Override public LineItemsDeletedOperation create(org.json.JSONObject jsonObject) { return new LineItemsDeletedOperation(jsonObject); @@ -241,10 +240,8 @@ public LineItemsDeletedOperation create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean IDS_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/OrderDeletedOperation.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/OrderDeletedOperation.java index 4d9eebde3..64c7c081e 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/OrderDeletedOperation.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/order/operation/OrderDeletedOperation.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected OrderDeletedOperation(boolean noInit) { */ public OrderDeletedOperation(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public OrderDeletedOperation[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return OrderDeletedOperation.class; + } + @Override public OrderDeletedOperation create(org.json.JSONObject jsonObject) { return new OrderDeletedOperation(jsonObject); @@ -208,9 +207,7 @@ public OrderDeletedOperation create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ActivityMessage.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ActivityMessage.java index 9715102e6..5d5a7985a 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ActivityMessage.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ActivityMessage.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -123,11 +122,7 @@ protected ActivityMessage(boolean noInit) { */ public ActivityMessage(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -159,7 +154,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'action' field is set and is not null */ @@ -309,6 +304,10 @@ public ActivityMessage[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ActivityMessage.class; + } + @Override public ActivityMessage create(org.json.JSONObject jsonObject) { return new ActivityMessage(jsonObject); @@ -316,13 +315,11 @@ public ActivityMessage create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ACTION_IS_REQUIRED = false; public static final boolean PAYLOAD_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthRequest.java index ea9fc32ae..463f94967 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -364,11 +363,7 @@ protected AuthRequest(boolean noInit) { */ public AuthRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -401,12 +396,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'tipMode' field is set and is not null */ @@ -1173,6 +1168,10 @@ public AuthRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return AuthRequest.class; + } + @Override public AuthRequest create(org.json.JSONObject jsonObject) { return new AuthRequest(jsonObject); @@ -1180,7 +1179,6 @@ public AuthRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TIPMODE_IS_REQUIRED = false; public static final boolean SIGNATURETHRESHOLD_IS_REQUIRED = false; public static final boolean SIGNATUREENTRYLOCATION_IS_REQUIRED = false; @@ -1211,7 +1209,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthResponse.java index 122ff786d..3cdc5de0a 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/AuthResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -161,11 +160,7 @@ protected AuthResponse(boolean noInit) { */ public AuthResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -483,6 +478,10 @@ public AuthResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return AuthResponse.class; + } + @Override public AuthResponse create(org.json.JSONObject jsonObject) { return new AuthResponse(jsonObject); @@ -490,7 +489,6 @@ public AuthResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean ISSALE_IS_REQUIRED = false; public static final boolean ISPREAUTH_IS_REQUIRED = false; @@ -500,7 +498,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseRequest.java index fe4ace047..e964b1415 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -102,11 +101,7 @@ protected BaseRequest(boolean noInit) { */ public BaseRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -138,7 +133,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'requestId' field is set and is not null */ @@ -238,6 +233,10 @@ public BaseRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return BaseRequest.class; + } + @Override public BaseRequest create(org.json.JSONObject jsonObject) { return new BaseRequest(jsonObject); @@ -245,11 +244,9 @@ public BaseRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseResponse.java index fd3736f03..e9685ddad 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -122,11 +121,7 @@ protected BaseResponse(boolean noInit) { */ public BaseResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -299,6 +294,10 @@ public BaseResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return BaseResponse.class; + } + @Override public BaseResponse create(org.json.JSONObject jsonObject) { return new BaseResponse(jsonObject); @@ -306,12 +305,10 @@ public BaseResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseTransactionRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseTransactionRequest.java index 5ada60430..0f7774192 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseTransactionRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/BaseTransactionRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -251,11 +250,7 @@ protected BaseTransactionRequest(boolean noInit) { */ public BaseTransactionRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -288,12 +283,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -724,6 +719,10 @@ public BaseTransactionRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return BaseTransactionRequest.class; + } + @Override public BaseTransactionRequest create(org.json.JSONObject jsonObject) { return new BaseTransactionRequest(jsonObject); @@ -731,7 +730,6 @@ public BaseTransactionRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean DISABLEPRINTING_IS_REQUIRED = false; @@ -751,7 +749,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthRequest.java index 6134a1d99..01ab56e2a 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -133,11 +132,7 @@ protected CapturePreAuthRequest(boolean noInit) { */ public CapturePreAuthRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -170,8 +165,8 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getPaymentId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'amount' field is set and is not null */ @@ -342,6 +337,10 @@ public CapturePreAuthRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CapturePreAuthRequest.class; + } + @Override public CapturePreAuthRequest create(org.json.JSONObject jsonObject) { return new CapturePreAuthRequest(jsonObject); @@ -349,7 +348,6 @@ public CapturePreAuthRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean AMOUNT_IS_REQUIRED = false; public static final boolean TIPAMOUNT_IS_REQUIRED = false; public static final boolean PAYMENTID_IS_REQUIRED = false; @@ -357,7 +355,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthResponse.java index 57830f2c1..b2a36cb91 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CapturePreAuthResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -153,11 +152,7 @@ protected CapturePreAuthResponse(boolean noInit) { */ public CapturePreAuthResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -190,7 +185,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); } /** Checks whether the 'paymentId' field is set and is not null */ @@ -411,6 +406,10 @@ public CapturePreAuthResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CapturePreAuthResponse.class; + } + @Override public CapturePreAuthResponse create(org.json.JSONObject jsonObject) { return new CapturePreAuthResponse(jsonObject); @@ -418,7 +417,6 @@ public CapturePreAuthResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENTID_IS_REQUIRED = false; public static final long PAYMENTID_MAX_LEN = 13; public static final boolean AMOUNT_IS_REQUIRED = false; @@ -427,7 +425,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoRequest.java index adc9a2503..028d875dc 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -111,11 +110,7 @@ protected CardInfoRequest(boolean noInit) { */ public CardInfoRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -147,7 +142,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'cardEntryMethods' field is set and is not null */ @@ -276,6 +271,10 @@ public CardInfoRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CardInfoRequest.class; + } + @Override public CardInfoRequest create(org.json.JSONObject jsonObject) { return new CardInfoRequest(jsonObject); @@ -283,12 +282,10 @@ public CardInfoRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CARDENTRYMETHODS_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoResponse.java index c64adf8e2..6d3e576a3 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CardInfoResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected CardInfoResponse(boolean noInit) { */ public CardInfoResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -347,6 +342,10 @@ public CardInfoResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CardInfoResponse.class; + } + @Override public CardInfoResponse create(org.json.JSONObject jsonObject) { return new CardInfoResponse(jsonObject); @@ -354,13 +353,11 @@ public CardInfoResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CARD_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutRequest.java index 09e39adaf..67af0c890 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -123,11 +122,7 @@ protected CloseoutRequest(boolean noInit) { */ public CloseoutRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -160,8 +155,8 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getBatchId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.batchId, getBatchId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'allowOpenTabs' field is set and is not null */ @@ -311,6 +306,10 @@ public CloseoutRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CloseoutRequest.class; + } + @Override public CloseoutRequest create(org.json.JSONObject jsonObject) { return new CloseoutRequest(jsonObject); @@ -318,14 +317,12 @@ public CloseoutRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ALLOWOPENTABS_IS_REQUIRED = false; public static final boolean BATCHID_IS_REQUIRED = false; public static final long BATCHID_MAX_LEN = 13; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutResponse.java index d46e65be2..df996e0b8 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloseoutResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -133,11 +132,7 @@ protected CloseoutResponse(boolean noInit) { */ public CloseoutResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -349,6 +344,10 @@ public CloseoutResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CloseoutResponse.class; + } + @Override public CloseoutResponse create(org.json.JSONObject jsonObject) { return new CloseoutResponse(jsonObject); @@ -356,13 +355,11 @@ public CloseoutResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean BATCH_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceErrorEvent.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceErrorEvent.java index eed3cd94e..ebd4609c1 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceErrorEvent.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceErrorEvent.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -111,11 +110,7 @@ protected CloverDeviceErrorEvent(boolean noInit) { */ public CloverDeviceErrorEvent(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -290,6 +285,10 @@ public CloverDeviceErrorEvent[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CloverDeviceErrorEvent.class; + } + @Override public CloverDeviceErrorEvent create(org.json.JSONObject jsonObject) { return new CloverDeviceErrorEvent(jsonObject); @@ -297,12 +296,10 @@ public CloverDeviceErrorEvent create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean MESSAGE_IS_REQUIRED = false; public static final boolean CODE_IS_REQUIRED = false; public static final boolean CAUSE_IS_REQUIRED = false; public static final boolean TYPE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceEvent.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceEvent.java index 5fb99a747..0438db6f8 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceEvent.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CloverDeviceEvent.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -117,11 +116,7 @@ protected CloverDeviceEvent(boolean noInit) { */ public CloverDeviceEvent(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -299,6 +294,10 @@ public CloverDeviceEvent[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CloverDeviceEvent.class; + } + @Override public CloverDeviceEvent create(org.json.JSONObject jsonObject) { return new CloverDeviceEvent(jsonObject); @@ -306,12 +305,10 @@ public CloverDeviceEvent create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean MESSAGE_IS_REQUIRED = false; public static final boolean CODE_IS_REQUIRED = false; public static final boolean EVENTSTATE_IS_REQUIRED = false; public static final boolean INPUTOPTIONS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ConfirmPaymentRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ConfirmPaymentRequest.java index aa8705487..be1a87b99 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ConfirmPaymentRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ConfirmPaymentRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -121,11 +120,7 @@ protected ConfirmPaymentRequest(boolean noInit) { */ public ConfirmPaymentRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -157,7 +152,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'payment' field is set and is not null */ @@ -314,6 +309,10 @@ public ConfirmPaymentRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ConfirmPaymentRequest.class; + } + @Override public ConfirmPaymentRequest create(org.json.JSONObject jsonObject) { return new ConfirmPaymentRequest(jsonObject); @@ -321,13 +320,11 @@ public ConfirmPaymentRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean CHALLENGES_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityRequest.java index b4846c170..a8ef5e10f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -133,11 +132,7 @@ protected CustomActivityRequest(boolean noInit) { */ public CustomActivityRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -169,7 +164,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'action' field is set and is not null */ @@ -340,6 +335,10 @@ public CustomActivityRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CustomActivityRequest.class; + } + @Override public CustomActivityRequest create(org.json.JSONObject jsonObject) { return new CustomActivityRequest(jsonObject); @@ -347,14 +346,12 @@ public CustomActivityRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ACTION_IS_REQUIRED = false; public static final boolean PAYLOAD_IS_REQUIRED = false; public static final boolean NONBLOCKING_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityResponse.java index 82ce84301..4a95e71c7 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomActivityResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -141,11 +140,7 @@ protected CustomActivityResponse(boolean noInit) { */ public CustomActivityResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -376,6 +371,10 @@ public CustomActivityResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CustomActivityResponse.class; + } + @Override public CustomActivityResponse create(org.json.JSONObject jsonObject) { return new CustomActivityResponse(jsonObject); @@ -383,14 +382,12 @@ public CustomActivityResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYLOAD_IS_REQUIRED = false; public static final boolean ACTION_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomerInfo.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomerInfo.java index 1ac78c6bd..d333e5750 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomerInfo.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/CustomerInfo.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -132,11 +131,7 @@ protected CustomerInfo(boolean noInit) { */ public CustomerInfo(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -335,6 +330,10 @@ public CustomerInfo[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return CustomerInfo.class; + } + @Override public CustomerInfo create(org.json.JSONObject jsonObject) { return new CustomerInfo(jsonObject); @@ -342,13 +341,11 @@ public CustomerInfo create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CUSTOMER_IS_REQUIRED = false; public static final boolean DISPLAYSTRING_IS_REQUIRED = false; public static final boolean EXTERNALID_IS_REQUIRED = false; public static final boolean EXTERNALSYSTEMNAME_IS_REQUIRED = false; public static final boolean EXTRAS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceEventEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceEventEnum.java index bc4a3d031..f0b94eec9 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceEventEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceEventEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -94,11 +93,7 @@ protected DeviceEventEnum(boolean noInit) { */ public DeviceEventEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -229,6 +224,10 @@ public DeviceEventEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return DeviceEventEnum.class; + } + @Override public DeviceEventEnum create(org.json.JSONObject jsonObject) { return new DeviceEventEnum(jsonObject); @@ -236,10 +235,8 @@ public DeviceEventEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean DEVICEERROREVENTCODE_IS_REQUIRED = false; public static final boolean DEVICEEVENTSTATE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceInfo.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceInfo.java index 8308b9a71..bcc73c542 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceInfo.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DeviceInfo.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -114,11 +113,7 @@ protected DeviceInfo(boolean noInit) { */ public DeviceInfo(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -150,11 +145,11 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getName(), 127); + genClient.validateLength(CacheKey.name, getName(), 127); - genClient.validateLength(getModel(), 64); + genClient.validateLength(CacheKey.model, getModel(), 64); - genClient.validateLength(getSerial(), 32); + genClient.validateLength(CacheKey.serial, getSerial(), 32); } /** Checks whether the 'name' field is set and is not null */ @@ -296,6 +291,10 @@ public DeviceInfo[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return DeviceInfo.class; + } + @Override public DeviceInfo create(org.json.JSONObject jsonObject) { return new DeviceInfo(jsonObject); @@ -303,7 +302,6 @@ public DeviceInfo create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean NAME_IS_REQUIRED = false; public static final long NAME_MAX_LEN = 127; public static final boolean MODEL_IS_REQUIRED = false; @@ -311,7 +309,6 @@ public interface Constraints { public static final boolean SERIAL_IS_REQUIRED = false; public static final long SERIAL_MAX_LEN = 32; public static final boolean SUPPORTSACKS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DisplayReceiptOptionsRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DisplayReceiptOptionsRequest.java index 84cd75b09..dab7078e3 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DisplayReceiptOptionsRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/DisplayReceiptOptionsRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -42,28 +41,28 @@ public class DisplayReceiptOptionsRequest extends GenericParcelable implements com.clover.sdk.v3.Validator, com.clover.sdk.JSONifiable { /** - * Unique identifier + * Unique identifier of a Clover order */ public java.lang.String getOrderId() { return genClient.cacheGet(CacheKey.orderId); } /** - * Unique identifier + * Unique identifier of the payment associated with an order */ public java.lang.String getPaymentId() { return genClient.cacheGet(CacheKey.paymentId); } /** - * Unique identifier + * Unique identifier of the refund associated with an order */ public java.lang.String getRefundId() { return genClient.cacheGet(CacheKey.refundId); } /** - * Unique identifier + * Unique identifier of a credit (manual refund) given to a customer */ public java.lang.String getCreditId() { return genClient.cacheGet(CacheKey.creditId); @@ -127,11 +126,7 @@ protected DisplayReceiptOptionsRequest(boolean noInit) { */ public DisplayReceiptOptionsRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -163,13 +158,13 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); - genClient.validateLength(getRefundId(), 13); + genClient.validateCloverId(CacheKey.refundId, getRefundId()); - genClient.validateLength(getCreditId(), 13); + genClient.validateCloverId(CacheKey.creditId, getCreditId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -332,6 +327,10 @@ public DisplayReceiptOptionsRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return DisplayReceiptOptionsRequest.class; + } + @Override public DisplayReceiptOptionsRequest create(org.json.JSONObject jsonObject) { return new DisplayReceiptOptionsRequest(jsonObject); @@ -339,7 +338,6 @@ public DisplayReceiptOptionsRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean PAYMENTID_IS_REQUIRED = false; @@ -349,7 +347,6 @@ public interface Constraints { public static final boolean CREDITID_IS_REQUIRED = false; public static final long CREDITID_MAX_LEN = 13; public static final boolean DISABLEPRINTING_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateData.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateData.java index 46a0acd5b..377d17b2e 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateData.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateData.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -100,11 +99,7 @@ protected ExternalDeviceStateData(boolean noInit) { */ public ExternalDeviceStateData(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -235,6 +230,10 @@ public ExternalDeviceStateData[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ExternalDeviceStateData.class; + } + @Override public ExternalDeviceStateData create(org.json.JSONObject jsonObject) { return new ExternalDeviceStateData(jsonObject); @@ -242,10 +241,8 @@ public ExternalDeviceStateData create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean EXTERNALPAYMENTID_IS_REQUIRED = false; public static final boolean CUSTOMACTIVITYID_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateEnum.java index a56dd8e8a..a1dd1921b 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ExternalDeviceStateEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected ExternalDeviceStateEnum(boolean noInit) { */ public ExternalDeviceStateEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public ExternalDeviceStateEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ExternalDeviceStateEnum.class; + } + @Override public ExternalDeviceStateEnum create(org.json.JSONObject jsonObject) { return new ExternalDeviceStateEnum(jsonObject); @@ -208,9 +207,7 @@ public ExternalDeviceStateEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/Img.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/Img.java index bb0b3d925..ce17f38b7 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/Img.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/Img.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -110,11 +109,7 @@ protected Img(boolean noInit) { */ public Img(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -266,6 +261,10 @@ public Img[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return Img.class; + } + @Override public Img create(org.json.JSONObject jsonObject) { return new Img(jsonObject); @@ -273,11 +272,9 @@ public Img create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean SRC_IS_REQUIRED = false; public static final boolean WIDTH_IS_REQUIRED = false; public static final boolean HEIGHT_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/InputOption.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/InputOption.java index 444a750f1..5cc2aaa0c 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/InputOption.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/InputOption.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -100,11 +99,7 @@ protected InputOption(boolean noInit) { */ public InputOption(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -235,6 +230,10 @@ public InputOption[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return InputOption.class; + } + @Override public InputOption create(org.json.JSONObject jsonObject) { return new InputOption(jsonObject); @@ -242,10 +241,8 @@ public InputOption create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean KEYPRESS_IS_REQUIRED = false; public static final boolean DESCRIPTION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/KeyPressEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/KeyPressEnum.java index 9b4db9aff..7e8683766 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/KeyPressEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/KeyPressEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected KeyPressEnum(boolean noInit) { */ public KeyPressEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public KeyPressEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return KeyPressEnum.class; + } + @Override public KeyPressEnum create(org.json.JSONObject jsonObject) { return new KeyPressEnum(jsonObject); @@ -208,9 +207,7 @@ public KeyPressEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATUS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundRequest.java index 6c879a79a..36494c4a0 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -252,11 +251,7 @@ protected ManualRefundRequest(boolean noInit) { */ public ManualRefundRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -289,12 +284,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -785,6 +780,10 @@ public ManualRefundRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ManualRefundRequest.class; + } + @Override public ManualRefundRequest create(org.json.JSONObject jsonObject) { return new ManualRefundRequest(jsonObject); @@ -792,7 +791,6 @@ public ManualRefundRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean DISABLEPRINTING_IS_REQUIRED = false; @@ -812,7 +810,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundResponse.java index 54175fe3a..e71bc0c3f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ManualRefundResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected ManualRefundResponse(boolean noInit) { */ public ManualRefundResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -347,6 +342,10 @@ public ManualRefundResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ManualRefundResponse.class; + } + @Override public ManualRefundResponse create(org.json.JSONObject jsonObject) { return new ManualRefundResponse(jsonObject); @@ -354,13 +353,11 @@ public ManualRefundResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CREDIT_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MerchantInfo.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MerchantInfo.java index 41f4c8dc8..f82f553d1 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MerchantInfo.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MerchantInfo.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -156,11 +155,7 @@ protected MerchantInfo(boolean noInit) { */ public MerchantInfo(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -192,9 +187,9 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getMerchantID(), 13); + genClient.validateCloverId(CacheKey.merchantID, getMerchantID()); - genClient.validateLength(getMerchantName(), 127); + genClient.validateLength(CacheKey.merchantName, getMerchantName(), 127); } /** Checks whether the 'merchantID' field is set and is not null */ @@ -464,6 +459,10 @@ public MerchantInfo[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return MerchantInfo.class; + } + @Override public MerchantInfo create(org.json.JSONObject jsonObject) { return new MerchantInfo(jsonObject); @@ -471,7 +470,6 @@ public MerchantInfo create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean MERCHANTID_IS_REQUIRED = false; public static final long MERCHANTID_MAX_LEN = 13; public static final boolean MERCHANTMID_IS_REQUIRED = false; @@ -484,7 +482,6 @@ public interface Constraints { public static final boolean SUPPORTSMANUALREFUNDS_IS_REQUIRED = false; public static final boolean SUPPORTSTIPADJUST_IS_REQUIRED = false; public static final boolean DEVICEINFO_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageFromActivity.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageFromActivity.java index 4c5999c2d..7d804c545 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageFromActivity.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageFromActivity.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -123,11 +122,7 @@ protected MessageFromActivity(boolean noInit) { */ public MessageFromActivity(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -159,7 +154,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'action' field is set and is not null */ @@ -317,6 +312,10 @@ public MessageFromActivity[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return MessageFromActivity.class; + } + @Override public MessageFromActivity create(org.json.JSONObject jsonObject) { return new MessageFromActivity(jsonObject); @@ -324,13 +323,11 @@ public MessageFromActivity create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ACTION_IS_REQUIRED = false; public static final boolean PAYLOAD_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageToActivity.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageToActivity.java index 3c173094d..408492edb 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageToActivity.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/MessageToActivity.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -123,11 +122,7 @@ protected MessageToActivity(boolean noInit) { */ public MessageToActivity(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -159,7 +154,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'action' field is set and is not null */ @@ -317,6 +312,10 @@ public MessageToActivity[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return MessageToActivity.class; + } + @Override public MessageToActivity create(org.json.JSONObject jsonObject) { return new MessageToActivity(jsonObject); @@ -324,13 +323,11 @@ public MessageToActivity create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ACTION_IS_REQUIRED = false; public static final boolean PAYLOAD_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/OpenCashDrawerRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/OpenCashDrawerRequest.java index 28df4c86f..f361f490e 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/OpenCashDrawerRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/OpenCashDrawerRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -123,11 +122,7 @@ protected OpenCashDrawerRequest(boolean noInit) { */ public OpenCashDrawerRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -159,7 +154,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'reason' field is set and is not null */ @@ -309,6 +304,10 @@ public OpenCashDrawerRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return OpenCashDrawerRequest.class; + } + @Override public OpenCashDrawerRequest create(org.json.JSONObject jsonObject) { return new OpenCashDrawerRequest(jsonObject); @@ -316,13 +315,11 @@ public OpenCashDrawerRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REASON_IS_REQUIRED = false; public static final boolean DEVICEID_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PaymentResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PaymentResponse.java index a1d859980..2057ed42c 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PaymentResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PaymentResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -159,11 +158,7 @@ protected PaymentResponse(boolean noInit) { */ public PaymentResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -461,6 +456,10 @@ public PaymentResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PaymentResponse.class; + } + @Override public PaymentResponse create(org.json.JSONObject jsonObject) { return new PaymentResponse(jsonObject); @@ -468,7 +467,6 @@ public PaymentResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean ISSALE_IS_REQUIRED = false; public static final boolean ISPREAUTH_IS_REQUIRED = false; @@ -478,7 +476,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PlatformError.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PlatformError.java index cfd72f103..1ca8c9d97 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PlatformError.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PlatformError.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -90,11 +89,7 @@ protected PlatformError(boolean noInit) { */ public PlatformError(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -204,6 +199,10 @@ public PlatformError[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PlatformError.class; + } + @Override public PlatformError create(org.json.JSONObject jsonObject) { return new PlatformError(jsonObject); @@ -211,9 +210,7 @@ public PlatformError create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthRequest.java index 3718f53d4..e3cd05c52 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -252,11 +251,7 @@ protected PreAuthRequest(boolean noInit) { */ public PreAuthRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -289,12 +284,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -785,6 +780,10 @@ public PreAuthRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PreAuthRequest.class; + } + @Override public PreAuthRequest create(org.json.JSONObject jsonObject) { return new PreAuthRequest(jsonObject); @@ -792,7 +791,6 @@ public PreAuthRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean DISABLEPRINTING_IS_REQUIRED = false; @@ -812,7 +810,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthResponse.java index 34c90612a..c6fcec3ad 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PreAuthResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -159,11 +158,7 @@ protected PreAuthResponse(boolean noInit) { */ public PreAuthResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -481,6 +476,10 @@ public PreAuthResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PreAuthResponse.class; + } + @Override public PreAuthResponse create(org.json.JSONObject jsonObject) { return new PreAuthResponse(jsonObject); @@ -488,7 +487,6 @@ public PreAuthResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean ISSALE_IS_REQUIRED = false; public static final boolean ISPREAUTH_IS_REQUIRED = false; @@ -498,7 +496,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusRequest.java index 5b39744d5..9b38eb7b4 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -113,11 +112,7 @@ protected PrintJobStatusRequest(boolean noInit) { */ public PrintJobStatusRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -149,7 +144,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'printRequestId' field is set and is not null */ @@ -278,6 +273,10 @@ public PrintJobStatusRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PrintJobStatusRequest.class; + } + @Override public PrintJobStatusRequest create(org.json.JSONObject jsonObject) { return new PrintJobStatusRequest(jsonObject); @@ -285,12 +284,10 @@ public PrintJobStatusRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PRINTREQUESTID_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusResponse.java index 33fe91731..552510246 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintJobStatusResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -143,11 +142,7 @@ protected PrintJobStatusResponse(boolean noInit) { */ public PrintJobStatusResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -378,6 +373,10 @@ public PrintJobStatusResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PrintJobStatusResponse.class; + } + @Override public PrintJobStatusResponse create(org.json.JSONObject jsonObject) { return new PrintJobStatusResponse(jsonObject); @@ -385,14 +384,12 @@ public PrintJobStatusResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATUS_IS_REQUIRED = false; public static final boolean PRINTREQUESTID_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRefundPaymentReceiptResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRefundPaymentReceiptResponse.java index 34a9f2d6b..306c3a1c5 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRefundPaymentReceiptResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRefundPaymentReceiptResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -142,11 +141,7 @@ protected PrintRefundPaymentReceiptResponse(boolean noInit) { */ public PrintRefundPaymentReceiptResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -404,6 +399,10 @@ public PrintRefundPaymentReceiptResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PrintRefundPaymentReceiptResponse.class; + } + @Override public PrintRefundPaymentReceiptResponse create(org.json.JSONObject jsonObject) { return new PrintRefundPaymentReceiptResponse(jsonObject); @@ -411,7 +410,6 @@ public PrintRefundPaymentReceiptResponse create(org.json.JSONObject jsonObject) }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean REFUND_IS_REQUIRED = false; public static final boolean ORDER_IS_REQUIRED = false; @@ -419,7 +417,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRequest.java index 64c5dbabc..c862ba3b1 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/PrintRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -153,11 +152,7 @@ protected PrintRequest(boolean noInit) { */ public PrintRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -189,7 +184,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'image' field is set and is not null */ @@ -417,6 +412,10 @@ public PrintRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return PrintRequest.class; + } + @Override public PrintRequest create(org.json.JSONObject jsonObject) { return new PrintRequest(jsonObject); @@ -424,16 +423,13 @@ public PrintRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean IMAGE_IS_REQUIRED = false; public static final boolean TEXT_IS_REQUIRED = false; - public static final boolean IMAGEURL_IS_REQUIRED = false; public static final boolean PRINTREQUESTID_IS_REQUIRED = false; public static final boolean PRINTDEVICEID_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/QueryStatusEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/QueryStatusEnum.java index e5bfc73b1..504ba1675 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/QueryStatusEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/QueryStatusEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected QueryStatusEnum(boolean noInit) { */ public QueryStatusEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public QueryStatusEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return QueryStatusEnum.class; + } + @Override public QueryStatusEnum create(org.json.JSONObject jsonObject) { return new QueryStatusEnum(jsonObject); @@ -208,9 +207,7 @@ public QueryStatusEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean QUERYSTATUS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataRequest.java index 721654e15..16392d437 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -121,11 +120,7 @@ protected ReadCardDataRequest(boolean noInit) { */ public ReadCardDataRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -157,7 +152,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'isForceSwipePinEntry' field is set and is not null */ @@ -307,6 +302,10 @@ public ReadCardDataRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ReadCardDataRequest.class; + } + @Override public ReadCardDataRequest create(org.json.JSONObject jsonObject) { return new ReadCardDataRequest(jsonObject); @@ -314,13 +313,11 @@ public ReadCardDataRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ISFORCESWIPEPINENTRY_IS_REQUIRED = false; public static final boolean CARDENTRYMETHODS_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataResponse.java index 2b15ffb2c..6d475ded6 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ReadCardDataResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected ReadCardDataResponse(boolean noInit) { */ public ReadCardDataResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -347,6 +342,10 @@ public ReadCardDataResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ReadCardDataResponse.class; + } + @Override public ReadCardDataResponse create(org.json.JSONObject jsonObject) { return new ReadCardDataResponse(jsonObject); @@ -354,13 +353,11 @@ public ReadCardDataResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CARDDATA_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentRequest.java index 991736754..506b17b94 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -171,11 +170,7 @@ protected RefundPaymentRequest(boolean noInit) { */ public RefundPaymentRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -208,10 +203,10 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'fullRefund' field is set and is not null */ @@ -469,6 +464,10 @@ public RefundPaymentRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RefundPaymentRequest.class; + } + @Override public RefundPaymentRequest create(org.json.JSONObject jsonObject) { return new RefundPaymentRequest(jsonObject); @@ -476,7 +475,6 @@ public RefundPaymentRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean FULLREFUND_IS_REQUIRED = false; public static final boolean AMOUNT_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; @@ -489,7 +487,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentResponse.java index 7e5093e22..fbe031e47 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RefundPaymentResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -151,11 +150,7 @@ protected RefundPaymentResponse(boolean noInit) { */ public RefundPaymentResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -188,9 +183,9 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -413,6 +408,10 @@ public RefundPaymentResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RefundPaymentResponse.class; + } + @Override public RefundPaymentResponse create(org.json.JSONObject jsonObject) { return new RefundPaymentResponse(jsonObject); @@ -420,7 +419,6 @@ public RefundPaymentResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean PAYMENTID_IS_REQUIRED = false; @@ -430,7 +428,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResetDeviceResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResetDeviceResponse.java index cc995df27..603d82b93 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResetDeviceResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResetDeviceResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected ResetDeviceResponse(boolean noInit) { */ public ResetDeviceResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -345,6 +340,10 @@ public ResetDeviceResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ResetDeviceResponse.class; + } + @Override public ResetDeviceResponse create(org.json.JSONObject jsonObject) { return new ResetDeviceResponse(jsonObject); @@ -352,13 +351,11 @@ public ResetDeviceResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATE_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResponseCodeEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResponseCodeEnum.java index bfa5e41da..6dc9ffb9d 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResponseCodeEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResponseCodeEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected ResponseCodeEnum(boolean noInit) { */ public ResponseCodeEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public ResponseCodeEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ResponseCodeEnum.class; + } + @Override public ResponseCodeEnum create(org.json.JSONObject jsonObject) { return new ResponseCodeEnum(jsonObject); @@ -208,9 +207,7 @@ public ResponseCodeEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATUS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResultStatusEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResultStatusEnum.java index 8d0f5d196..83d90ae2b 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResultStatusEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/ResultStatusEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected ResultStatusEnum(boolean noInit) { */ public ResultStatusEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public ResultStatusEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return ResultStatusEnum.class; + } + @Override public ResultStatusEnum create(org.json.JSONObject jsonObject) { return new ResultStatusEnum(jsonObject); @@ -208,9 +207,7 @@ public ResultStatusEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATUS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusRequest.java index 862f0d0ac..5ae11150e 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -111,11 +110,7 @@ protected RetrieveDeviceStatusRequest(boolean noInit) { */ public RetrieveDeviceStatusRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -147,7 +142,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'sendLastMessage' field is set and is not null */ @@ -276,6 +271,10 @@ public RetrieveDeviceStatusRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrieveDeviceStatusRequest.class; + } + @Override public RetrieveDeviceStatusRequest create(org.json.JSONObject jsonObject) { return new RetrieveDeviceStatusRequest(jsonObject); @@ -283,12 +282,10 @@ public RetrieveDeviceStatusRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean SENDLASTMESSAGE_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusResponse.java index ee00d0e76..9e7e582cf 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrieveDeviceStatusResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -141,11 +140,7 @@ protected RetrieveDeviceStatusResponse(boolean noInit) { */ public RetrieveDeviceStatusResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -378,6 +373,10 @@ public RetrieveDeviceStatusResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrieveDeviceStatusResponse.class; + } + @Override public RetrieveDeviceStatusResponse create(org.json.JSONObject jsonObject) { return new RetrieveDeviceStatusResponse(jsonObject); @@ -385,14 +384,12 @@ public RetrieveDeviceStatusResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATE_IS_REQUIRED = false; public static final boolean DATA_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentRequest.java index 789896643..74eb67ce2 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -113,11 +112,7 @@ protected RetrievePaymentRequest(boolean noInit) { */ public RetrievePaymentRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -149,7 +144,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'externalPaymentId' field is set and is not null */ @@ -278,6 +273,10 @@ public RetrievePaymentRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrievePaymentRequest.class; + } + @Override public RetrievePaymentRequest create(org.json.JSONObject jsonObject) { return new RetrievePaymentRequest(jsonObject); @@ -285,12 +284,10 @@ public RetrievePaymentRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean EXTERNALPAYMENTID_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentResponse.java index 5a9073c47..1c46e003d 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePaymentResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -151,11 +150,7 @@ protected RetrievePaymentResponse(boolean noInit) { */ public RetrievePaymentResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -409,6 +404,10 @@ public RetrievePaymentResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrievePaymentResponse.class; + } + @Override public RetrievePaymentResponse create(org.json.JSONObject jsonObject) { return new RetrievePaymentResponse(jsonObject); @@ -416,7 +415,6 @@ public RetrievePaymentResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean EXTERNALPAYMENTID_IS_REQUIRED = false; public static final boolean QUERYSTATUS_IS_REQUIRED = false; public static final boolean PAYMENT_IS_REQUIRED = false; @@ -424,7 +422,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePendingPaymentsResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePendingPaymentsResponse.java index 6bd09aec2..e350ee5c3 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePendingPaymentsResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePendingPaymentsResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected RetrievePendingPaymentsResponse(boolean noInit) { */ public RetrievePendingPaymentsResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -350,6 +345,10 @@ public RetrievePendingPaymentsResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrievePendingPaymentsResponse.class; + } + @Override public RetrievePendingPaymentsResponse create(org.json.JSONObject jsonObject) { return new RetrievePendingPaymentsResponse(jsonObject); @@ -357,13 +356,11 @@ public RetrievePendingPaymentsResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PENDINGPAYMENTENTRIES_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersRequest.java index 9c7ce568d..f218df9ac 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -113,11 +112,7 @@ protected RetrievePrintersRequest(boolean noInit) { */ public RetrievePrintersRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -149,7 +144,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'category' field is set and is not null */ @@ -278,6 +273,10 @@ public RetrievePrintersRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrievePrintersRequest.class; + } + @Override public RetrievePrintersRequest create(org.json.JSONObject jsonObject) { return new RetrievePrintersRequest(jsonObject); @@ -285,12 +284,10 @@ public RetrievePrintersRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CATEGORY_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersResponse.java index 40c1835a0..9feee9a45 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/RetrievePrintersResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -133,11 +132,7 @@ protected RetrievePrintersResponse(boolean noInit) { */ public RetrievePrintersResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -352,6 +347,10 @@ public RetrievePrintersResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return RetrievePrintersResponse.class; + } + @Override public RetrievePrintersResponse create(org.json.JSONObject jsonObject) { return new RetrievePrintersResponse(jsonObject); @@ -359,13 +358,11 @@ public RetrievePrintersResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PRINTERS_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleRequest.java index 04d0b6d46..4adcc38dd 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -369,11 +368,7 @@ protected SaleRequest(boolean noInit) { */ public SaleRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -406,12 +401,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'tipAmount' field is set and is not null */ @@ -1199,6 +1194,10 @@ public SaleRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return SaleRequest.class; + } + @Override public SaleRequest create(org.json.JSONObject jsonObject) { return new SaleRequest(jsonObject); @@ -1206,7 +1205,6 @@ public SaleRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TIPAMOUNT_IS_REQUIRED = false; public static final boolean TIPMODE_IS_REQUIRED = false; public static final boolean SIGNATURETHRESHOLD_IS_REQUIRED = false; @@ -1238,7 +1236,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleResponse.java index 5df17e533..ca73411c6 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/SaleResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -159,11 +158,7 @@ protected SaleResponse(boolean noInit) { */ public SaleResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -481,6 +476,10 @@ public SaleResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return SaleResponse.class; + } + @Override public SaleResponse create(org.json.JSONObject jsonObject) { return new SaleResponse(jsonObject); @@ -488,7 +487,6 @@ public SaleResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean ISSALE_IS_REQUIRED = false; public static final boolean ISPREAUTH_IS_REQUIRED = false; @@ -498,7 +496,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdded.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdded.java index 5522d02ad..6c4ad95db 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdded.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdded.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected TipAdded(boolean noInit) { */ public TipAdded(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -345,6 +340,10 @@ public TipAdded[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return TipAdded.class; + } + @Override public TipAdded create(org.json.JSONObject jsonObject) { return new TipAdded(jsonObject); @@ -352,13 +351,11 @@ public TipAdded create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TIPAMOUNT_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthRequest.java index b9e1a1162..56150cf9f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected TipAdjustAuthRequest(boolean noInit) { */ public TipAdjustAuthRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -168,10 +163,10 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'tipAmount' field is set and is not null */ @@ -342,6 +337,10 @@ public TipAdjustAuthRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return TipAdjustAuthRequest.class; + } + @Override public TipAdjustAuthRequest create(org.json.JSONObject jsonObject) { return new TipAdjustAuthRequest(jsonObject); @@ -349,7 +348,6 @@ public TipAdjustAuthRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TIPAMOUNT_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; @@ -358,7 +356,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthResponse.java index 07698621b..0d9ad7b81 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TipAdjustAuthResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -141,11 +140,7 @@ protected TipAdjustAuthResponse(boolean noInit) { */ public TipAdjustAuthResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -178,7 +173,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); } /** Checks whether the 'tipAmount' field is set and is not null */ @@ -378,6 +373,10 @@ public TipAdjustAuthResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return TipAdjustAuthResponse.class; + } + @Override public TipAdjustAuthResponse create(org.json.JSONObject jsonObject) { return new TipAdjustAuthResponse(jsonObject); @@ -385,7 +384,6 @@ public TipAdjustAuthResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean TIPAMOUNT_IS_REQUIRED = false; public static final boolean PAYMENTID_IS_REQUIRED = false; public static final long PAYMENTID_MAX_LEN = 13; @@ -393,7 +391,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionRequest.java index d93fd8df1..f78537c11 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -351,11 +350,7 @@ protected TransactionRequest(boolean noInit) { */ public TransactionRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -388,12 +383,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateNull(getAmount(), "amount"); + genClient.validateNotNull(CacheKey.amount, getAmount()); - genClient.validateNull(getExternalId(), "externalId"); - genClient.validateLength(getRequestId(), 13); + genClient.validateNotNull(CacheKey.externalId, getExternalId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'signatureThreshold' field is set and is not null */ @@ -1099,6 +1094,10 @@ public TransactionRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return TransactionRequest.class; + } + @Override public TransactionRequest create(org.json.JSONObject jsonObject) { return new TransactionRequest(jsonObject); @@ -1106,7 +1105,6 @@ public TransactionRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean SIGNATURETHRESHOLD_IS_REQUIRED = false; public static final boolean SIGNATUREENTRYLOCATION_IS_REQUIRED = false; public static final boolean AUTOACCEPTSIGNATURE_IS_REQUIRED = false; @@ -1136,7 +1134,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionTypeEnum.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionTypeEnum.java index 50e2842fa..b3d0531ad 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionTypeEnum.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/TransactionTypeEnum.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -87,11 +86,7 @@ protected TransactionTypeEnum(boolean noInit) { */ public TransactionTypeEnum(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -201,6 +196,10 @@ public TransactionTypeEnum[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return TransactionTypeEnum.class; + } + @Override public TransactionTypeEnum create(org.json.JSONObject jsonObject) { return new TransactionTypeEnum(jsonObject); @@ -208,9 +207,7 @@ public TransactionTypeEnum create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean STATUS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardRequest.java index f3dc42b5d..82114c3f5 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -111,11 +110,7 @@ protected VaultCardRequest(boolean noInit) { */ public VaultCardRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -147,7 +142,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'cardEntryMethods' field is set and is not null */ @@ -276,6 +271,10 @@ public VaultCardRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VaultCardRequest.class; + } + @Override public VaultCardRequest create(org.json.JSONObject jsonObject) { return new VaultCardRequest(jsonObject); @@ -283,12 +282,10 @@ public VaultCardRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CARDENTRYMETHODS_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardResponse.java index 8f8928603..0630b67e7 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VaultCardResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -131,11 +130,7 @@ protected VaultCardResponse(boolean noInit) { */ public VaultCardResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -347,6 +342,10 @@ public VaultCardResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VaultCardResponse.class; + } + @Override public VaultCardResponse create(org.json.JSONObject jsonObject) { return new VaultCardResponse(jsonObject); @@ -354,13 +353,11 @@ public VaultCardResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean CARD_IS_REQUIRED = false; public static final boolean SUCCESS_IS_REQUIRED = false; public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VerifySignatureRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VerifySignatureRequest.java index 5a884d57e..70e148ca2 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VerifySignatureRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VerifySignatureRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -118,11 +117,7 @@ protected VerifySignatureRequest(boolean noInit) { */ public VerifySignatureRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -154,7 +149,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'payment' field is set and is not null */ @@ -308,6 +303,10 @@ public VerifySignatureRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VerifySignatureRequest.class; + } + @Override public VerifySignatureRequest create(org.json.JSONObject jsonObject) { return new VerifySignatureRequest(jsonObject); @@ -315,13 +314,11 @@ public VerifySignatureRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean SIGNATURE_IS_REQUIRED = false; public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditRequest.java index bc9ff189d..94c782e4c 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -120,11 +119,7 @@ protected VoidCreditRequest(boolean noInit) { */ public VoidCreditRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -156,11 +151,11 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getCreditId(), 13); + genClient.validateCloverId(CacheKey.creditId, getCreditId()); } /** Checks whether the 'requestId' field is set and is not null */ @@ -305,6 +300,10 @@ public VoidCreditRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidCreditRequest.class; + } + @Override public VoidCreditRequest create(org.json.JSONObject jsonObject) { return new VoidCreditRequest(jsonObject); @@ -312,7 +311,6 @@ public VoidCreditRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean ORDERID_IS_REQUIRED = false; @@ -320,7 +318,6 @@ public interface Constraints { public static final boolean CREDITID_IS_REQUIRED = false; public static final long CREDITID_MAX_LEN = 13; public static final boolean EXTRAS_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditResponse.java index 8abf1b00d..a4dcf2a5f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidCreditResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -107,11 +106,7 @@ protected VoidCreditResponse(boolean noInit) { */ public VoidCreditResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -143,7 +138,7 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'requestId' field is set and is not null */ @@ -266,6 +261,10 @@ public VoidCreditResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidCreditResponse.class; + } + @Override public VoidCreditResponse create(org.json.JSONObject jsonObject) { return new VoidCreditResponse(jsonObject); @@ -273,12 +272,10 @@ public VoidCreditResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean STATUS_IS_REQUIRED = false; public static final boolean CREDIT_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundRequest.java index 90c84fcd1..3135e516f 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -161,11 +160,7 @@ protected VoidPaymentRefundRequest(boolean noInit) { */ public VoidPaymentRefundRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -198,12 +193,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getRefundId(), 13); + genClient.validateCloverId(CacheKey.refundId, getRefundId()); - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getEmployeeId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.employeeId, getEmployeeId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'refundId' field is set and is not null */ @@ -440,6 +435,10 @@ public VoidPaymentRefundRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidPaymentRefundRequest.class; + } + @Override public VoidPaymentRefundRequest create(org.json.JSONObject jsonObject) { return new VoidPaymentRefundRequest(jsonObject); @@ -447,7 +446,6 @@ public VoidPaymentRefundRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REFUNDID_IS_REQUIRED = false; public static final long REFUNDID_MAX_LEN = 13; public static final boolean ORDERID_IS_REQUIRED = false; @@ -460,7 +458,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundResponse.java index b145bb908..bb6d59648 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRefundResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -161,11 +160,7 @@ protected VoidPaymentRefundResponse(boolean noInit) { */ public VoidPaymentRefundResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -198,9 +193,9 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); } /** Checks whether the 'refundId' field is set and is not null */ @@ -456,6 +451,10 @@ public VoidPaymentRefundResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidPaymentRefundResponse.class; + } + @Override public VoidPaymentRefundResponse create(org.json.JSONObject jsonObject) { return new VoidPaymentRefundResponse(jsonObject); @@ -463,7 +462,6 @@ public VoidPaymentRefundResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean REFUNDID_IS_REQUIRED = false; public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; @@ -474,7 +472,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRequest.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRequest.java index 2e863c366..b02a9bf23 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRequest.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentRequest.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -171,11 +170,7 @@ protected VoidPaymentRequest(boolean noInit) { */ public VoidPaymentRequest(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -208,12 +203,12 @@ public org.json.JSONObject getJSONObject() { @Override public void validate() { - genClient.validateLength(getOrderId(), 13); + genClient.validateCloverId(CacheKey.orderId, getOrderId()); - genClient.validateLength(getPaymentId(), 13); + genClient.validateCloverId(CacheKey.paymentId, getPaymentId()); - genClient.validateLength(getEmployeeId(), 13); - genClient.validateLength(getRequestId(), 13); + genClient.validateCloverId(CacheKey.employeeId, getEmployeeId()); + genClient.validateCloverId(CacheKey.requestId, getRequestId()); } /** Checks whether the 'orderId' field is set and is not null */ @@ -471,6 +466,10 @@ public VoidPaymentRequest[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidPaymentRequest.class; + } + @Override public VoidPaymentRequest create(org.json.JSONObject jsonObject) { return new VoidPaymentRequest(jsonObject); @@ -478,7 +477,6 @@ public VoidPaymentRequest create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean ORDERID_IS_REQUIRED = false; public static final long ORDERID_MAX_LEN = 13; public static final boolean PAYMENTID_IS_REQUIRED = false; @@ -492,7 +490,6 @@ public interface Constraints { public static final boolean REQUESTID_IS_REQUIRED = false; public static final long REQUESTID_MAX_LEN = 13; public static final boolean VERSION_IS_REQUIRED = false; - } } diff --git a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentResponse.java b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentResponse.java index 523b43d42..d9d1a370e 100644 --- a/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentResponse.java +++ b/clover-android-connector-sdk/src/main/java/com/clover/sdk/v3/remotepay/VoidPaymentResponse.java @@ -4,7 +4,6 @@ * DO NOT EDIT DIRECTLY */ - /* * Copyright (C) 2019 Clover Network, Inc. * @@ -169,11 +168,7 @@ protected VoidPaymentResponse(boolean noInit) { */ public VoidPaymentResponse(String json) throws IllegalArgumentException { this(); - try { - genClient.setJsonObject(new org.json.JSONObject(json)); - } catch (org.json.JSONException e) { - throw new IllegalArgumentException("invalid json", e); - } + genClient.initJsonObject(json); } /** @@ -512,6 +507,10 @@ public VoidPaymentResponse[] newArray(int size) { }; public static final com.clover.sdk.JSONifiable.Creator JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator() { + public Class getCreatedClass() { + return VoidPaymentResponse.class; + } + @Override public VoidPaymentResponse create(org.json.JSONObject jsonObject) { return new VoidPaymentResponse(jsonObject); @@ -519,7 +518,6 @@ public VoidPaymentResponse create(org.json.JSONObject jsonObject) { }; public interface Constraints { - public static final boolean PAYMENTID_IS_REQUIRED = false; public static final boolean PAYMENT_IS_REQUIRED = false; public static final boolean ISSALE_IS_REQUIRED = false; @@ -530,7 +528,6 @@ public interface Constraints { public static final boolean RESULT_IS_REQUIRED = false; public static final boolean REASON_IS_REQUIRED = false; public static final boolean MESSAGE_IS_REQUIRED = false; - } } diff --git a/clover-android-loyalty-kit/build.gradle b/clover-android-loyalty-kit/build.gradle index be5ce5503..c82b1f84b 100644 --- a/clover-android-loyalty-kit/build.gradle +++ b/clover-android-loyalty-kit/build.gradle @@ -14,7 +14,7 @@ * limitations under the License. */ group = 'com.clover.sdk' -version = '248.4' +version = '262.2' apply from: file("${project.rootDir}/lib.gradle") diff --git a/clover-android-sdk-examples/build.gradle b/clover-android-sdk-examples/build.gradle index 1a81adf4b..7d0b2e46c 100644 --- a/clover-android-sdk-examples/build.gradle +++ b/clover-android-sdk-examples/build.gradle @@ -14,7 +14,7 @@ * limitations under the License. */ group = 'com.clover.sdk' -version = '248.4' +version = '262.2' apply from: file("${project.rootDir}/app.gradle") @@ -26,9 +26,6 @@ repositories { } android { - lintOptions { - abortOnError false - } buildTypes { all { minifyEnabled true @@ -38,6 +35,10 @@ android { } } + lintOptions { + abortOnError false + } + compileSdkVersion COMPILE_SDK_VERSION defaultConfig { @@ -50,6 +51,7 @@ dependencies { implementation project(':clover-android-sdk') implementation "androidx.appcompat:appcompat:$ANDROIDX_APPCOMPAT_VERSION" implementation "androidx.lifecycle:lifecycle-extensions:$ANDROIDX_LIFECYCLE_VERSION" + implementation "androidx.constraintlayout:constraintlayout:$ANDROIDX_CONSTRAINTLAYOUT_VERSION" implementation "androidx.annotation:annotation:$ANDROIDX_ANNOTATION_VERSION" implementation "androidx.recyclerview:recyclerview:$ANDROIDX_RECYCLERVIEW_VERSION" implementation "androidx.cardview:cardview:$ANDROIDX_CARDVIEW_VERSION" diff --git a/clover-android-sdk-examples/src/main/AndroidManifest.xml b/clover-android-sdk-examples/src/main/AndroidManifest.xml index da33cc509..3a7725547 100644 --- a/clover-android-sdk-examples/src/main/AndroidManifest.xml +++ b/clover-android-sdk-examples/src/main/AndroidManifest.xml @@ -36,7 +36,7 @@ xmlns:tools="http://schemas.android.com/tools" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" - tools:ignore="GoogleAppIndexingWarning"> + tools:ignore="GoogleAppIndexingWarning"> @@ -63,9 +63,9 @@ xmlns:tools="http://schemas.android.com/tools" android:taskAffinity="com.clover.sdk.examples.cashevent" > + android:name="com.clover.android.sdk.examples.CashDrawersActivity" + android:theme="@style/Theme.AppCompat.Light" + android:label="@string/cash_drawers_test" > + + + + + + + + diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashDrawersActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashDrawersActivity.java new file mode 100644 index 000000000..2b579cb64 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashDrawersActivity.java @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2020 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.clover.android.sdk.examples; + +import com.clover.sdk.cashdrawer.CashDrawer; +import com.clover.sdk.cashdrawer.CashDrawers; + +import android.app.Application; +import android.content.Context; +import android.graphics.drawable.ShapeDrawable; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModelProviders; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +public class CashDrawersActivity extends AppCompatActivity { + + private static final String TAG = CashDrawersActivity.class.getSimpleName(); + + private static final Executor bgExec = Executors.newSingleThreadExecutor(); + + private MyViewModel viewModel; + private RecyclerView recyclerView; + private LinearLayoutManager layoutManager; + private CashDrawers cashDrawers; + + public static class MyViewModel extends AndroidViewModel { + public MyViewModel(@NonNull Application application) { + super(application); + } + + final MutableLiveData> cashDrawerData = new MutableLiveData<>(); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_cash_drawers); + + Context appContext = getApplicationContext(); + cashDrawers = new CashDrawers(appContext); + cashDrawers.registerDiscovery(new CustomMockCashDrawerDiscovery(appContext)); + + recyclerView = findViewById(R.id.cashdrawers_rcv); + recyclerView.setHasFixedSize(true); + + layoutManager = new LinearLayoutManager(this); + recyclerView.setLayoutManager(layoutManager); + + ShapeDrawable dividerDrawable = new ShapeDrawable(); + dividerDrawable.getPaint().setColor(0xFF000000); + dividerDrawable.setIntrinsicHeight(1); + DividerItemDecoration itemDecorator = new DividerItemDecoration(appContext, layoutManager.getOrientation()); + itemDecorator.setDrawable(dividerDrawable); + recyclerView.addItemDecoration(itemDecorator, DividerItemDecoration.HORIZONTAL); + + viewModel = ViewModelProviders.of(this).get(MyViewModel.class); + viewModel.cashDrawerData.observe(this, (cashDrawers -> { + recyclerView.setAdapter(new CashDrawerViewAdapter(cashDrawers)); + })); + + Button refresh = findViewById(R.id.refresh_btn); + refresh.setOnClickListener(this::findCashDrawers); + } + + private void findCashDrawers(View v) { + bgExec.execute(() -> { + viewModel.cashDrawerData.postValue(cashDrawers.list()); + }); + } + + void popCashDrawer(CashDrawer cd) { + bgExec.execute(() -> { + String result; + if (cd.pop()) { + result = "Pop succeeded!"; + } else { + result = "Pop failed!"; + } + + runOnUiThread(() -> Toast.makeText(this, result, Toast.LENGTH_SHORT).show()); + }); + } + + static class TextViewHolder extends RecyclerView.ViewHolder { + final TextView textView; + TextViewHolder(TextView v) { + super(v); + textView = v; + } + } + + static class CashDrawerComparator implements Comparator { + @Override + public int compare(CashDrawer o1, CashDrawer o2) { + if (o1 == null && o2 == null) { + return 0; + } + + if (o1 == null) { + return -1; + } + + if (o2 == null) { + return 1; + } + + return o1.getUniqueIdentifier().compareTo(o2.getUniqueIdentifier()); + } + } + + class CashDrawerViewAdapter extends RecyclerView.Adapter { + final List cashDrawers = new ArrayList<>(); + final CashDrawerComparator cashDrawerComparator = new CashDrawerComparator(); + + CashDrawerViewAdapter(Collection col) { + cashDrawers.addAll(col); + Collections.sort(cashDrawers, cashDrawerComparator); + Collections.reverse(cashDrawers); + } + + @NonNull + @Override + public TextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + TextView v = (TextView) LayoutInflater.from(parent.getContext()) + .inflate(R.layout.cashdrawer_view, parent, false); + return new TextViewHolder(v); + } + + @Override + public void onBindViewHolder(TextViewHolder holder, int position) { + CashDrawer cd = cashDrawers.get(position); + holder.textView.setText(cd.getDisplayName() + " " + cd.getDrawerNumber()); + holder.textView.setTag(cd); + holder.textView.setOnClickListener((view) -> popCashDrawer(cd)); + } + + @Override + public int getItemCount() { + return cashDrawers.size(); + } + } + + // Test custom cash drawer + static class CustomCashDrawer extends CashDrawer { + CustomCashDrawer(Context context, int drawerNumber) { + super(context, drawerNumber); + } + + @Override + public String getIdentifier() { + return "com.app.CUSTOM"; + } + + @Override + public String getDisplayName() { + return "Custom Cash Drawer"; + } + + @Override + public boolean pop() { + Log.w(TAG, "You can't actually pop: " + this); + return false; + } + } + + // Testing custom cash drawer discovery + static class CustomMockCashDrawerDiscovery extends CashDrawer.Discovery { + CustomMockCashDrawerDiscovery(Context context) { + super(context); + } + + @Override + public Set list() { + Set result = new HashSet<>(); + + // Simulate a varying number of connected cash drawers + int count = Math.abs(new Random().nextInt(10)) + 1; + + for (int i = 0; i < count; i++) { + result.add(new CustomCashDrawer(context, i + 1)); + } + return result; + } + } + +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashEventTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashEventTestActivity.java index d2a002225..dc28c7714 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashEventTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CashEventTestActivity.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CurrencyUtils.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CurrencyUtils.java new file mode 100644 index 000000000..f42ed6123 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/CurrencyUtils.java @@ -0,0 +1,61 @@ +package com.clover.android.sdk.examples; + +import com.clover.sdk.v1.merchant.Merchant; + +import android.content.Context; + +import java.text.DecimalFormat; +import java.util.Currency; +import java.util.Locale; + +public final class CurrencyUtils { + + private final Context ctx; + private final Merchant merchant; + + public CurrencyUtils(Context ctx, Merchant merchant) { + this.ctx = ctx.getApplicationContext(); + this.merchant = merchant; + } + + public Currency getMerchantCurrency() { + return merchant.getCurrency(); + } + + public Locale getMerchantLocale() { + return merchant.getLocale(); + } + + // Take a long and convert it to an amount string (i.e 150 -> $1.50) + public String longToAmountString(long amt) { + Currency currency = getMerchantCurrency(); + DecimalFormat decimalFormat = getCurrencyFormatInstance(); + decimalFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits()); + decimalFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits()); + return longToAmountString(currency, amt, decimalFormat); + } + + private double longToDecimal(double num, Currency currency) { + return num / Math.pow(10, currency.getDefaultFractionDigits()); + } + + // Take a long and convert it to an amount string (i.e 150 -> $1.50) + private String longToAmountString(Currency currency, long amt, DecimalFormat decimalFormat) { + return decimalFormat.format(longToDecimal(amt, currency)); + } + + // DecimalFormat is not thread safe + private final ThreadLocal DECIMAL_FORMAT = new ThreadLocal() { + @Override + protected DecimalFormat initialValue() { + DecimalFormat df = (DecimalFormat) DecimalFormat.getCurrencyInstance(getMerchantLocale()); + df.setCurrency(getMerchantCurrency()); + return df; + } + }; + + private DecimalFormat getCurrencyFormatInstance() { + return DECIMAL_FORMAT.get(); + } + +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/DebouncedButton.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/DebouncedButton.java new file mode 100644 index 000000000..f54c984a7 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/DebouncedButton.java @@ -0,0 +1,61 @@ +package com.clover.android.sdk.examples; + +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.util.AttributeSet; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatButton; + +/** + * Prevent user button mashing that may have undesirable results. By default the button stays + * disabled for 2 seconds after it is pressed before it re-enables itself + */ +public class DebouncedButton extends AppCompatButton { + + private final Handler mainHandler = new Handler(Looper.getMainLooper()); + private long debounceTimeoutMillis = 2000; + + public DebouncedButton(Context context) { + super(context); + } + + public DebouncedButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DebouncedButton(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public void setDebounceTimeoutMillis(long timeoutMillis) { + this.debounceTimeoutMillis = timeoutMillis; + } + + private final Runnable debounce = () -> { + setEnabled(true); + }; + + @Override + public void setOnClickListener(@Nullable OnClickListener l) { + mainHandler.removeCallbacks(debounce); + + if (l == null) { + super.setOnClickListener(null); + return; + } + + super.setOnClickListener((view) -> { + setEnabled(false); + mainHandler.postDelayed(debounce, debounceTimeoutMillis); + l.onClick(this); + }); + } + + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + mainHandler.removeCallbacks(debounce); + } + +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/EmployeeTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/EmployeeTestActivity.java index 03b8d596c..c910b2597 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/EmployeeTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/EmployeeTestActivity.java @@ -1,12 +1,12 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * + * https://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,17 +15,6 @@ */ package com.clover.android.sdk.examples; -import com.clover.sdk.util.CloverAccount; -import com.clover.sdk.v1.Intents; -import com.clover.sdk.v1.ResultStatus; -import com.clover.sdk.v1.ServiceConnector; -import com.clover.sdk.v1.merchant.Merchant; -import com.clover.sdk.v1.merchant.MerchantConnector; -import com.clover.sdk.v3.employees.AccountRole; -import com.clover.sdk.v3.employees.Employee; -import com.clover.sdk.v3.employees.EmployeeConnector; -import com.clover.sdk.v3.employees.EmployeeIntent; - import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; @@ -44,6 +33,17 @@ import android.widget.TextView; import android.widget.Toast; +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.Intents; +import com.clover.sdk.v1.ResultStatus; +import com.clover.sdk.v1.ServiceConnector; +import com.clover.sdk.v1.merchant.Merchant; +import com.clover.sdk.v1.merchant.MerchantConnector; +import com.clover.sdk.v3.employees.AccountRole; +import com.clover.sdk.v3.employees.Employee; +import com.clover.sdk.v3.employees.EmployeeConnector; +import com.clover.sdk.v3.employees.EmployeeIntent; + import java.text.DateFormat; import java.util.Date; import java.util.List; @@ -590,4 +590,4 @@ private AccountRole getRoleFromString(String role) { throw new IllegalArgumentException("Unrecognized role"); } -} +} \ No newline at end of file diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/InventoryTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/InventoryTestActivity.java index 4f6dfe380..ed051786d 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/InventoryTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/InventoryTestActivity.java @@ -1,12 +1,12 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * + * https://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,6 +15,24 @@ */ package com.clover.android.sdk.examples; +import android.accounts.Account; +import android.app.Activity; +import android.app.LoaderManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.CursorLoader; +import android.content.Intent; +import android.content.Loader; +import android.content.ServiceConnection; +import android.database.Cursor; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.text.TextUtils; +import android.util.Log; +import android.widget.TextView; + import com.clover.sdk.util.CloverAccount; import com.clover.sdk.util.CloverAuth; import com.clover.sdk.v1.BindingException; @@ -41,23 +59,6 @@ import com.clover.sdk.v3.inventory.Tag; import com.clover.sdk.v3.inventory.TaxRate; -import android.accounts.Account; -import android.app.Activity; -import android.app.LoaderManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.CursorLoader; -import android.content.Intent; -import android.content.Loader; -import android.content.ServiceConnection; -import android.database.Cursor; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.IBinder; -import android.os.RemoteException; -import android.text.TextUtils; -import android.util.Log; -import android.widget.TextView; import org.apache.http.HttpEntity; import org.apache.http.HttpException; import org.apache.http.HttpResponse; diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadEditText.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadEditText.java new file mode 100644 index 000000000..97fbb1935 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadEditText.java @@ -0,0 +1,40 @@ +package com.clover.android.sdk.examples; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.EditText; + +public class KeypadEditText extends EditText { + + public KeypadEditText(Context context) { + super(context); + } + + public KeypadEditText(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public KeypadEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public KeypadEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public boolean isCursorVisible() { + return true; + } + + @Override + public boolean isFocused() { + return true; + } + + @Override + public void setText(CharSequence text, BufferType type) { + super.setText(text, type); + setSelection(text.length()); // Required to move cursor to end + } +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadTestActivity.java new file mode 100644 index 000000000..cf4cc5d94 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/KeypadTestActivity.java @@ -0,0 +1,92 @@ +package com.clover.android.sdk.examples; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; + +import com.clover.sdk.v1.Intents; + +import java.util.ArrayList; +import java.util.Arrays; + +import static com.clover.sdk.v1.Intents.EXTRA_KEYPAD_COMPLETIONS; +import static com.clover.sdk.v1.Intents.EXTRA_KEYPAD_TYPE; +import static com.clover.sdk.v1.Intents.KEYPAD_TYPE_EMAIL; +import static com.clover.sdk.v1.Intents.KEYPAD_TYPE_NUMERIC; +import static com.clover.sdk.v1.Intents.KEYPAD_TYPE_PHONESMS; + +/** + * An example client activity for {@link Intents#ACTION_KEYPAD}. + */ +public class KeypadTestActivity extends Activity { + private static final int REQUEST_KEYPAD = 13; + + private Button startButton; + private TextView resultText; + + private int type = KEYPAD_TYPE_NUMERIC; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_keypad_test); + + startButton = findViewById(R.id.button_keypad_start); + startButton.setOnClickListener(view -> { + Intent startIntent = new Intent(Intents.ACTION_KEYPAD); + startIntent.putExtra(EXTRA_KEYPAD_TYPE, type); + + switch (type) { + case KEYPAD_TYPE_EMAIL: + // Add some sample completions for email + final ArrayList completions = new ArrayList<>(Arrays.asList(getResources() + .getStringArray(R.array.email_completions))); + startIntent.putExtra(EXTRA_KEYPAD_COMPLETIONS, completions); + break; + case KEYPAD_TYPE_NUMERIC: + case KEYPAD_TYPE_PHONESMS: + default: + break; + } + + startIntent.putExtra(Intents.EXTRA_KEYPAD_TEXT, resultText.getText().toString()); + startActivityForResult(startIntent, REQUEST_KEYPAD); + }); + resultText = findViewById(R.id.text_keypad); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == REQUEST_KEYPAD) { + if (resultCode == RESULT_OK) { + resultText.setText(data.getStringExtra(Intents.RESULT_KEYPAD_TEXT)); + } else { + Toast.makeText(this, "Result: CANCELED", Toast.LENGTH_SHORT).show(); + } + } + } + + public void onRadioButtonClicked(View view) { + switch (view.getId()) { + case R.id.type_numeric: + type = KEYPAD_TYPE_NUMERIC; + break; + case R.id.type_email: + type = KEYPAD_TYPE_EMAIL; + break; + case R.id.type_phone: + type = KEYPAD_TYPE_PHONESMS; + break; + default: + type = KEYPAD_TYPE_NUMERIC; + break; + } + } +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/MerchantTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/MerchantTestActivity.java index b9faf8d7c..f102e6935 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/MerchantTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/MerchantTestActivity.java @@ -1,12 +1,12 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * + * https://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,14 +15,6 @@ */ package com.clover.android.sdk.examples; -import com.clover.sdk.util.CloverAccount; -import com.clover.sdk.v1.ResultStatus; -import com.clover.sdk.v1.ServiceConnector; -import com.clover.sdk.v1.merchant.Merchant; -import com.clover.sdk.v1.merchant.MerchantAddress; -import com.clover.sdk.v1.merchant.MerchantConnector; -import com.clover.sdk.v1.merchant.MerchantIntent; - import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; @@ -39,6 +31,14 @@ import android.widget.EditText; import android.widget.TextView; +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.ResultStatus; +import com.clover.sdk.v1.ServiceConnector; +import com.clover.sdk.v1.merchant.Merchant; +import com.clover.sdk.v1.merchant.MerchantAddress; +import com.clover.sdk.v1.merchant.MerchantConnector; +import com.clover.sdk.v1.merchant.MerchantIntent; + import java.text.DateFormat; import java.util.Date; diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderPaidActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderPaidActivity.java index ac823f42d..1106b31fb 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderPaidActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderPaidActivity.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,6 +35,7 @@ import com.clover.sdk.v1.BindingException; import com.clover.sdk.v1.ClientException; import com.clover.sdk.v1.ServiceException; +import com.clover.sdk.v1.merchant.Merchant; import com.clover.sdk.v3.order.Order; import com.clover.sdk.v3.order.OrderCalc; import com.clover.sdk.v3.order.OrderConnector; @@ -42,6 +43,7 @@ import com.clover.sdk.v3.payments.Payment; import com.clover.sdk.v3.payments.Refund; +import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -91,13 +93,13 @@ public View getView(int position, View convertView, ViewGroup parent) { orderIdText.setText(order.getId()); TextView orderTotalText = (TextView) view.findViewById(R.id.text_order_total); - orderTotalText.setText(longToAmountString(Currency.getInstance("USD"), new OrderCalc(order).getTotal(order.getLineItems()))); + orderTotalText.setText(currencyUtils.longToAmountString(new OrderCalc(order).getTotal(order.getLineItems()))); TextView orderDateText = (TextView) view.findViewById(R.id.text_order_date); orderDateText.setText(SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT).format(order.getClientCreatedTime())); TextView orderPaidText = (TextView) view.findViewById(R.id.text_order_paid); - orderPaidText.setText("Paid? " + isPaid(order)); + orderPaidText.setText("Paid? " + OrderUtils.isFullyPaid(order)); return view; } @@ -105,6 +107,7 @@ public View getView(int position, View convertView, ViewGroup parent) { private OrderConnector orderConnector; private ListView ordersList; + private CurrencyUtils currencyUtils; private Account account; @@ -114,6 +117,8 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_order_paid); account = CloverAccount.getAccount(this); + orderConnector = new OrderConnector(this, account, null); + ordersList = (ListView) findViewById(R.id.list_orders); } @@ -121,17 +126,17 @@ protected void onCreate(Bundle savedInstanceState) { protected void onResume() { super.onResume(); - orderConnector = new OrderConnector(this, account, null); getLoaderManager().restartLoader(ORDERS_LOADER_ID, null, this); } @Override - protected void onPause() { + protected void onDestroy() { if (orderConnector != null) { orderConnector.disconnect(); orderConnector = null; } - super.onPause(); + + super.onDestroy(); } @Override @@ -149,11 +154,21 @@ public void onLoadFinished(Loader loader, final Cursor data) { } } - new AsyncTask>() { + new AsyncTask>() { @Override protected List doInBackground(Void... params) { + List orders = new ArrayList<>(); + + if (currencyUtils == null) { + try { + Merchant merchant = Utils.fetchMerchantBlocking(getApplicationContext()); + currencyUtils = new CurrencyUtils(getApplicationContext(), merchant); + } catch (IOException e) { + e.printStackTrace(); + return orders; + } + } - List orders = new ArrayList(); for (String orderId: orderIds) { try { Order o = orderConnector.getOrder(orderId); @@ -166,9 +181,7 @@ protected List doInBackground(Void... params) { } } - Collections.sort(orders, new Comparator() { - @Override - public int compare(Order lhs, Order rhs) { + Collections.sort(orders, (lhs, rhs) -> { if (lhs.getClientCreatedTime() < rhs.getClientCreatedTime()) { return 1; } @@ -176,14 +189,16 @@ public int compare(Order lhs, Order rhs) { return -1; } return 0; - } - }); + }); return orders; } @Override protected void onPostExecute(List orders) { + if (OrderPaidActivity.this.isFinishing() || OrderPaidActivity.this.isDestroyed()) { + return; + } ordersList.setAdapter(new OrdersAdapter(orders)); } }.execute(); @@ -193,75 +208,4 @@ protected void onPostExecute(List orders) { public void onLoaderReset(Loader loader) { } - private static boolean isPaid(Order order) { - return (order.isNotNullLineItems() && order.getLineItems().size() > 0 && (order.isNotEmptyPayments() || order.isNotEmptyCredits()) && getAmountLeftToPay(order) <= 0); - } - - public static long getAmountLeftToPay(Order order) { - long paymentTotal = 0; - if (order.isNotNullPayments()) { - for (Payment p : order.getPayments()) { - paymentTotal += p.getAmount(); - } - } - return new OrderCalc(order).getTotal(order.getLineItems()) - paymentTotal + amountRefundedWithoutTip(order); - } - - public static long amountRefundedWithoutTip(Order order) { - long amountRefundedWithoutTip = 0l; - if (order.isNotNullRefunds()) { - for (Refund r : order.getRefunds()) { - if (r.getAmount() != null) { - amountRefundedWithoutTip += r.getAmount(); - - for (Payment p : order.getPayments()) { - if (p.getId().equals(r.getPayment().getId())) { - amountRefundedWithoutTip -= calcTipAmount(p); - } - } - } - } - } - return amountRefundedWithoutTip; - } - - public static long calcTipAmount(Payment p) { - if (p.isNotNullTipAmount()) { - return p.getTipAmount(); - } else { - return 0; - } - } - - public static double longToDecimal(double num, Currency currency) { - return num / Math.pow(10, currency.getDefaultFractionDigits()); - } - - - // Take a long and convert it to an amount string (i.e 150 -> $1.50) - public static String longToAmountString(Currency currency, long amt) { - DecimalFormat decimalFormat = getCurrencyFormatInstance(currency); - return longToAmountString(currency, amt, decimalFormat); - } - - // Take a long and convert it to an amount string (i.e 150 -> $1.50) - public static String longToAmountString(Currency currency, long amt, DecimalFormat decimalFormat) { - return decimalFormat.format(longToDecimal(amt, currency)); - } - - private static ThreadLocal DECIMAL_FORMAT = new ThreadLocal() { - @Override - protected DecimalFormat initialValue() { - return (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault()); - } - }; - - private static DecimalFormat getCurrencyFormatInstance(Currency currency) { - DecimalFormat format = DECIMAL_FORMAT.get(); - if (format.getCurrency() != currency) { - format.setCurrency(currency); - } - return format; - } - } diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderUtils.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderUtils.java new file mode 100644 index 000000000..1cfdab589 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/OrderUtils.java @@ -0,0 +1,56 @@ +package com.clover.android.sdk.examples; + +import com.clover.sdk.v3.order.Order; +import com.clover.sdk.v3.order.OrderCalc; +import com.clover.sdk.v3.payments.Payment; +import com.clover.sdk.v3.payments.Refund; + +public final class OrderUtils { + + private OrderUtils() { + } + + public static boolean isFullyPaid(Order order) { + return order.isNotNullLineItems() + && order.getLineItems().size() > 0 + && (order.isNotEmptyPayments() || order.isNotEmptyCredits()) + && getAmountLeftToPay(order) <= 0; + } + + public static long getAmountLeftToPay(Order order) { + long paymentTotal = 0; + if (order.isNotNullPayments()) { + for (Payment p : order.getPayments()) { + paymentTotal += p.getAmount(); + } + } + return new OrderCalc(order).getTotal(order.getLineItems()) - paymentTotal + amountRefundedWithoutTip(order); + } + + public static long amountRefundedWithoutTip(Order order) { + long amountRefundedWithoutTip = 0L; + if (order.isNotNullRefunds()) { + for (Refund r : order.getRefunds()) { + if (r.getAmount() != null) { + amountRefundedWithoutTip += r.getAmount(); + + for (Payment p : order.getPayments()) { + if (p.getId().equals(r.getPayment().getId())) { + amountRefundedWithoutTip -= calcTipAmount(p); + } + } + } + } + } + return amountRefundedWithoutTip; + } + + public static long calcTipAmount(Payment p) { + if (p.isNotNullTipAmount()) { + return p.getTipAmount(); + } else { + return 0; + } + } + +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrintTaskTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrintTaskTestActivity.java index e48fb1e60..64bab6bd6 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrintTaskTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrintTaskTestActivity.java @@ -1,13 +1,24 @@ +/* + * Copyright (C) 2020 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.clover.android.sdk.examples; import com.clover.sdk.util.CloverAccount; -import com.clover.sdk.v1.BindingException; -import com.clover.sdk.v1.ClientException; -import com.clover.sdk.v1.ServiceException; import com.clover.sdk.v1.printer.Printer; import com.clover.sdk.v1.printer.PrinterConnector; -import com.clover.sdk.v1.printer.job.ImagePrintJob; -import com.clover.sdk.v1.printer.job.PrintJob; +import com.clover.sdk.v1.printer.job.ImagePrintJob2; import com.clover.sdk.v1.printer.job.ViewPrintJob; import android.accounts.Account; @@ -17,12 +28,11 @@ import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; -import android.os.RemoteException; +import android.view.View; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.Gravity; -import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; @@ -34,6 +44,7 @@ import java.util.List; public class PrintTaskTestActivity extends Activity { + private static final String TAG = PrintTaskTestActivity.class.getSimpleName(); private static final String ITEM = "Item"; private static final String COST = "$ Cost"; @@ -41,7 +52,6 @@ public class PrintTaskTestActivity extends Activity { private Button imagePrintButton; private Button viewPrintButton; - private Button viewPrintButton2; private Account account; private LinearLayout testView; private Bitmap icon; @@ -49,7 +59,8 @@ public class PrintTaskTestActivity extends Activity { private RecyclerView recyclerView; private List resultList; private PrinterListAdapter adapter; - private int selectedPosition; + + private Printer selectedPrinter; private int viewWidth; @@ -57,48 +68,46 @@ public class PrintTaskTestActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_print_task_test); - imagePrintButton = findViewById(R.id.button2); - /** - * Button which uses the original view method from ViewPrintJob - * to print. - * */ viewPrintButton = findViewById(R.id.button1); - /** - * Button which uses the new view method from ViewPrintJob - * to print. - * */ - viewPrintButton2 = findViewById(R.id.button3); + imagePrintButton = findViewById(R.id.button2); account = CloverAccount.getAccount(this); - resultList = new ArrayList(); + resultList = new ArrayList<>(); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); - PrinterListAdapter.ClickListener clickListener = new PrinterListAdapter.ClickListener() { + PrinterListAdapter.CheckListener checkListener = new PrinterListAdapter.CheckListener() { @Override - public void onItemClick(int position, View v) { - selectedPosition = position; - new AsyncTask() { + public void onItemChecked(int position, View v) { + selectedPrinter = resultList.get(position); + + new AsyncTask() { @Override - protected Void doInBackground(Void... voids) { + protected Integer doInBackground(Void... voids) { try { - viewWidth = connector.getPrinterTypeDetails(resultList.get(selectedPosition)).getNumDotsWidth(); - Log.v(TAG, String.valueOf(viewWidth)); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (ClientException e) { - e.printStackTrace(); - } catch (ServiceException e) { - e.printStackTrace(); - } catch (BindingException e) { + int width = connector.getPrinterTypeDetails(selectedPrinter).getNumDotsWidth(); + Log.v(TAG, "Printer head width: " + width); + return width; + } catch (Exception e) { e.printStackTrace(); } - return null; + return 0; + } + + @Override + protected void onPostExecute(Integer width) { + viewWidth = width; } }.execute(); } + + @Override + public void onItemUnchecked() { + viewWidth = 0; + selectedPrinter = null; + } }; - adapter = new PrinterListAdapter(this, resultList, clickListener); + adapter = new PrinterListAdapter(this, resultList, checkListener); recyclerView.setAdapter(adapter); connector = new PrinterConnector(this, account, null); getConnectedPrinters(); @@ -107,59 +116,42 @@ protected Void doInBackground(Void... voids) { generateHeadLayout(testView); generateBodyLayout(testView); - /** - * Prints receipt by using the older {@link ViewPrintJob.Builder#view(View)} - * Must call {@link #layoutAndMeasureView(View, int)} before. - * */ - viewPrintButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new AsyncTask() { - @Override - protected Void doInBackground(Void... voids) { - layoutAndMeasureView(testView, viewWidth); - ViewPrintJob.Builder builder = new ViewPrintJob.Builder().view(testView); - ViewPrintJob printJob = builder.build(); - printJob.print(getApplicationContext(), account); - return null; - } - }.execute(); - } - }); - - /** - * Prints receipt by using the older {@link ViewPrintJob.Builder#view(View, int)} - * */ - viewPrintButton2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new AsyncTask() { - @Override - protected Void doInBackground(Void... voids) { - ViewPrintJob.Builder builder = new ViewPrintJob.Builder().view(testView, viewWidth); - ViewPrintJob printJob = builder.build(); - printJob.print(getApplicationContext(), account); - return null; - } - }.execute(); + viewPrintButton.setOnClickListener((v) -> { + if (selectedPrinter == null) { + return; } + + Printer printer = selectedPrinter; + int width = viewWidth; + + new AsyncTask() { + @Override + protected Void doInBackground(Void... voids) { + ViewPrintJob printJob = new ViewPrintJob.Builder(). view(testView, width).build(); + printJob.print(getApplicationContext(), account, printer); + return null; + } + }.execute(); }); - imagePrintButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new AsyncTask() { - @Override - protected Void doInBackground(Void... voids) { - ImagePrintJob.Builder builder = new ImagePrintJob.Builder().bitmap(icon); - PrintJob imagePrintJob = builder.build(); - imagePrintJob.print(getApplicationContext(), account); - return null; - } - }.execute(); + imagePrintButton.setOnClickListener((v) -> { + if (selectedPrinter == null) { + return; } + + Printer printer = selectedPrinter; + + new AsyncTask() { + @Override + protected Void doInBackground(Void... voids) { + ImagePrintJob2 imagePrintJob = new ImagePrintJob2.Builder(getApplicationContext()).bitmap(icon).build(); + imagePrintJob.print(getApplicationContext(), account, printer); + return null; + } + }.execute(); }); } + /** * Fetch the list of all the connected printers. * @see PrinterConnector#getPrinter(String) @@ -215,18 +207,10 @@ private LinearLayout generateLayout(int viewWidth) { return mainLayout; } - public void layoutAndMeasureView(View view, int viewWidth) { - int measuredWidth = View.MeasureSpec.makeMeasureSpec(viewWidth, View.MeasureSpec.EXACTLY); - int measuredHeight = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED); - view.measure(measuredWidth, measuredHeight); - view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); - view.requestLayout(); - } - @Override - protected void onPause() { - super.onPause(); + protected void onDestroy() { disconnect(); + super.onDestroy(); } private void disconnect() { @@ -248,5 +232,4 @@ public void generateHeadLayout(LinearLayout mainLayout) { mainLayout.addView(merchantTv); } - } diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterListAdapter.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterListAdapter.java index 34e9a5cb9..e5a2008e3 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterListAdapter.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterListAdapter.java @@ -19,15 +19,16 @@ * @see PrintTaskTestActivity */ public class PrinterListAdapter extends RecyclerView.Adapter { - List printerList; - Context context; - private static ClickListener mClickListener; + + private final List printerList; + private final Context context; + private final CheckListener mCheckListener; private int selectedPosition = -1; - public PrinterListAdapter(Context context, List result, ClickListener mClickListener) { + public PrinterListAdapter(Context context, List result, CheckListener mCheckListener) { this.printerList = result; this.context = context; - this.mClickListener = mClickListener; + this.mCheckListener = mCheckListener; } @NonNull @@ -35,21 +36,25 @@ public PrinterListAdapter(Context context, List result, ClickListener m public PrinterViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View v = LayoutInflater.from(context) .inflate(R.layout.printer_adapter_layout, viewGroup, false); - PrinterViewHolder holder = new PrinterViewHolder(v, mClickListener); + PrinterViewHolder holder = new PrinterViewHolder(v, mCheckListener); return holder; } @Override - public void onBindViewHolder(@NonNull PrinterViewHolder printerViewHolder, int i) { - Printer item = printerList.get(i); + public void onBindViewHolder(@NonNull PrinterViewHolder printerViewHolder, int position) { + Printer item = printerList.get(position); printerViewHolder.tvId.setText(item.getUuid()); printerViewHolder.tvName.setText(item.getName()); int categoryIndex = item.getCategory().ordinal(); printerViewHolder.tvType.setText(Category.values()[categoryIndex].toString()); - if (selectedPosition == i) { - printerViewHolder.cbSelectedPrinter.setChecked(true); + if (selectedPosition == position) { + if (!printerViewHolder.cbSelectedPrinter.isChecked()) { + printerViewHolder.cbSelectedPrinter.performClick(); + } } else { - printerViewHolder.cbSelectedPrinter.setChecked(false); + if (printerViewHolder.cbSelectedPrinter.isChecked()) { + printerViewHolder.cbSelectedPrinter.performClick(); + } } } @@ -60,18 +65,18 @@ public int getItemCount() { public class PrinterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvId; - ClickListener mClickListener; + CheckListener mCheckListener; TextView tvName; TextView tvType; CheckBox cbSelectedPrinter; - public PrinterViewHolder(@NonNull View itemView, ClickListener clickListener) { + public PrinterViewHolder(@NonNull View itemView, CheckListener checkListener) { super(itemView); tvId = (TextView) itemView.findViewById(R.id.tvId); tvName = (TextView) itemView.findViewById(R.id.tvName); tvType = (TextView) itemView.findViewById(R.id.tvType); cbSelectedPrinter = (CheckBox) itemView.findViewById(R.id.cbPrinterSelect); - this.mClickListener = clickListener; + this.mCheckListener = checkListener; itemView.setOnClickListener(this); } @@ -80,14 +85,21 @@ public void onClick(View v) { if (getAdapterPosition() == RecyclerView.NO_POSITION) { return; } - notifyItemChanged(selectedPosition); - PrinterListAdapter.mClickListener.onItemClick(getAdapterPosition(), v); - selectedPosition = getAdapterPosition(); - notifyItemChanged(selectedPosition); + + if (cbSelectedPrinter.isChecked()) { + selectedPosition = -1; + mCheckListener.onItemUnchecked(); + } else { + selectedPosition = getAdapterPosition(); + mCheckListener.onItemChecked(getAdapterPosition(), v); + } + + PrinterListAdapter.this.notifyDataSetChanged(); } } - public interface ClickListener { - void onItemClick(int position, View v); + public interface CheckListener { + void onItemChecked(int position, View v); + void onItemUnchecked(); } } diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterTestActivity.java index e53a3c740..28226e069 100644 --- a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterTestActivity.java +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/PrinterTestActivity.java @@ -1,12 +1,12 @@ -/** +/* * Copyright (C) 2016 Clover Network, Inc. - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * + * https://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,17 +15,6 @@ */ package com.clover.android.sdk.examples; -import com.clover.sdk.util.CloverAccount; -import com.clover.sdk.v1.BindingException; -import com.clover.sdk.v1.ClientException; -import com.clover.sdk.v1.ResultStatus; -import com.clover.sdk.v1.ServiceConnector; -import com.clover.sdk.v1.ServiceException; -import com.clover.sdk.v1.printer.Category; -import com.clover.sdk.v1.printer.Printer; -import com.clover.sdk.v1.printer.PrinterConnector; -import com.clover.sdk.v1.printer.Type; - import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; @@ -42,10 +31,20 @@ import android.widget.RadioGroup; import android.widget.TextView; +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.BindingException; +import com.clover.sdk.v1.ClientException; +import com.clover.sdk.v1.ResultStatus; +import com.clover.sdk.v1.ServiceConnector; +import com.clover.sdk.v1.ServiceException; +import com.clover.sdk.v1.printer.Category; +import com.clover.sdk.v1.printer.Printer; +import com.clover.sdk.v1.printer.PrinterConnector; +import com.clover.sdk.v1.printer.Type; + import java.text.DateFormat; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Random; public class PrinterTestActivity extends Activity implements ServiceConnector.OnServiceConnectedListener { diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestActivity.java new file mode 100644 index 000000000..5590975e0 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestActivity.java @@ -0,0 +1,225 @@ +/** + * Copyright (C) 2020 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.clover.android.sdk.examples; + +import android.accounts.Account; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.database.Cursor; +import android.net.Uri; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.ResultStatus; +import com.clover.sdk.v1.printer.ReceiptRegistration; +import com.clover.sdk.v1.printer.ReceiptRegistrationConnector; +import com.clover.sdk.v1.printer.job.StaticPaymentPrintJob; +import com.clover.sdk.v3.order.Order; +import com.clover.sdk.v3.order.OrderConnector; +import com.clover.sdk.v3.order.OrderContract; + +import java.text.DateFormat; +import java.util.Date; +import java.util.List; + +@SuppressLint("StaticFieldLeak") +public class ReceiptRegistrationTestActivity extends Activity { + private Account account; + private ReceiptRegistrationConnector receiptRegistrationConnector; + private OrderConnector orderConnector; + + private TextView textAddStatus; + private EditText editRegister; + private Button buttonRegister; + + private TextView textGetStatus; + private TextView textGetResult; + private Button buttonGet; + + private EditText editPrint; + private Button buttonPrint; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_receipt_registration_test); + + account = CloverAccount.getAccount(getApplicationContext()); + + connect(); + + textAddStatus = findViewById(R.id.text_add_status); + editRegister = findViewById(R.id.edit_register); + editRegister.setText(ReceiptRegistrationTestProvider.CONTENT_URI_IMAGE.toString()); + buttonRegister = findViewById(R.id.button_register); + buttonRegister.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + receiptRegistrationConnector.register(Uri.parse(editRegister.getText().toString()), + new ReceiptRegistrationConnector.ReceiptRegistrationCallback() { + @Override + public void onServiceSuccess(Void result, ResultStatus status) { + super.onServiceSuccess(result, status); + updateAdd(status); + } + + @Override + public void onServiceFailure(ResultStatus status) { + super.onServiceFailure(status); + updateAdd(status); + } + + @Override + public void onServiceConnectionFailure() { + super.onServiceConnectionFailure(); + updateAdd(null); + } + }); + } + }); + + textGetStatus = findViewById(R.id.text_get_status); + textGetResult = findViewById(R.id.text_get_result); + buttonGet = findViewById(R.id.button_get); + buttonGet.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + receiptRegistrationConnector.getRegistrations(new ReceiptRegistrationConnector.ReceiptRegistrationCallback>() { + @Override + public void onServiceSuccess(List result, ResultStatus status) { + super.onServiceSuccess(result, status); + updateGet(status, result); + } + + @Override + public void onServiceFailure(ResultStatus status) { + super.onServiceFailure(status); + updateGet(status, null); + } + + @Override + public void onServiceConnectionFailure() { + super.onServiceConnectionFailure(); + updateGet(null, null); + } + }); + } + }); + + editPrint = findViewById(R.id.edit_print); + buttonPrint = findViewById(R.id.button_print); + buttonPrint.setOnClickListener(view -> { + final String orderId = editPrint.getText().toString().toUpperCase(); + + new AsyncTask() { + @Override + protected Order doInBackground(Void... voids) { + try { + return orderConnector.getOrder(orderId); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + protected void onPostExecute(Order order) { + if (order != null) { + new StaticPaymentPrintJob.Builder() + .order(order) + .build().print(ReceiptRegistrationTestActivity.this, account); + } + } + }.execute(); + }); + } + + private void updateAdd(ResultStatus resultStatus) { + textAddStatus.setText(""); + } + + private void updateGet(ResultStatus resultStatus, List result) { + textGetStatus.setText(""); + if (result != null) { + textGetResult.setText(result.toString()); + } else { + textGetResult.setText(""); + } + } + + + @Override + protected void onResume() { + super.onResume(); + + new AsyncTask() { + @Override + protected String doInBackground(Void... voids) { + return getLastPaidOrderId(); + } + + @Override + protected void onPostExecute(String orderId) { + editPrint.setText(orderId); + } + }.execute(); + } + + @Override + protected void onDestroy() { + disconnect(); + super.onDestroy(); + } + + private void connect() { + disconnect(); + + receiptRegistrationConnector = new ReceiptRegistrationConnector(this, account, null); + receiptRegistrationConnector.connect(); + + orderConnector = new OrderConnector(getApplicationContext(), + CloverAccount.getAccount(getApplicationContext()), null); + orderConnector.connect(); + + } + + private void disconnect() { + if (receiptRegistrationConnector != null) { + receiptRegistrationConnector.disconnect(); + receiptRegistrationConnector = null; + } + if (orderConnector != null) { + orderConnector.disconnect(); + orderConnector = null; + } + } + + private String getLastPaidOrderId() { + try (Cursor c = getContentResolver().query(OrderContract.Summaries.contentUriWithAccount(account), + null, OrderContract.Summaries.AMOUNT_PAID + " IS NOT NULL", + null, null)) { + if (c == null || !c.moveToLast()) { + return null; + } + return c.getString(c.getColumnIndex(OrderContract.Summaries.ID)); + } + } +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestProvider.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestProvider.java new file mode 100644 index 000000000..a079084f8 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/ReceiptRegistrationTestProvider.java @@ -0,0 +1,129 @@ +/** + * Copyright (C) 2020 Clover Network, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.clover.android.sdk.examples; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.ParcelFileDescriptor; +import com.clover.sdk.v1.printer.ReceiptContract; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +public class ReceiptRegistrationTestProvider extends ContentProvider { + public static final String AUTHORITY = "com.clover.android.sdk.examples.receipt"; + public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY); + + public static final String CONTENT_DIRECTORY_IMAGE = "image"; + public static final Uri CONTENT_URI_IMAGE = Uri.withAppendedPath(AUTHORITY_URI, CONTENT_DIRECTORY_IMAGE); + + public static final String CONTENT_DIRECTORY_TEXT = "text"; + public static final Uri CONTENT_URI_TEXT = Uri.withAppendedPath(AUTHORITY_URI, CONTENT_DIRECTORY_TEXT); + + private static final int TEXT = 0; + private static final int IMAGE = 1; + + private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); + + static { + uriMatcher.addURI(AUTHORITY, CONTENT_DIRECTORY_TEXT, TEXT); + uriMatcher.addURI(AUTHORITY, CONTENT_DIRECTORY_IMAGE, IMAGE); + } + + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor query(Uri uri, String[] strings, String s, String[] strings2, String s2) { + switch (uriMatcher.match(uri)) { + case TEXT: + MatrixCursor cursor = new MatrixCursor(new String[]{ReceiptContract.Text._ID, ReceiptContract.Text.TEXT}); + + String orderId = uri.getQueryParameter(ReceiptContract.PARAM_ORDER_ID); + String accountName = uri.getQueryParameter(ReceiptContract.PARAM_ACCOUNT_NAME); + String accountType = uri.getQueryParameter(ReceiptContract.PARAM_ACCOUNT_TYPE); + + String text = String.format("Hello, custom receipt.\nOrder ID: %s\nAccount name: %s\nAccount type: %s", orderId, accountName, accountType); + + cursor.addRow(new Object[]{0, text}); + return cursor; + + default: + throw new IllegalArgumentException("unknown uri: " + uri); + } + } + + @Override + public String getType(Uri uri) { + switch (uriMatcher.match(uri)) { + case TEXT: + return ReceiptContract.Text.CONTENT_TYPE; + case IMAGE: + return ReceiptContract.Image.CONTENT_TYPE; + default: + throw new IllegalArgumentException("unknown URI " + uri); + } + } + + @Override + public Uri insert(Uri uri, ContentValues contentValues) { + throw new UnsupportedOperationException(); + } + + @Override + public int delete(Uri uri, String s, String[] strings) { + throw new UnsupportedOperationException(); + } + + @Override + public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { + throw new UnsupportedOperationException(); + } + + @Override + public ParcelFileDescriptor openFile(Uri uri, String mode) { + Bitmap b = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.clover_logo); + + OutputStream os = null; + try { + File f = File.createTempFile("clover-logo", ".png", new File("/sdcard")); + os = new FileOutputStream(f); + b.compress(Bitmap.CompressFormat.PNG, 100, os); + return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e) { + } + } + } + return null; + } +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/SaleRefundTestActivity.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/SaleRefundTestActivity.java new file mode 100644 index 000000000..dfa7ba42a --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/SaleRefundTestActivity.java @@ -0,0 +1,195 @@ +package com.clover.android.sdk.examples; + +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.BindingException; +import com.clover.sdk.v1.ClientException; +import com.clover.sdk.v1.Intents; +import com.clover.sdk.v1.ServiceException; +import com.clover.sdk.v1.merchant.Merchant; +import com.clover.sdk.v3.order.LineItem; +import com.clover.sdk.v3.order.Order; +import com.clover.sdk.v3.order.OrderConnector; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Looper; +import android.os.RemoteException; +import android.text.TextUtils; +import android.util.Log; +import android.widget.TextView; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import java.io.IOException; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +/** + * This test activity demonstrates use of the {@link com.clover.sdk.v1.Intents#ACTION_CLOVER_PAY} + * intent for making a sale or a refund. + */ +public class SaleRefundTestActivity extends AppCompatActivity { + + private static final String TAG = SaleRefundTestActivity.class.getSimpleName(); + + private static final int REQ_CODE_CLOVER_PAY = 101; + + private static final long AMOUNT = 10099; + + private TextView tvResult; + private TextView tvResultTitle; + private TextView tvAmount; + + private final Executor bgExecutor = Executors.newSingleThreadExecutor(); + + private Merchant merchant; + private CurrencyUtils currencyUtils; + private OrderConnector orderConnector; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Context ctx = getApplicationContext(); + + setContentView(R.layout.activity_salerefund_test); + tvResult = findViewById(R.id.text_result); + tvResultTitle = findViewById(R.id.text_result_title); + tvAmount = findViewById(R.id.text_amount); + + bgExecutor.execute(() -> { + try { + merchant = Utils.fetchMerchantBlocking(ctx); + } catch (IOException e) { + e.printStackTrace(); + SaleRefundTestActivity.this.finish(); + return; + } + + runOnUiThread(() -> { + currencyUtils = new CurrencyUtils(ctx, merchant); + orderConnector = new OrderConnector(ctx, CloverAccount.getAccount(ctx), null); + + tvAmount.setText(currencyUtils.longToAmountString(AMOUNT)); + + findViewById(R.id.btn_sale).setOnClickListener((view) -> { + bgExecutor.execute(() -> startPayment(AMOUNT)); + }); + + findViewById(R.id.btn_refund).setOnClickListener((view) -> { + bgExecutor.execute(() -> startPayment(-AMOUNT)); + }); + }); + }); + } + + private void startPayment(long amount) { + try { + boolean taxable = true; + LineItem customLineItem = new LineItem(); + customLineItem.setName("Manual Transaction"); + customLineItem.setPrice(amount); + + Order order = new Order().setManualTransaction(true); + order = orderConnector.createOrder(order); + customLineItem = orderConnector.addCustomLineItem(order.getId(), customLineItem, taxable); + order = orderConnector.getOrder(order.getId()); + + startPayment(order); + } catch (RemoteException | ClientException | ServiceException | BindingException e) { + Log.w(TAG, e); + } + } + + private void startPayment(Order o) { + Intent intent = new Intent(Intents.ACTION_CLOVER_PAY); + intent.putExtra(Intents.EXTRA_ORDER_ID, o.getId()); + if (o.getTotal() < 0) { + intent.putExtra(Intents.EXTRA_TRANSACTION_TYPE, Intents.TRANSACTION_TYPE_CREDIT); + } + startActivityForResult(intent, REQ_CODE_CLOVER_PAY); + } + + private Order getOrder(String orderId) { + try { + return orderConnector.getOrder(orderId); + } catch (RemoteException | ClientException | ServiceException | BindingException e) { + Log.w(TAG, e); + } + return null; + } + + private void deleteOrder(String orderId) { + try { + orderConnector.deleteOrder(orderId); + } catch (RemoteException | ClientException | ServiceException | BindingException e) { + Log.w(TAG, e); + } + } + + private void setResultTextSafe(String result) { + if (Looper.getMainLooper().getThread() == Thread.currentThread()) { + setResultText(result); + } else { + runOnUiThread(() -> setResultText(result)); + } + } + + private void setResultText(String result) { + if (TextUtils.isEmpty(result)) { + tvResultTitle.setText(""); + } else { + tvResultTitle.setText("Result"); + } + tvResult.setText(result); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + setResultTextSafe(""); + + if (requestCode != REQ_CODE_CLOVER_PAY) { + return; + } + + bgExecutor.execute(() -> { + String orderId = data == null ? null : data.getStringExtra(Intents.EXTRA_ORDER_ID); + if (TextUtils.isEmpty(orderId)) { + setResultTextSafe(String.format("Pay failed, missing order id\n\n%s", Utils.intentToString(data))); + return; + } + + Order order = getOrder(orderId); + if (order == null) { + setResultTextSafe(String.format("Pay failed, order not found\n\n%s", Utils.intentToString(data))); + return; + } + + if (resultCode != RESULT_OK) { + deleteOrder(orderId); + setResultTextSafe(String.format("Pay failed\n\n%s", order)); + return; + } + + if (OrderUtils.isFullyPaid(order)) { + setResultTextSafe(String.format("Complete payment\n\n%s", order)); + } else { + setResultTextSafe(String.format("Partial payment\n\n%s", order)); + } + }); + } + + @Override + protected void onDestroy() { + if (orderConnector != null) { + orderConnector.disconnect(); + orderConnector = null; + } + + super.onDestroy(); + } +} diff --git a/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/Utils.java b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/Utils.java new file mode 100644 index 000000000..864266688 --- /dev/null +++ b/clover-android-sdk-examples/src/main/java/com/clover/android/sdk/examples/Utils.java @@ -0,0 +1,101 @@ +package com.clover.android.sdk.examples; + +import com.clover.sdk.util.CloverAccount; +import com.clover.sdk.v1.merchant.Merchant; +import com.clover.sdk.v1.merchant.MerchantConnector; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Parcelable; +import androidx.annotation.NonNull; + +import java.io.IOException; +import java.util.Arrays; + +public final class Utils { + + private Utils() { } + + @NonNull + public static Merchant fetchMerchantBlocking(Context ctx) throws IOException { + MerchantConnector mc = null; + try { + mc = new MerchantConnector(ctx, CloverAccount.getAccount(ctx), null); + Merchant merchant = mc.getMerchant(); + if (merchant != null) { + return merchant; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + mc.disconnect(); + } + + throw new IOException("No merchant, are Clover services running?"); + } + + + public static String intentToString(Intent intent) { + if (intent == null) { + return null; + } + + return intent.toString() + " " + bundleToString(intent.getExtras()); + } + + public static String bundleToString(Bundle bundle) { + StringBuilder out = new StringBuilder("Bundle["); + + if (bundle == null) { + out.append("null"); + } else { + try { + boolean first = true; + for (String key : bundle.keySet()) { + if (!first) { + out.append(", "); + } + + out.append(key).append('='); + + Object value = bundle.get(key); + + if (value instanceof int[]) { + out.append(Arrays.toString((int[]) value)); + } else if (value instanceof byte[]) { + out.append(Arrays.toString((byte[]) value)); + } else if (value instanceof boolean[]) { + out.append(Arrays.toString((boolean[]) value)); + } else if (value instanceof short[]) { + out.append(Arrays.toString((short[]) value)); + } else if (value instanceof long[]) { + out.append(Arrays.toString((long[]) value)); + } else if (value instanceof float[]) { + out.append(Arrays.toString((float[]) value)); + } else if (value instanceof double[]) { + out.append(Arrays.toString((double[]) value)); + } else if (value instanceof String[]) { + out.append(Arrays.toString((String[]) value)); + } else if (value instanceof CharSequence[]) { + out.append(Arrays.toString((CharSequence[]) value)); + } else if (value instanceof Parcelable[]) { + out.append(Arrays.toString((Parcelable[]) value)); + } else if (value instanceof Bundle) { + out.append(bundleToString((Bundle) value)); + } else { + out.append(value); + } + + first = false; + } + } catch (Exception e) { + return "Bundle[could not unparcel extras]"; + } + } + + out.append("]"); + return out.toString(); + } + +} diff --git a/clover-android-sdk-examples/src/main/res/drawable/clover_logo.png b/clover-android-sdk-examples/src/main/res/drawable/clover_logo.png index f2e8d801e6c99c9fac904461b487f2c7be9f69d0..956b02e24462b76fe7896c897c5c99efcc198bbc 100644 GIT binary patch literal 1635 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 QZf^jT + + +