Skip to content

Commit cef1f81

Browse files
authored
Fix/rename construction metadata properties (#117)
* fix: added ConstructionMetadataResponseMetadata Object to yaml and respective mapper. * fix: added ConstructionMetadataResponseMetadata Object to yaml and respective mapper. * fix: fixed mappers and removed unused fields like rho and tau. * chore: added PeristenceAnnotation to DataMapper. Added Test for new Mapper * fix: fixed setting of protocolversion as inner class
1 parent c3d75de commit cef1f81

File tree

7 files changed

+62
-29
lines changed

7 files changed

+62
-29
lines changed

api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/ProtocolParams.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
1313
import com.fasterxml.jackson.annotation.JsonInclude;
1414
import com.fasterxml.jackson.annotation.JsonProperty;
15+
import lombok.RequiredArgsConstructor;
1516

1617
@Data
1718
@NoArgsConstructor
@@ -75,14 +76,6 @@ public class ProtocolParams {
7576
private BigInteger drepDeposit; //31
7677
private Integer drepActivity; //32
7778

78-
private Double a0;
79-
private Double rho;
80-
private Double tau;
81-
@JsonProperty("eMax")
82-
private Integer eMax;
83-
@JsonProperty("maxUTxOValue")
84-
private Integer maxUTxOValue;
85-
8679
@Data
8780
public static class ExtraEntropy{
8881
String tag;

api/src/main/java/org/cardanofoundation/rosetta/api/construction/service/impl/ConstructionApiServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class ConstructionApiServiceImpl implements ConstructionApiService {
4141
private final CardanoAddressService cardanoAddressService;
4242
private final CardanoService cardanoService;
4343
private final LedgerDataProviderService ledgerService;
44+
private final DataMapper dataMapper;
4445

4546
@Override
4647
public ConstructionDeriveResponse constructionDeriveService(
@@ -112,7 +113,7 @@ public ConstructionMetadataResponse constructionMetadataService(
112113
protocolParams);
113114
Long suggestedFee = cardanoService.calculateTxMinimumFee(updatedTxSize, protocolParams);
114115
log.debug("[constructionMetadata] suggested fee is ${suggestedFee}");
115-
return DataMapper.mapToMetadataResponse(protocolParams, ttl, suggestedFee);
116+
return dataMapper.mapToMetadataResponse(protocolParams, ttl, suggestedFee);
116117
}
117118

118119
@Override

api/src/main/java/org/cardanofoundation/rosetta/api/network/service/impl/NetworkServiceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class NetworkServiceImpl implements NetworkService {
5050
private final RosettaConfig rosettaConfig;
5151

5252
private final LedgerDataProviderService ledgerDataProviderService;
53+
private final DataMapper datamapper;
5354

5455
@Value("${cardano.rosetta.TOPOLOGY_FILEPATH}")
5556
private String topologyFilepath;
@@ -79,7 +80,7 @@ private void validator( String path) throws ServerException {
7980
public NetworkListResponse getNetworkList(MetadataRequest metadataRequest) {
8081
log.info("[networkList] Looking for all supported networks");
8182
Network supportedNetwork = getSupportedNetwork();
82-
return DataMapper.mapToNetworkListResponse(supportedNetwork);
83+
return datamapper.mapToNetworkListResponse(supportedNetwork);
8384
}
8485

8586
@Override
@@ -132,7 +133,7 @@ public NetworkStatusResponse getNetworkStatus(NetworkRequest networkRequest)
132133
log.debug("[networkStatus] Request received:" + networkRequest.toString());
133134
log.info("[networkStatus] Looking for latest block");
134135
NetworkStatus networkStatus = networkStatus();
135-
return DataMapper.mapToNetworkStatusResponse(networkStatus);
136+
return datamapper.mapToNetworkStatusResponse(networkStatus);
136137
}
137138

138139
@Override

api/src/main/java/org/cardanofoundation/rosetta/common/mapper/DataMapper.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package org.cardanofoundation.rosetta.common.mapper;
22

33
import com.bloxbean.cardano.client.common.model.Network;
4+
import java.math.BigDecimal;
5+
import lombok.RequiredArgsConstructor;
46
import lombok.extern.slf4j.Slf4j;
57
import org.apache.commons.codec.binary.Hex;
68
import org.apache.commons.lang3.ObjectUtils;
79
import org.cardanofoundation.rosetta.api.account.model.domain.AddressBalance;
810
import org.cardanofoundation.rosetta.api.account.model.domain.Utxo;
911
import org.cardanofoundation.rosetta.api.block.model.domain.*;
1012
import org.cardanofoundation.rosetta.api.block.model.domain.Block;
13+
import org.cardanofoundation.rosetta.common.annotation.PersistenceMapper;
1114
import org.cardanofoundation.rosetta.common.model.cardano.crypto.Signatures;
1215
import org.cardanofoundation.rosetta.common.util.Constants;
1316
import org.cardanofoundation.rosetta.api.block.model.domain.ProtocolParams;
@@ -19,18 +22,16 @@
1922

2023

2124
@Slf4j
22-
@Component
25+
@PersistenceMapper
26+
@RequiredArgsConstructor
2327
public class DataMapper {
24-
25-
private DataMapper() {
26-
}
27-
28+
private final ProtocolParamsToRosettaProtocolParameters protocolParamsToRosettaProtocolParameters;
2829
/**
2930
* Maps a NetworkRequest to a NetworkOptionsResponse.
3031
* @param supportedNetwork The supported network
3132
* @return The NetworkOptionsResponse
3233
*/
33-
public static NetworkListResponse mapToNetworkListResponse(Network supportedNetwork) {
34+
public NetworkListResponse mapToNetworkListResponse(Network supportedNetwork) {
3435
NetworkIdentifier identifier = NetworkIdentifier.builder().blockchain(Constants.CARDANO)
3536
.network(Objects.requireNonNull(
3637
NetworkEnum.fromProtocolMagic(supportedNetwork.getProtocolMagic())).getValue()).build();
@@ -42,7 +43,7 @@ public static NetworkListResponse mapToNetworkListResponse(Network supportedNetw
4243
* @param networkStatus The network status
4344
* @return The NetworkOptionsResponse
4445
*/
45-
public static NetworkStatusResponse mapToNetworkStatusResponse(NetworkStatus networkStatus) {
46+
public NetworkStatusResponse mapToNetworkStatusResponse(NetworkStatus networkStatus) {
4647
Block latestBlock = networkStatus.getLatestBlock();
4748
GenesisBlock genesisBlock = networkStatus.getGenesisBlock();
4849
List<Peer> peers = networkStatus.getPeers();
@@ -177,9 +178,12 @@ public static AccountCoinsResponse mapToAccountCoinsResponse(Block block,
177178
.build();
178179
}
179180

180-
public static ConstructionMetadataResponse mapToMetadataResponse(ProtocolParams protocolParams, Long ttl, Long suggestedFee) {
181+
public ConstructionMetadataResponse mapToMetadataResponse(ProtocolParams protocolParams, Long ttl, Long suggestedFee) {
181182
return ConstructionMetadataResponse.builder()
182-
.metadata(Map.of("protocol_parameters", protocolParams, "ttl", ttl))
183+
.metadata(ConstructionMetadataResponseMetadata.builder()
184+
.ttl(new BigDecimal(ttl))
185+
.protocolParameters(protocolParamsToRosettaProtocolParameters.toProtocolParameters(protocolParams))
186+
.build())
183187
.suggestedFee(List.of(Amount.builder()
184188
.value(suggestedFee.toString())
185189
.currency(Currency.builder()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.cardanofoundation.rosetta.common.mapper;
2+
3+
import static java.util.Optional.ofNullable;
4+
5+
import lombok.AllArgsConstructor;
6+
import org.cardanofoundation.rosetta.api.block.model.domain.ProtocolParams;
7+
import org.cardanofoundation.rosetta.common.annotation.OpenApiMapper;
8+
import org.modelmapper.ModelMapper;
9+
import org.openapitools.client.model.ProtocolParameters;
10+
11+
@OpenApiMapper
12+
@AllArgsConstructor
13+
public class ProtocolParamsToRosettaProtocolParameters {
14+
15+
final ModelMapper modelMapper;
16+
17+
public ProtocolParameters toProtocolParameters(ProtocolParams model) {
18+
return ofNullable(modelMapper.getTypeMap(ProtocolParams.class, ProtocolParameters.class))
19+
.orElseGet(() -> modelMapper.createTypeMap(ProtocolParams.class, ProtocolParameters.class))
20+
.addMappings(mapper -> {
21+
22+
mapper.map(ProtocolParams::getAdaPerUtxoByte, ProtocolParameters::setCoinsPerUtxoSize);
23+
mapper.map(ProtocolParams::getMaxCollateralInputs, ProtocolParameters::setMaxCollateralInputs);
24+
mapper.map(ProtocolParams::getMinFeeA, ProtocolParameters::setMinFeeCoefficient);
25+
mapper.map(ProtocolParams::getMinFeeB, ProtocolParameters::setMinFeeConstant);
26+
mapper.map(source -> source.getProtocolVersion().getMajor(), ProtocolParameters::setProtocol);
27+
28+
29+
}).map(model);
30+
}
31+
}

api/src/main/resources/rosetta-specifications-1.4.15/api.yaml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,10 +1304,7 @@ components:
13041304
- metadata
13051305
properties:
13061306
metadata:
1307-
type: object
1308-
example:
1309-
account_sequence: 23
1310-
recent_block_hash: '0x52bc44d5378309ee2abf1539bf71de1b7d7be3b5'
1307+
$ref: '#/components/schemas/ConstructionMetadataResponseMetadata'
13111308
suggested_fee:
13121309
type: array
13131310
items:
@@ -1945,3 +1942,12 @@ components:
19451942
transaction_size:
19461943
description: ''
19471944
type: number
1945+
ConstructionMetadataResponseMetadata:
1946+
description: ''
1947+
type: object
1948+
properties:
1949+
ttl:
1950+
description: ''
1951+
type: number
1952+
protocol_parameters:
1953+
$ref: '#/components/schemas/ProtocolParameters'

api/src/test/java/org/cardanofoundation/rosetta/common/mapper/ProtocolParamsToEntityTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,13 @@ void fromEntity_Test_ok() {
7373

7474
@Test
7575
void merge_Test_ok() {
76-
ProtocolParams from = ProtocolParams.builder().eMax(1).rho(2.0).costModels(Map.of("key3", new long[]{4})).build();
77-
ProtocolParams to = ProtocolParams.builder().tau(5.0).costModelsHash("costHash6").build();
76+
ProtocolParams from = ProtocolParams.builder().costModels(Map.of("key3", new long[]{4})).build();
77+
ProtocolParams to = ProtocolParams.builder().costModelsHash("costHash6").build();
7878
ProtocolParams merged = my.merge(from, to);
79-
assertThat(merged.getEMax()).isEqualTo(from.getEMax());
80-
assertThat(merged.getRho()).isEqualTo(from.getRho());
8179
assertThat(merged.getCostModels().size()).isEqualTo(1);
8280
assertThat(merged.getCostModels().keySet()).containsAll(from.getCostModels().keySet());
8381
assertThat(merged.getCostModels().values()).containsAll(from.getCostModels().values());
8482

85-
assertThat(merged.getTau()).isEqualTo(to.getTau());
8683
assertThat(merged.getCostModelsHash()).isEqualTo(to.getCostModelsHash());
8784
}
8885

0 commit comments

Comments
 (0)