Skip to content

Commit 03345d1

Browse files
committed
bytes datatypes added
Signed-off-by: Hendrik Ebbers <[email protected]>
1 parent 11ce705 commit 03345d1

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/data/ContractParam.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ public static ContractParam<String> string(String value) {
5757
return of(value, StringBasedDatatype.STRING);
5858
}
5959

60+
@NonNull
61+
public static ContractParam<String> bytes(String value) {
62+
return of(value, StringBasedDatatype.BYTES);
63+
}
64+
65+
@NonNull
66+
public static ContractParam<String> bytes32(String value) {
67+
return of(value, StringBasedDatatype.BYTES32);
68+
}
69+
6070
/**
6171
* Creates a new contract parameter with the given value and native type {@code address}. The input must be address
6272
* in solidty format.

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/implementation/data/StringBasedDatatype.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import com.hedera.hashgraph.sdk.AccountId;
44
import com.hedera.hashgraph.sdk.ContractFunctionParameters;
5+
import java.nio.charset.StandardCharsets;
56
import java.util.Objects;
67
import java.util.function.BiConsumer;
78
import org.jspecify.annotations.NonNull;
89

910
public enum StringBasedDatatype implements ParamSupplier<String> {
1011

1112
STRING("string", (v, params) -> params.addString(v)),
13+
BYTES("bytes", (v, params) -> addBytes(v, params)),
14+
BYTES32("bytes32", (v, params) -> addBytes32(v, params)),
1215
ADDRESS("address", (v, params) -> params.addAddress(v));
1316

1417
private final String nativeType;
@@ -43,4 +46,22 @@ public String getNativeType() {
4346
return nativeType;
4447
}
4548

49+
private static void addBytes32(final String value, final ContractFunctionParameters params) {
50+
if (value == null) {
51+
throw new IllegalArgumentException("bytes32 value must not be null");
52+
}
53+
final byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
54+
if (bytes.length > 32) {
55+
throw new IllegalArgumentException("bytes32 value must be 32 bytes or less");
56+
}
57+
params.addBytes32(bytes);
58+
}
59+
60+
private static void addBytes(final String value, final ContractFunctionParameters params) {
61+
if (value == null) {
62+
throw new IllegalArgumentException("bytes32 value must not be null");
63+
}
64+
final byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
65+
params.addBytes(bytes);
66+
}
4667
}

0 commit comments

Comments
 (0)