fromXdr method Null safety
- XdrAsset xdrAsset
Generates an Asset object from a given XDR object xdrAsset
.
Implementation
static Asset fromXdr(XdrAsset xdrAsset) {
switch (xdrAsset.discriminant) {
case XdrAssetType.ASSET_TYPE_NATIVE:
return new AssetTypeNative();
case XdrAssetType.ASSET_TYPE_CREDIT_ALPHANUM4:
String assetCode4 = Util.paddedByteArrayToString(xdrAsset.alphaNum4!.assetCode);
KeyPair issuer4 = KeyPair.fromXdrPublicKey(xdrAsset.alphaNum4!.issuer.accountID);
return AssetTypeCreditAlphaNum4(assetCode4, issuer4.accountId);
case XdrAssetType.ASSET_TYPE_CREDIT_ALPHANUM12:
String assetCode12 = Util.paddedByteArrayToString(xdrAsset.alphaNum12!.assetCode);
KeyPair issuer12 = KeyPair.fromXdrPublicKey(xdrAsset.alphaNum12!.issuer.accountID);
return AssetTypeCreditAlphaNum12(assetCode12, issuer12.accountId);
case XdrAssetType.ASSET_TYPE_POOL_SHARE:
if (xdrAsset is XdrChangeTrustAsset) {
XdrAsset a = xdrAsset.liquidityPool!.constantProduct!.assetA;
XdrAsset b = xdrAsset.liquidityPool!.constantProduct!.assetB;
return AssetTypePoolShare(assetA: Asset.fromXdr(a), assetB:Asset.fromXdr(b));
} else {
throw Exception("Unknown pool share asset type");
}
default:
throw Exception("Unknown asset type ${xdrAsset.discriminant.toString()}");
}
}