diff --git a/basenode/src/main/java/io/coti/basenode/data/MintingFeeQuoteData.java b/basenode/src/main/java/io/coti/basenode/data/MintingFeeQuoteData.java index 0e9c6c1db..355304557 100644 --- a/basenode/src/main/java/io/coti/basenode/data/MintingFeeQuoteData.java +++ b/basenode/src/main/java/io/coti/basenode/data/MintingFeeQuoteData.java @@ -26,7 +26,7 @@ public class MintingFeeQuoteData implements ISignable, ISignValidatable, Seriali @NotNull private @Valid SignatureData signatureData; - private MintingFeeQuoteData() { + public MintingFeeQuoteData() { } public MintingFeeQuoteData(Hash currencyHash, Instant createTime, BigDecimal mintingAmount, BigDecimal mintingFee) { diff --git a/basenode/src/main/java/io/coti/basenode/data/TokenMintingServiceData.java b/basenode/src/main/java/io/coti/basenode/data/TokenMintingServiceData.java index 2e4a76f40..368e98ebd 100644 --- a/basenode/src/main/java/io/coti/basenode/data/TokenMintingServiceData.java +++ b/basenode/src/main/java/io/coti/basenode/data/TokenMintingServiceData.java @@ -27,7 +27,7 @@ public class TokenMintingServiceData implements ITokenServiceData, ISignValidata @NotNull private @Valid SignatureData signature; - private TokenMintingServiceData() { + public TokenMintingServiceData() { } @Override diff --git a/basenode/src/main/java/io/coti/basenode/http/GetTokenBalancesResponse.java b/basenode/src/main/java/io/coti/basenode/http/GetTokenBalancesResponse.java index 1f11a305b..4357ad4c5 100644 --- a/basenode/src/main/java/io/coti/basenode/http/GetTokenBalancesResponse.java +++ b/basenode/src/main/java/io/coti/basenode/http/GetTokenBalancesResponse.java @@ -13,6 +13,10 @@ public class GetTokenBalancesResponse extends BaseResponse { private Map> tokenBalances; + public GetTokenBalancesResponse() { + super(); + } + public GetTokenBalancesResponse(Map> tokenBalances) { this.tokenBalances = tokenBalances; } diff --git a/basenode/src/main/java/io/coti/basenode/http/GetTokenHistoryResponse.java b/basenode/src/main/java/io/coti/basenode/http/GetTokenHistoryResponse.java index 528134d14..60d51f6d2 100644 --- a/basenode/src/main/java/io/coti/basenode/http/GetTokenHistoryResponse.java +++ b/basenode/src/main/java/io/coti/basenode/http/GetTokenHistoryResponse.java @@ -12,6 +12,10 @@ public class GetTokenHistoryResponse extends BaseResponse { private Set transactions; + public GetTokenHistoryResponse() { + super(); + } + public GetTokenHistoryResponse(Set transactions) { this.transactions = transactions; } diff --git a/basenode/src/main/java/io/coti/basenode/http/GetUserTrustScoreResponse.java b/basenode/src/main/java/io/coti/basenode/http/GetUserTrustScoreResponse.java index 91c027f3f..fd4eb867f 100644 --- a/basenode/src/main/java/io/coti/basenode/http/GetUserTrustScoreResponse.java +++ b/basenode/src/main/java/io/coti/basenode/http/GetUserTrustScoreResponse.java @@ -11,6 +11,10 @@ public class GetUserTrustScoreResponse extends BaseResponse { private double trustScore; private String userType; + public GetUserTrustScoreResponse() { + super(); + } + public GetUserTrustScoreResponse(String userHash, double trustScore, String userType) { this.userHash = userHash; this.trustScore = trustScore; diff --git a/basenode/src/main/java/io/coti/basenode/http/data/AddressBalanceData.java b/basenode/src/main/java/io/coti/basenode/http/data/AddressBalanceData.java index 310227474..a9be57201 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/AddressBalanceData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/AddressBalanceData.java @@ -11,6 +11,9 @@ public class AddressBalanceData implements Serializable { private BigDecimal addressBalance; private BigDecimal addressPreBalance; + public AddressBalanceData() { + } + public AddressBalanceData(BigDecimal addressBalance, BigDecimal addressPreBalance) { this.addressBalance = addressBalance; this.addressPreBalance = addressPreBalance; diff --git a/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseClass.java b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseClass.java index 27651ddd3..f341fcac1 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseClass.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseClass.java @@ -20,4 +20,13 @@ BaseTransactionResponseClass(Class re public Class getResponseClass() { return responseClass; } + + public static BaseTransactionResponseClass getName(Class baseTransactionClass) { + for (BaseTransactionResponseClass name : values()) { + if (name.getResponseClass() == baseTransactionClass) { + return name; + } + } + return null; + } } diff --git a/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseData.java index 9e0eb9c7d..dbbf032c3 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseData.java @@ -1,6 +1,8 @@ package io.coti.basenode.http.data; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver; import io.coti.basenode.data.BaseTransactionData; import io.coti.basenode.data.BaseTransactionName; import io.coti.basenode.http.data.interfaces.IResponseData; @@ -10,6 +12,8 @@ import java.time.Instant; @Data +@JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM, property = "name") +@JsonTypeIdResolver(BaseTransactionResponseDataResolver.class) public abstract class BaseTransactionResponseData implements IResponseData { private String hash; diff --git a/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseDataResolver.java b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseDataResolver.java new file mode 100644 index 000000000..99a4e5594 --- /dev/null +++ b/basenode/src/main/java/io/coti/basenode/http/data/BaseTransactionResponseDataResolver.java @@ -0,0 +1,38 @@ +package io.coti.basenode.http.data; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.DatabindContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase; + +public class BaseTransactionResponseDataResolver extends TypeIdResolverBase { + + @Override + public String idFromValue(Object value) { + return idFromValueAndType(value, value.getClass()); + } + + @Override + public String idFromValueAndType(Object value, Class suggestedType) { + BaseTransactionResponseClass baseTransactionResponseClass = BaseTransactionResponseClass.getName(suggestedType); + if (baseTransactionResponseClass == null) { + throw new IllegalStateException("Invalid base transaction class " + suggestedType); + } + return baseTransactionResponseClass.name(); + } + + @Override + public JsonTypeInfo.Id getMechanism() { + return JsonTypeInfo.Id.CUSTOM; + } + + @Override + public JavaType typeFromId(DatabindContext context, String id) { + try { + BaseTransactionResponseClass baseTransactionResponse = BaseTransactionResponseClass.valueOf(id); + return context.constructType(baseTransactionResponse.getResponseClass()); + } catch (IllegalArgumentException e) { + throw new IllegalStateException("Invalid base transaction name " + id, e); + } + } +} diff --git a/basenode/src/main/java/io/coti/basenode/http/data/CurrencyTypeResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/CurrencyTypeResponseData.java index 1098f976e..51115c7d3 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/CurrencyTypeResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/CurrencyTypeResponseData.java @@ -20,6 +20,9 @@ public class CurrencyTypeResponseData implements ITransactionResponseData { protected String signerHash; protected SignatureData signature; + public CurrencyTypeResponseData() { + } + public CurrencyTypeResponseData(CurrencyTypeData currencyTypeData) { this.setCurrencyType(currencyTypeData.getCurrencyType()); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/EventInputBaseTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/EventInputBaseTransactionResponseData.java index 49cba4f1e..d3427fcb5 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/EventInputBaseTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/EventInputBaseTransactionResponseData.java @@ -12,6 +12,10 @@ public class EventInputBaseTransactionResponseData extends BaseTransactionRespon protected String event; protected boolean hardFork; + public EventInputBaseTransactionResponseData() { + super(); + } + public EventInputBaseTransactionResponseData(BaseTransactionData baseTransactionData) { super(baseTransactionData); EventInputBaseTransactionData eventInputBaseTransactionData = (EventInputBaseTransactionData) baseTransactionData; diff --git a/basenode/src/main/java/io/coti/basenode/http/data/ExtendedTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/ExtendedTransactionResponseData.java index f60706563..bd1a0a7c3 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/ExtendedTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/ExtendedTransactionResponseData.java @@ -10,6 +10,10 @@ public class ExtendedTransactionResponseData extends TransactionResponseData { private String nodeHash; + public ExtendedTransactionResponseData() { + super(); + } + public ExtendedTransactionResponseData(TransactionData transactionData) { super(transactionData); this.nodeHash = transactionData.getNodeHash().toString(); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/FullNodeFeeResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/FullNodeFeeResponseData.java index 8fb7770e2..5f0dd45fa 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/FullNodeFeeResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/FullNodeFeeResponseData.java @@ -8,6 +8,10 @@ @EqualsAndHashCode(callSuper = true) public class FullNodeFeeResponseData extends OutputBaseTransactionResponseData { + public FullNodeFeeResponseData() { + super(); + } + public FullNodeFeeResponseData(BaseTransactionData baseTransactionData) { super(baseTransactionData); } diff --git a/basenode/src/main/java/io/coti/basenode/http/data/NetworkFeeResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/NetworkFeeResponseData.java index 8cbc0f50f..185235aab 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/NetworkFeeResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/NetworkFeeResponseData.java @@ -17,6 +17,10 @@ public class NetworkFeeResponseData extends OutputBaseTransactionResponseData { private BigDecimal reducedAmount; private List networkFeeTrustScoreNodeResult; + public NetworkFeeResponseData() { + super(); + } + public NetworkFeeResponseData(BaseTransactionData baseTransactionData) { super(baseTransactionData); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/OriginatorCurrencyResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/OriginatorCurrencyResponseData.java index 4b9563860..d9410e46a 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/OriginatorCurrencyResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/OriginatorCurrencyResponseData.java @@ -18,6 +18,9 @@ public class OriginatorCurrencyResponseData implements ITransactionResponseData protected SignatureData originatorSignature; private String description; + public OriginatorCurrencyResponseData() { + } + public OriginatorCurrencyResponseData(OriginatorCurrencyData originatorCurrencyData) { this.setName(originatorCurrencyData.getName()); this.setSymbol(originatorCurrencyData.getSymbol()); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/ReceiverBaseTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/ReceiverBaseTransactionResponseData.java index c43dce18a..f32fbc563 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/ReceiverBaseTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/ReceiverBaseTransactionResponseData.java @@ -11,6 +11,10 @@ public class ReceiverBaseTransactionResponseData extends OutputBaseTransactionRe private String receiverDescription; + public ReceiverBaseTransactionResponseData() { + super(); + } + public ReceiverBaseTransactionResponseData(BaseTransactionData baseTransactionData) { super(baseTransactionData); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/ReducedTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/ReducedTransactionResponseData.java index 8b22293f1..18c04bd92 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/ReducedTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/ReducedTransactionResponseData.java @@ -14,6 +14,9 @@ public class ReducedTransactionResponseData implements ITransactionResponseData private boolean sent; private boolean received; + public ReducedTransactionResponseData() { + } + public ReducedTransactionResponseData(TransactionData transactionData, Hash addressHash) { hash = transactionData.getHash().toHexString(); attachmentTime = transactionData.getAttachmentTime(); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/RejectedTransactionResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/RejectedTransactionResponseData.java index d6ea57d89..9ca46c3e7 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/RejectedTransactionResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/RejectedTransactionResponseData.java @@ -13,6 +13,10 @@ public class RejectedTransactionResponseData extends ExtendedTransactionResponse private Instant rejectionTime; private String rejectionReasonDescription; + public RejectedTransactionResponseData() { + super(); + } + public RejectedTransactionResponseData(RejectedTransactionData rejectedTransaction) { super(rejectedTransaction.getTransactionData()); this.rejectionTime = rejectedTransaction.getRejectionTime(); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/RollingReserveResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/RollingReserveResponseData.java index 51bbdbdf3..63e3a6f26 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/RollingReserveResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/RollingReserveResponseData.java @@ -17,6 +17,10 @@ public class RollingReserveResponseData extends OutputBaseTransactionResponseDat private BigDecimal reducedAmount; private List rollingReserveTrustScoreNodeResult; + public RollingReserveResponseData() { + super(); + } + public RollingReserveResponseData(BaseTransactionData baseTransactionData) { super(baseTransactionData); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/TokenGenerationServiceResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/TokenGenerationServiceResponseData.java index c1e36d442..9105d8ef0 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/TokenGenerationServiceResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/TokenGenerationServiceResponseData.java @@ -14,6 +14,9 @@ public class TokenGenerationServiceResponseData implements ITransactionResponseD private CurrencyTypeResponseData currencyTypeData; private BigDecimal feeAmount; + public TokenGenerationServiceResponseData() { + } + public TokenGenerationServiceResponseData(BaseTransactionData baseTransactionData) { originatorCurrencyData = new OriginatorCurrencyResponseData(((TokenGenerationFeeBaseTransactionData) baseTransactionData).getServiceData().getOriginatorCurrencyData()); currencyTypeData = new CurrencyTypeResponseData(((TokenGenerationFeeBaseTransactionData) baseTransactionData).getServiceData().getCurrencyTypeData()); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/TokenMintingServiceResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/TokenMintingServiceResponseData.java index 83a46b7fb..c62fc3434 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/TokenMintingServiceResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/TokenMintingServiceResponseData.java @@ -21,6 +21,9 @@ public class TokenMintingServiceResponseData implements ITransactionResponseData private String signerHash; private SignatureData signature; + public TokenMintingServiceResponseData() { + } + public TokenMintingServiceResponseData(BaseTransactionData baseTransactionData) { TokenMintingServiceData tokenMintingServiceData = ((TokenMintingFeeBaseTransactionData) baseTransactionData).getServiceData(); this.setMintingAmount(tokenMintingServiceData.getMintingAmount()); diff --git a/basenode/src/main/java/io/coti/basenode/http/data/TokenResponseData.java b/basenode/src/main/java/io/coti/basenode/http/data/TokenResponseData.java index fa056be8e..7a835b22b 100644 --- a/basenode/src/main/java/io/coti/basenode/http/data/TokenResponseData.java +++ b/basenode/src/main/java/io/coti/basenode/http/data/TokenResponseData.java @@ -34,6 +34,9 @@ public class TokenResponseData implements IResponseData { private BigDecimal mintedAmount; private BigDecimal mintableAmount; + public TokenResponseData() { + } + public TokenResponseData(CurrencyData token) { this.currencyName = token.getName(); this.currencySymbol = token.getSymbol();