Skip to content

Commit e31cdfb

Browse files
committed
Support contract to return structure and structure array
1 parent 1d33bbe commit e31cdfb

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

  • chainsql/src/main/java/com/peersafe/chainsql/contract

chainsql/src/main/java/com/peersafe/chainsql/contract/Contract.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,9 @@ protected <T extends Type, R> R executeCallSingleValueReturn(
186186
}
187187

188188
Object value = result.getValue();
189-
if (returnType.isAssignableFrom(value.getClass())) {
189+
if (returnType.isAssignableFrom(result.getClass())) {
190+
return (R) result;
191+
} else if (returnType.isAssignableFrom(value.getClass())) {
190192
return (R) value;
191193
} else if (result.getClass().equals(Address.class) && returnType.equals(String.class)) {
192194
return (R) result.toString(); // cast isn't necessary
@@ -208,7 +210,9 @@ public void called(T result) {
208210
}
209211

210212
Object value = result.getValue();
211-
if (returnType.isAssignableFrom(value.getClass())) {
213+
if (returnType.isAssignableFrom(result.getClass())) {
214+
cb.called((R) result);
215+
} else if (returnType.isAssignableFrom(value.getClass())) {
212216
cb.called((R) value);
213217
} else if (result.getClass().equals(Address.class) && returnType.equals(String.class)) {
214218
cb.called((R) result.toString()); // cast isn't necessary

0 commit comments

Comments
 (0)