Skip to content

Commit ad3be7a

Browse files
committed
Added support of TimeOfDay JSON deserialization, added support of "0:00:00.0000000" format
1 parent 5347c68 commit ad3be7a

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/main/java/com/microsoft/graph/models/extensions/TimeOfDay.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.microsoft.graph.models.extensions;
22

33

4+
import java.math.BigDecimal;
45
import java.text.ParseException;
56
import java.util.Locale;
67

@@ -51,7 +52,7 @@ public static TimeOfDay parse(final String timeStr) throws ParseException {
5152
// unpack this array
5253
int hour = Integer.parseInt(timeInfo[indHour]);
5354
int minute = Integer.parseInt(timeInfo[indMinute]);
54-
int second = Integer.parseInt(timeInfo[indSecond]);
55+
int second = new BigDecimal(timeInfo[indSecond]).intValue();
5556

5657
return new TimeOfDay(hour, minute, second);
5758
}

src/main/java/com/microsoft/graph/serializer/GsonFactory.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.microsoft.graph.logger.ILogger;
3535
import com.microsoft.graph.models.extensions.DateOnly;
3636

37+
import com.microsoft.graph.models.extensions.TimeOfDay;
3738
import java.lang.reflect.Type;
3839
import java.text.ParseException;
3940
import java.util.Calendar;
@@ -209,6 +210,20 @@ public Duration deserialize(final JsonElement json,
209210
}
210211
}
211212
};
213+
214+
final JsonDeserializer<TimeOfDay> timeOfDayJsonDeserializer = new JsonDeserializer<TimeOfDay>() {
215+
@Override
216+
public TimeOfDay deserialize(final JsonElement json,
217+
final Type typeOfT,
218+
final JsonDeserializationContext context) throws JsonParseException {
219+
try {
220+
return TimeOfDay.parse(json.getAsString());
221+
} catch (Exception e) {
222+
return null;
223+
}
224+
}
225+
};
226+
212227
return new GsonBuilder()
213228
.excludeFieldsWithoutExposeAnnotation()
214229
.registerTypeAdapter(Calendar.class, calendarJsonSerializer)
@@ -223,6 +238,7 @@ public Duration deserialize(final JsonElement json,
223238
.registerTypeAdapter(EnumSet.class, enumSetJsonDeserializer)
224239
.registerTypeAdapter(Duration.class, durationJsonSerializer)
225240
.registerTypeAdapter(Duration.class, durationJsonDeserializer)
241+
.registerTypeAdapter(TimeOfDay.class, timeOfDayJsonDeserializer)
226242
.registerTypeAdapterFactory(new FallbackTypeAdapterFactory(logger))
227243
.create();
228244
}

0 commit comments

Comments
 (0)