|  1:  | <?php | 
|  2:  |  | 
|  3:  | declare(strict_types=1); | 
|  4:  |  | 
|  5:  |  | 
|  6:  |  | 
|  7:  |  | 
|  8:  |  | 
|  9:  |  | 
| 10:  |  | 
| 11:  | namespace NxSys\Library\Clients\Brex\API\Payments\Normalizer; | 
| 12:  |  | 
| 13:  | use NxSys\Library\Clients\Brex\API\Payments\Runtime\Normalizer\CheckArray; | 
| 14:  | use NxSys\Library\Clients\Brex\API\Payments\Runtime\Normalizer\ValidatorTrait; | 
| 15:  | use Symfony\Component\Serializer\Normalizer\DenormalizerAwareInterface; | 
| 16:  | use Symfony\Component\Serializer\Normalizer\DenormalizerAwareTrait; | 
| 17:  | use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; | 
| 18:  | use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface; | 
| 19:  | use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; | 
| 20:  | use Symfony\Component\Serializer\Normalizer\NormalizerInterface; | 
| 21:  |  | 
| 22:  | class JaneObjectNormalizer implements DenormalizerInterface, NormalizerInterface, DenormalizerAwareInterface, NormalizerAwareInterface | 
| 23:  | { | 
| 24:  |     use DenormalizerAwareTrait; | 
| 25:  |     use NormalizerAwareTrait; | 
| 26:  |     use CheckArray; | 
| 27:  |     use ValidatorTrait; | 
| 28:  |     protected $normalizers = ['NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\ACHDetailsRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\ACHDetailsRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\ACHDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\ACHDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\Address' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\AddressNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\Balance' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BalanceNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankAccountDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankAccountDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankAccountDetailsResponsebeneficiaryBank' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankAccountDetailsResponsebeneficiaryBankNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankConnection' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankConnectionNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankConnectionAvailableBalance' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankConnectionAvailableBalanceNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankConnectionCurrentBalance' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankConnectionCurrentBalanceNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BankDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BankDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BeneficiaryBank' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BeneficiaryBankNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BeneficiaryBankAddress' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BeneficiaryBankAddressNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BookTransferDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BookTransferDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BookTransferDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BookTransferDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BrexCashAccountDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BrexCashAccountDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BrexCashAccountDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BrexCashAccountDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\BrexCashDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\BrexCashDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\ChequeDetailsRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\ChequeDetailsRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\ChequeDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\ChequeDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\CounterPartyBankDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\CounterPartyBankDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\CreateIncomingTransferRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\CreateIncomingTransferRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\CreateTransferRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\CreateTransferRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\CreateVendorRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\CreateVendorRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\DomesticWireDetailsRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\DomesticWireDetailsRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\DomesticWireDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\DomesticWireDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\InternationalWireDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\InternationalWireDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\Money' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\MoneyNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\PageBankConnection' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\PageBankConnectionNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\PageTransfer' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\PageTransferNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\PageVendorResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\PageVendorResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\PaymentAccountRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\PaymentAccountRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\PaymentAccountResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\PaymentAccountResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\Recipient' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\RecipientNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\Transfer' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\TransferNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\TransferCounterparty' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\TransferCounterpartyNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\UpdateVendorRequest' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\UpdateVendorRequestNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\VendorDetails' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\VendorDetailsNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\VendorDetailsResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\VendorDetailsResponseNormalizer', 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Model\\VendorResponse' => 'NxSys\\Library\\Clients\\Brex\\API\\Payments\\Normalizer\\VendorResponseNormalizer', '\\Jane\\Component\\JsonSchemaRuntime\\Reference' => '\\NxSys\\Library\\Clients\\Brex\\API\\Payments\\Runtime\\Normalizer\\ReferenceNormalizer']; | 
| 29:  |     protected $normalizersCache = []; | 
| 30:  |  | 
| 31:  |     public function supportsDenormalization($data, $type, $format = null): bool | 
| 32:  |     { | 
| 33:  |         return array_key_exists($type, $this->normalizers); | 
| 34:  |     } | 
| 35:  |  | 
| 36:  |     public function supportsNormalization($data, $format = null): bool | 
| 37:  |     { | 
| 38:  |         return is_object($data) && array_key_exists(get_class($data), $this->normalizers); | 
| 39:  |     } | 
| 40:  |  | 
| 41:  |      | 
| 42:  |  | 
| 43:  |  | 
| 44:  |     public function normalize($object, $format = null, array $context = []) | 
| 45:  |     { | 
| 46:  |         $normalizerClass = $this->normalizers[get_class($object)]; | 
| 47:  |         $normalizer = $this->getNormalizer($normalizerClass); | 
| 48:  |  | 
| 49:  |         return $normalizer->normalize($object, $format, $context); | 
| 50:  |     } | 
| 51:  |  | 
| 52:  |      | 
| 53:  |  | 
| 54:  |  | 
| 55:  |     public function denormalize($data, $class, $format = null, array $context = []) | 
| 56:  |     { | 
| 57:  |         $denormalizerClass = $this->normalizers[$class]; | 
| 58:  |         $denormalizer = $this->getNormalizer($denormalizerClass); | 
| 59:  |  | 
| 60:  |         return $denormalizer->denormalize($data, $class, $format, $context); | 
| 61:  |     } | 
| 62:  |  | 
| 63:  |     private function getNormalizer(string $normalizerClass) | 
| 64:  |     { | 
| 65:  |         return $this->normalizersCache[$normalizerClass] ?? $this->initNormalizer($normalizerClass); | 
| 66:  |     } | 
| 67:  |  | 
| 68:  |     private function initNormalizer(string $normalizerClass) | 
| 69:  |     { | 
| 70:  |         $normalizer = new $normalizerClass(); | 
| 71:  |         $normalizer->setNormalizer($this->normalizer); | 
| 72:  |         $normalizer->setDenormalizer($this->denormalizer); | 
| 73:  |         $this->normalizersCache[$normalizerClass] = $normalizer; | 
| 74:  |  | 
| 75:  |         return $normalizer; | 
| 76:  |     } | 
| 77:  | } | 
| 78:  |  |