Skip to content

Commit a8bbc2e

Browse files
Copilotbaywet
andcommitted
refactor: share enum parsing helper; delegate scalar getters to static parse methods
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
1 parent 795b5e5 commit a8bbc2e

2 files changed

Lines changed: 32 additions & 80 deletions

File tree

components/serialization/form/src/main/java/com/microsoft/kiota/serialization/FormParseNode.java

Lines changed: 24 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -88,115 +88,55 @@ private String sanitizeKey(@Nonnull final String key) {
8888
}
8989

9090
@Nullable public Boolean getBooleanValue() {
91-
switch (getStringValue()
92-
.toLowerCase(
93-
Locale.ROOT)) { // boolean parse returns false for any value that is not
94-
// true
95-
case "true":
96-
case "1":
97-
return true;
98-
case "false":
99-
case "0":
100-
return false;
101-
default:
102-
return null;
103-
}
91+
return parseBooleanValue(getStringValue());
10492
}
10593

10694
@Nullable public Byte getByteValue() {
107-
try {
108-
return Byte.parseByte(getStringValue());
109-
} catch (final NumberFormatException ex) {
110-
return null;
111-
}
95+
return parseByteValue(getStringValue());
11296
}
11397

11498
@Nullable public Short getShortValue() {
115-
try {
116-
return Short.parseShort(getStringValue());
117-
} catch (final NumberFormatException ex) {
118-
return null;
119-
}
99+
return parseShortValue(getStringValue());
120100
}
121101

122102
@Nullable public BigDecimal getBigDecimalValue() {
123-
try {
124-
return new BigDecimal(getStringValue());
125-
} catch (final NumberFormatException ex) {
126-
return null;
127-
}
103+
return parseBigDecimalValue(getStringValue());
128104
}
129105

130106
@Nullable public Integer getIntegerValue() {
131-
try {
132-
return Integer.parseInt(getStringValue());
133-
} catch (final NumberFormatException ex) {
134-
return null;
135-
}
107+
return parseIntegerValue(getStringValue());
136108
}
137109

138110
@Nullable public Float getFloatValue() {
139-
try {
140-
return Float.parseFloat(getStringValue());
141-
} catch (final NumberFormatException ex) {
142-
return null;
143-
}
111+
return parseFloatValue(getStringValue());
144112
}
145113

146114
@Nullable public Double getDoubleValue() {
147-
try {
148-
return Double.parseDouble(getStringValue());
149-
} catch (final NumberFormatException ex) {
150-
return null;
151-
}
115+
return parseDoubleValue(getStringValue());
152116
}
153117

154118
@Nullable public Long getLongValue() {
155-
try {
156-
return Long.parseLong(getStringValue());
157-
} catch (final NumberFormatException ex) {
158-
return null;
159-
}
119+
return parseLongValue(getStringValue());
160120
}
161121

162122
@Nullable public UUID getUUIDValue() {
163-
final String stringValue = getStringValue();
164-
if (stringValue == null) return null;
165-
return UUID.fromString(stringValue);
123+
return parseUUIDValue(getStringValue());
166124
}
167125

168126
@Nullable public OffsetDateTime getOffsetDateTimeValue() {
169-
final String stringValue = getStringValue();
170-
if (stringValue == null) return null;
171-
try {
172-
return OffsetDateTime.parse(stringValue);
173-
} catch (DateTimeParseException ex) {
174-
// Append UTC offset if it's missing
175-
try {
176-
LocalDateTime localDateTime = LocalDateTime.parse(stringValue);
177-
return localDateTime.atOffset(ZoneOffset.UTC);
178-
} catch (DateTimeParseException ex2) {
179-
throw ex;
180-
}
181-
}
127+
return parseOffsetDateTimeValue(getStringValue());
182128
}
183129

184130
@Nullable public LocalDate getLocalDateValue() {
185-
final String stringValue = getStringValue();
186-
if (stringValue == null) return null;
187-
return LocalDate.parse(stringValue);
131+
return parseLocalDateValue(getStringValue());
188132
}
189133

190134
@Nullable public LocalTime getLocalTimeValue() {
191-
final String stringValue = getStringValue();
192-
if (stringValue == null) return null;
193-
return LocalTime.parse(stringValue);
135+
return parseLocalTimeValue(getStringValue());
194136
}
195137

196138
@Nullable public PeriodAndDuration getPeriodAndDurationValue() {
197-
final String stringValue = getStringValue();
198-
if (stringValue == null) return null;
199-
return PeriodAndDuration.parse(stringValue);
139+
return parsePeriodAndDurationValue(getStringValue());
200140
}
201141

202142
@Nullable public <T> List<T> getCollectionOfPrimitiveValues(@Nonnull final Class<T> targetClass) {
@@ -231,6 +171,8 @@ private String sanitizeKey(@Nonnull final String key) {
231171
return (T) parseIntegerValue(value);
232172
} else if (targetClass == Float.class) {
233173
return (T) parseFloatValue(value);
174+
} else if (targetClass == Double.class) {
175+
return (T) parseDoubleValue(value);
234176
} else if (targetClass == Long.class) {
235177
return (T) parseLongValue(value);
236178
} else if (targetClass == UUID.class) {
@@ -307,6 +249,15 @@ private String sanitizeKey(@Nonnull final String key) {
307249
}
308250
}
309251

252+
@Nullable private static Double parseDoubleValue(@Nullable final String value) {
253+
if (value == null) return null;
254+
try {
255+
return Double.parseDouble(value);
256+
} catch (final NumberFormatException ex) {
257+
return null;
258+
}
259+
}
260+
310261
@Nullable private static Long parseLongValue(@Nullable final String value) {
311262
if (value == null) return null;
312263
try {

components/serialization/json/src/main/java/com/microsoft/kiota/serialization/JsonParseNode.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,9 @@ private <T> List<T> iterateOnArray(JsonElement jsonElement, Function<JsonParseNo
175175
final List<T> result = new ArrayList<>(array.size());
176176
for (final JsonElement item : array) {
177177
if (!item.isJsonNull()) {
178-
final String rawValue = gson.fromJson(item, String.class);
179-
if (rawValue != null && !rawValue.isEmpty()) {
180-
final T value = enumParser.forValue(rawValue);
181-
if (value != null) {
182-
result.add(value);
183-
}
178+
final T value = parseEnumValue(gson.fromJson(item, String.class), enumParser);
179+
if (value != null) {
180+
result.add(value);
184181
}
185182
}
186183
}
@@ -232,7 +229,11 @@ else if (element.isJsonPrimitive()) {
232229
}
233230

234231
@Nullable public <T extends Enum<T>> T getEnumValue(@Nonnull final ValuedEnumParser<T> enumParser) {
235-
final String rawValue = this.getStringValue();
232+
return parseEnumValue(this.getStringValue(), enumParser);
233+
}
234+
235+
@Nullable private static <T extends Enum<T>> T parseEnumValue(
236+
@Nullable final String rawValue, @Nonnull final ValuedEnumParser<T> enumParser) {
236237
if (rawValue == null || rawValue.isEmpty()) {
237238
return null;
238239
}

0 commit comments

Comments
 (0)