44package com .microsoft .azure .kusto .ingest .result ;
55
66import com .azure .data .tables .models .TableEntity ;
7+ import com .microsoft .azure .kusto .data .StringUtils ;
78
89import java .time .Instant ;
910import java .time .OffsetDateTime ;
1011import java .util .HashMap ;
1112import java .util .Map ;
1213import java .util .UUID ;
1314
15+ import org .slf4j .Logger ;
16+ import org .slf4j .LoggerFactory ;
17+ import reactor .util .annotation .Nullable ;
18+
19+ import java .io .Serializable ;
20+ import java .lang .invoke .MethodHandles ;
21+ import java .net .URISyntaxException ;
22+
1423/// <summary>
1524/// This class represents an ingestion status.
1625/// </summary>
@@ -23,6 +32,7 @@ public class IngestionStatus {
2332 /// during the ingestion's process
2433 /// and will be updated as soon as the ingestion completes.
2534 /// </summary>
35+ private static final Logger log = LoggerFactory .getLogger (MethodHandles .lookup ().lookupClass ());
2636 public OperationStatus status ;
2737 private Map <String , Object > ingestionInfo = new HashMap <>();
2838
@@ -210,16 +220,30 @@ public Map<String, Object> getEntityProperties() {
210220 return ingestionInfo ;
211221 }
212222
223+ static UUID fromId (Object id ) {
224+ if (id instanceof String && StringUtils .isNotBlank ((String ) id )) {
225+ try {
226+ return UUID .fromString ((String ) id );
227+ } catch (IllegalArgumentException e ) {
228+ log .warn ("Failed to parse id [{}] to UUID,set to id set to null" , id );
229+ return null ;
230+ }
231+ } else if (id instanceof UUID ) {
232+ return (UUID ) id ;
233+ }
234+ return null ;
235+ }
236+
213237 public static IngestionStatus fromEntity (TableEntity tableEntity ) {
214238 IngestionStatus ingestionStatus = new IngestionStatus ();
215239 Object ingestionSourceId = tableEntity .getProperty ("IngestionSourceId" );
216- ingestionStatus .setIngestionSourceId (ingestionSourceId == null ? null : ( UUID ) ingestionSourceId );
240+ ingestionStatus .setIngestionSourceId (fromId ( ingestionSourceId ) );
217241
218242 ingestionStatus .setDatabase ((String ) tableEntity .getProperty ("Database" ));
219243 ingestionStatus .setTable ((String ) tableEntity .getProperty ("Table" ));
220244
221245 Object operationId = tableEntity .getProperty ("OperationId" );
222- ingestionStatus .setOperationId (ingestionSourceId == null ? null : ( UUID ) operationId );
246+ ingestionStatus .setOperationId (operationId == null ? null : fromId ( operationId ) );
223247
224248 Object status = tableEntity .getProperty ("Status" );
225249 if (status instanceof String ) {
@@ -229,7 +253,7 @@ public static IngestionStatus fromEntity(TableEntity tableEntity) {
229253 }
230254
231255 Object activityId = tableEntity .getProperty ("ActivityId" );
232- ingestionStatus .setActivityId (ingestionSourceId == null ? null : ( UUID ) activityId );
256+ ingestionStatus .setActivityId (ingestionSourceId == null ? null : fromId ( activityId ) );
233257
234258 ingestionStatus .setFailureStatus ((String ) tableEntity .getProperty ("FailureStatus" ));
235259
0 commit comments