Skip to content

Commit

Permalink
improve some generic return types
Browse files Browse the repository at this point in the history
  • Loading branch information
esaulpaugh committed Feb 16, 2024
1 parent d6f026a commit ba11ae5
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 19 deletions.
8 changes: 4 additions & 4 deletions src/main/java/com/esaulpaugh/headlong/abi/ABIJSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,19 +145,19 @@ static Function parseFunction(JsonObject function, MessageDigest digest, int fla
}

@SuppressWarnings("unchecked")
static <T extends TupleType<?>> Event<T> parseEvent(JsonObject event, int flags) {
static <X extends Tuple> Event<TupleType<X>> parseEvent(JsonObject event, int flags) {
if (!EVENT.equals(getType(event))) {
throw TypeEnum.unexpectedType(getType(event));
}
return (Event<T>) parseEventUnchecked(event, flags);
return (Event<TupleType<X>>) parseEventUnchecked(event, flags);
}

@SuppressWarnings("unchecked")
static <T extends TupleType<?>> ContractError<T> parseError(JsonObject error, int flags) {
static <X extends Tuple> ContractError<TupleType<X>> parseError(JsonObject error, int flags) {
if (!ERROR.equals(getType(error))) {
throw TypeEnum.unexpectedType(getType(error));
}
return (ContractError<T>) parseErrorUnchecked(error, flags);
return (ContractError<TupleType<X>>) parseErrorUnchecked(error, flags);
}

private static Function parseFunctionUnchecked(TypeEnum type, JsonObject function, MessageDigest digest, int flags) {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/esaulpaugh/headlong/abi/ContractError.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,17 @@ public boolean equals(Object o) {
return false;
}

public static <T extends TupleType<?>> ContractError<T> fromJson(String errorJson) {
public static <X extends Tuple> ContractError<TupleType<X>> fromJson(String errorJson) {
return fromJsonObject(ABIType.FLAGS_NONE, ABIJSON.parseObject(errorJson));
}

/** @see ABIObject#fromJson(int, String) */
public static <T extends TupleType<?>> ContractError<T> fromJson(int flags, String errorJson) {
public static <X extends Tuple> ContractError<TupleType<X>> fromJson(int flags, String errorJson) {
return fromJsonObject(flags, ABIJSON.parseObject(errorJson));
}

/** @see ABIObject#fromJsonObject(int, JsonObject) */
public static <T extends TupleType<?>> ContractError<T> fromJsonObject(int flags, JsonObject error) {
public static <X extends Tuple> ContractError<TupleType<X>> fromJsonObject(int flags, JsonObject error) {
return ABIJSON.parseError(error, flags);
}

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/esaulpaugh/headlong/abi/Event.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ public final class Event<I extends TupleType<?>> implements ABIObject {
private final byte[] signatureHash;


public static <T extends TupleType<?>> Event<T> create(String name, T inputs, boolean... indexed) {
public static <X extends Tuple> Event<TupleType<X>> create(String name, TupleType<X> inputs, boolean... indexed) {
return new Event<>(name, false, inputs, indexed);
}

public static <T extends TupleType<?>> Event<?> createAnonymous(String name, T inputs, boolean... indexed) {
public static <X extends Tuple> Event<TupleType<X>> createAnonymous(String name, TupleType<X> inputs, boolean... indexed) {
return new Event<>(name, true, inputs, indexed);
}

Expand Down Expand Up @@ -119,17 +119,17 @@ public boolean equals(Object o) {
&& Arrays.equals(other.indexManifest, this.indexManifest);
}

public static <T extends TupleType<?>> Event<T> fromJson(String eventJson) {
public static <X extends Tuple> Event<TupleType<X>> fromJson(String eventJson) {
return fromJsonObject(ABIType.FLAGS_NONE, ABIJSON.parseObject(eventJson));
}

/** @see ABIObject#fromJson(int, String) */
public static <T extends TupleType<?>> Event<T> fromJson(int flags, String eventJson) {
public static <X extends Tuple> Event<TupleType<X>> fromJson(int flags, String eventJson) {
return fromJsonObject(flags, ABIJSON.parseObject(eventJson));
}

/** @see ABIObject#fromJsonObject(int, JsonObject) */
public static <T extends TupleType<?>> Event<T> fromJsonObject(int flags, JsonObject event) {
public static <X extends Tuple> Event<TupleType<X>> fromJsonObject(int flags, JsonObject event) {
return ABIJSON.parseEvent(event, flags);
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/esaulpaugh/headlong/abi/TupleType.java
Original file line number Diff line number Diff line change
Expand Up @@ -414,15 +414,15 @@ private static String completeTupleTypeString(StringBuilder sb) {
return EMPTY_TUPLE_STRING;
}

public static <T extends TupleType<? extends Tuple>> T parse(String rawTupleTypeString) {
public static <X extends Tuple> TupleType<X> parse(String rawTupleTypeString) {
return TypeFactory.create(rawTupleTypeString);
}

public static <T extends TupleType<? extends Tuple>> T parse(int flags, String rawTupleTypeString) {
public static <X extends Tuple> TupleType<X> parse(int flags, String rawTupleTypeString) {
return TypeFactory.create(flags, rawTupleTypeString);
}

public static <T extends TupleType<? extends Tuple>> T of(String... typeStrings) {
public static <X extends Tuple> TupleType<X> of(String... typeStrings) {
StringBuilder sb = new StringBuilder("(");
for (String str : typeStrings) {
sb.append(str).append(',');
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/esaulpaugh/headlong/abi/TypeFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ public static ABIType<Object> createNonCapturing(String rawType) {

/** If you don't need any {@code elementNames}, use {@link TypeFactory#create(String)}. */
@SuppressWarnings("unchecked")
public static <T extends TupleType<?>> T createTupleTypeWithNames(String rawType, String... elementNames) {
return (T) build(rawType, elementNames, null, ABIType.FLAGS_NONE)
public static <X extends Tuple> TupleType<X> createTupleTypeWithNames(String rawType, String... elementNames) {
return (TupleType<X>) build(rawType, elementNames, null, ABIType.FLAGS_NONE)
.asTupleType();
}

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/com/esaulpaugh/headlong/abi/Deserializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ public class Deserializer {
private Deserializer() {}

@SuppressWarnings("unchecked")
public static <T extends TupleType<? extends Tuple>> T parseTupleType(String ttStr) {
return (T) parseTupleType(Streams.parse(new JsonReader(new StringReader(ttStr))).getAsJsonArray());
public static <X extends Tuple> TupleType<X> parseTupleType(String ttStr) {
return (TupleType<X>) parseTupleType(Streams.parse(new JsonReader(new StringReader(ttStr))).getAsJsonArray());
}

public static <T extends Tuple> T parseTupleValue(TupleType<?> tupleType, String tupleStr) {
Expand Down

0 comments on commit ba11ae5

Please sign in to comment.