Skip to content

Commit f3ca876

Browse files
committed
changed from null to return optional
1 parent 26c6a98 commit f3ca876

File tree

5 files changed

+38
-15
lines changed

5 files changed

+38
-15
lines changed

xrpl4j-core/src/main/java/org/xrpl/xrpl4j/codec/binary/definitions/Definitions.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
import com.fasterxml.jackson.databind.JsonNode;
2525
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2626
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
27-
import com.google.common.collect.ImmutableMap;
28-
import org.immutables.value.Value.Default;
2927
import org.immutables.value.Value.Immutable;
3028

3129
import java.util.List;
@@ -87,8 +85,5 @@ public interface Definitions {
8785
* @return {@link Map} keyed by {@link String} with {@link Integer} values for all permission values.
8886
*/
8987
@JsonProperty("PERMISSION_VALUES")
90-
@Default
91-
default Map<String, Integer> permissionValues() {
92-
return ImmutableMap.of();
93-
}
88+
Map<String, Integer> permissionValues();
9489
}

xrpl4j-core/src/main/java/org/xrpl/xrpl4j/model/transactions/DelegateSet.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ static ImmutableDelegateSet.Builder builder() {
7878
}
7979

8080
/**
81-
* Set of {@link TransactionFlags}s for this {@link DelegateSet}, which only allows the {@code tfFullyCanonicalSig}
82-
* flag, which is deprecated.
81+
* Set of {@link TransactionFlags}s for this {@link DelegateSet}. Note that {@link DelegateSet} transactions
82+
* do not support any transaction-specific flags, only universal flags.
8383
*
8484
* <p>The value of the flags cannot be set manually, but exists for JSON serialization/deserialization only and for
8585
* proper signature computation in rippled.
@@ -173,8 +173,7 @@ default void validatePermissionValuesAreValid() {
173173
boolean isValidTransactionType = transactionType != TransactionType.UNKNOWN;
174174

175175
// Check if it's a valid GranularPermission
176-
GranularPermission granularPermission = GranularPermission.forValue(permissionValue);
177-
boolean isValidGranularPermission = granularPermission != null;
176+
boolean isValidGranularPermission = GranularPermission.forValue(permissionValue).isPresent();
178177

179178
Preconditions.checkArgument(
180179
isValidTransactionType || isValidGranularPermission,

xrpl4j-core/src/main/java/org/xrpl/xrpl4j/model/transactions/GranularPermission.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
import com.fasterxml.jackson.annotation.JsonValue;
2424
import com.google.common.annotations.Beta;
2525

26+
import java.util.Objects;
27+
import java.util.Optional;
28+
2629
/**
2730
* Enumeration of granular permission types for delegated credentials.
2831
* These permissions support control over specific portions of transactions,
@@ -110,15 +113,17 @@ public enum GranularPermission {
110113
*
111114
* @param value The {@link String} value corresponding to a {@link GranularPermission}.
112115
*
113-
* @return The {@link GranularPermission} with the corresponding value, or null if not found.
116+
* @return An {@link Optional} containing the {@link GranularPermission} with the corresponding value,
117+
* or {@link Optional#empty()} if not found.
114118
*/
115-
public static GranularPermission forValue(String value) {
119+
public static Optional<GranularPermission> forValue(final String value) {
120+
Objects.requireNonNull(value);
116121
for (GranularPermission permission : GranularPermission.values()) {
117122
if (permission.value.equals(value)) {
118-
return permission;
123+
return Optional.of(permission);
119124
}
120125
}
121-
return null;
126+
return Optional.empty();
122127
}
123128

124129
/**

xrpl4j-core/src/test/java/org/xrpl/xrpl4j/model/ledger/DelegateObjectJsonTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.xrpl.xrpl4j.model.transactions.PermissionWrapper;
3232

3333
import java.util.Arrays;
34-
import java.util.Collections;
3534

3635
/**
3736
* Unit tests for {@link DelegateObject}.

xrpl4j-core/src/test/java/org/xrpl/xrpl4j/model/transactions/json/DelegateSetJsonTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,30 @@ public void testDelegateSetJsonWithFlags() throws JsonProcessingException, JSONE
107107

108108
assertCanSerializeAndDeserialize(delegateSet, json);
109109
}
110+
111+
@Test
112+
public void testDelegateSetJsonWithNoPermissions() throws JsonProcessingException, JSONException {
113+
DelegateSet delegateSet = DelegateSet.builder()
114+
.account(Address.of("rsUiUMpnrgxQp24dJYZDhmV4bE3aBtQyt8"))
115+
.authorize(Address.of("rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de"))
116+
.sequence(UnsignedInteger.valueOf(2))
117+
.fee(XrpCurrencyAmount.ofDrops(10))
118+
.signingPublicKey(
119+
PublicKey.fromBase16EncodedPublicKey("ED87987410480E90474F7A02E0DA0CE4E6ABC8A1377864026A1FEE2718688B0B84")
120+
)
121+
.build();
122+
123+
String json = "{" +
124+
" \"Account\":\"rsUiUMpnrgxQp24dJYZDhmV4bE3aBtQyt8\"," +
125+
" \"Authorize\":\"rEhxGqkqPPSxQ3P25J66ft5TwpzV14k2de\"," +
126+
" \"Permissions\":[]," +
127+
" \"Fee\":\"10\"," +
128+
" \"Sequence\":2," +
129+
" \"SigningPubKey\":\"ED87987410480E90474F7A02E0DA0CE4E6ABC8A1377864026A1FEE2718688B0B84\"," +
130+
" \"TransactionType\":\"DelegateSet\"" +
131+
"}";
132+
133+
assertCanSerializeAndDeserialize(delegateSet, json);
134+
}
110135
}
111136

0 commit comments

Comments
 (0)