From 0af9b6f996de0eb56c0b681bee6eb511db4b5764 Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Tue, 29 Jul 2025 16:20:02 +0300 Subject: [PATCH 1/6] add string to pojo datatypes --- src/java/src/main/java/triton/client/pojo/DataType.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java/src/main/java/triton/client/pojo/DataType.java b/src/java/src/main/java/triton/client/pojo/DataType.java index f79daa3ee..b89beafd0 100644 --- a/src/java/src/main/java/triton/client/pojo/DataType.java +++ b/src/java/src/main/java/triton/client/pojo/DataType.java @@ -42,6 +42,7 @@ public enum DataType { FP16(2, false), FP32(4, false), FP64(8, false), + STRING(-1, false), BYTES(-1, false); public final int numByte; From 6f09806dbd6f38befe3253de4fe9ecb7ab75b19c Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Tue, 29 Jul 2025 16:20:24 +0300 Subject: [PATCH 2/6] add getOutputAsString --- .../main/java/triton/client/InferResult.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/java/src/main/java/triton/client/InferResult.java b/src/java/src/main/java/triton/client/InferResult.java index c5166f3f0..34d663c12 100644 --- a/src/java/src/main/java/triton/client/InferResult.java +++ b/src/java/src/main/java/triton/client/InferResult.java @@ -307,6 +307,30 @@ public double[] getOutputAsDouble(String output) return (double[]) getOutputImpl(out, double.class, ByteBuffer::getDouble); } + public String getOutputAsString(String output) { + IOTensor out = this.response.getOutputByName(output); + if (out == null) { + return null; + } + + Object[] data = out.getData(); + if (data == null || data.length == 0) { + return null; + } + + Preconditions.checkArgument( + out.getDatatype() == DataType.STRING, + "Could not get String from data of type %s on output %s.", + out.getDatatype(), out.getName()); + if (data[0] instanceof String) { + return (String) data[0]; + } else if (data[0] instanceof byte[]) { + return getOutputAsByte(output); + } else { + return data[0].toString(); + } + } + private Object getOutputImpl(IOTensor out, Class clazz, Function getter) { From 8dbdf33a35ffa38575adbf9347fbdc702eb03a0a Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Tue, 29 Jul 2025 18:08:58 +0300 Subject: [PATCH 3/6] fix datatype error --- src/java/src/main/java/triton/client/InferResult.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/src/main/java/triton/client/InferResult.java b/src/java/src/main/java/triton/client/InferResult.java index 34d663c12..782104114 100644 --- a/src/java/src/main/java/triton/client/InferResult.java +++ b/src/java/src/main/java/triton/client/InferResult.java @@ -319,13 +319,13 @@ public String getOutputAsString(String output) { } Preconditions.checkArgument( - out.getDatatype() == DataType.STRING, + out.getDatatype() == DataType.BYTES, "Could not get String from data of type %s on output %s.", out.getDatatype(), out.getName()); if (data[0] instanceof String) { return (String) data[0]; } else if (data[0] instanceof byte[]) { - return getOutputAsByte(output); + return new String((byte[]) data[0], java.nio.charset.StandardCharsets.UTF_8); } else { return data[0].toString(); } From 78f0108ff4a6440143cb5fe7dc0b61a3f20c5c66 Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Tue, 29 Jul 2025 18:12:05 +0300 Subject: [PATCH 4/6] remove not needed STRING datatype --- src/java/src/main/java/triton/client/pojo/DataType.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/java/src/main/java/triton/client/pojo/DataType.java b/src/java/src/main/java/triton/client/pojo/DataType.java index b89beafd0..f79daa3ee 100644 --- a/src/java/src/main/java/triton/client/pojo/DataType.java +++ b/src/java/src/main/java/triton/client/pojo/DataType.java @@ -42,7 +42,6 @@ public enum DataType { FP16(2, false), FP32(4, false), FP64(8, false), - STRING(-1, false), BYTES(-1, false); public final int numByte; From 6a475dd88308969ccb5001f0cc5fdabf648e68ee Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Tue, 29 Jul 2025 21:36:20 +0300 Subject: [PATCH 5/6] add docs --- src/java/src/main/java/triton/client/InferResult.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/java/src/main/java/triton/client/InferResult.java b/src/java/src/main/java/triton/client/InferResult.java index 782104114..566347c78 100644 --- a/src/java/src/main/java/triton/client/InferResult.java +++ b/src/java/src/main/java/triton/client/InferResult.java @@ -307,6 +307,13 @@ public double[] getOutputAsDouble(String output) return (double[]) getOutputImpl(out, double.class, ByteBuffer::getDouble); } + /** + * Get String tensor named as by parameter output. The tensor must be of + * DataType.BYTES. + * + * @param output name of output tensor. + * @return null if output not found or the tensor in String. + */ public String getOutputAsString(String output) { IOTensor out = this.response.getOutputByName(output); if (out == null) { From e36f40a82c146da963697c182349e75bcb25ec41 Mon Sep 17 00:00:00 2001 From: Hossam Elshamy Date: Fri, 15 Aug 2025 14:08:53 +0300 Subject: [PATCH 6/6] Fix formating --- .../main/java/triton/client/InferResult.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/java/src/main/java/triton/client/InferResult.java b/src/java/src/main/java/triton/client/InferResult.java index 566347c78..7870fae71 100644 --- a/src/java/src/main/java/triton/client/InferResult.java +++ b/src/java/src/main/java/triton/client/InferResult.java @@ -314,25 +314,27 @@ public double[] getOutputAsDouble(String output) * @param output name of output tensor. * @return null if output not found or the tensor in String. */ - public String getOutputAsString(String output) { - IOTensor out = this.response.getOutputByName(output); + public String getOutputAsString(String output) + { + IOTensor out = this.response.getOutputByName(output); if (out == null) { return null; } - + Object[] data = out.getData(); if (data == null || data.length == 0) { return null; } - + Preconditions.checkArgument( - out.getDatatype() == DataType.BYTES, - "Could not get String from data of type %s on output %s.", - out.getDatatype(), out.getName()); + out.getDatatype() == DataType.BYTES, + "Could not get String from data of type %s on output %s.", + out.getDatatype(), out.getName()); if (data[0] instanceof String) { return (String) data[0]; } else if (data[0] instanceof byte[]) { - return new String((byte[]) data[0], java.nio.charset.StandardCharsets.UTF_8); + return new String( + (byte[]) data[0], java.nio.charset.StandardCharsets.UTF_8); } else { return data[0].toString(); }