Skip to content

Commit 6c70a65

Browse files
Copilotbaywet
andcommitted
fix: fix Nonnull annotation and add unit tests for convertPrimitiveValue
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
1 parent e5e5eb9 commit 6c70a65

2 files changed

Lines changed: 153 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private String sanitizeKey(@Nonnull final String key) {
155155
}
156156

157157
@SuppressWarnings("unchecked")
158-
@Nonnull private static <T> T convertPrimitiveValue(
158+
@Nullable private static <T> T convertPrimitiveValue(
159159
@Nullable final String value, @Nonnull final Class<T> targetClass) {
160160
if (targetClass == Boolean.class) {
161161
return (T) parseBooleanValue(value);

components/serialization/form/src/test/java/com/microsoft/kiota/serialization/ParseNodeTests.java

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@
1414
import org.junit.jupiter.params.ParameterizedTest;
1515
import org.junit.jupiter.params.provider.ValueSource;
1616

17+
import java.math.BigDecimal;
1718
import java.net.URLEncoder;
1819
import java.nio.charset.StandardCharsets;
20+
import java.time.LocalDate;
1921
import java.time.LocalTime;
22+
import java.time.OffsetDateTime;
2023
import java.time.format.DateTimeParseException;
2124
import java.util.List;
2225
import java.util.UUID;
@@ -135,4 +138,153 @@ void testInvalidOffsetDateTimeStringThrowsException(final String dateTimeString)
135138
assertTrue(ex.getMessage().contains(dateTimeString));
136139
}
137140
}
141+
142+
@Test
143+
public void getCollectionOfStringPrimitiveValuesFromForm() {
144+
final String testFormData = "names=Alice&names=Bob";
145+
final ParseNode node = new FormParseNode(testFormData).getChildNode("names");
146+
final List<String> result = node.getCollectionOfPrimitiveValues(String.class);
147+
assertNotNull(result);
148+
assertEquals(2, result.size());
149+
assertEquals("Alice", result.get(0));
150+
assertEquals("Bob", result.get(1));
151+
}
152+
153+
@Test
154+
public void getCollectionOfIntegerPrimitiveValuesFromForm() {
155+
final String testFormData = "nums=1&nums=2&nums=3";
156+
final ParseNode node = new FormParseNode(testFormData).getChildNode("nums");
157+
final List<Integer> result = node.getCollectionOfPrimitiveValues(Integer.class);
158+
assertNotNull(result);
159+
assertEquals(3, result.size());
160+
assertEquals(1, result.get(0));
161+
assertEquals(2, result.get(1));
162+
assertEquals(3, result.get(2));
163+
}
164+
165+
@Test
166+
public void getCollectionOfLongPrimitiveValuesFromForm() {
167+
final String testFormData = "vals=100&vals=200";
168+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
169+
final List<Long> result = node.getCollectionOfPrimitiveValues(Long.class);
170+
assertNotNull(result);
171+
assertEquals(2, result.size());
172+
assertEquals(100L, result.get(0));
173+
assertEquals(200L, result.get(1));
174+
}
175+
176+
@Test
177+
public void getCollectionOfDoublePrimitiveValuesFromForm() {
178+
final String testFormData = "vals=1.5&vals=2.5";
179+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
180+
final List<Double> result = node.getCollectionOfPrimitiveValues(Double.class);
181+
assertNotNull(result);
182+
assertEquals(2, result.size());
183+
assertEquals(1.5, result.get(0));
184+
assertEquals(2.5, result.get(1));
185+
}
186+
187+
@Test
188+
public void getCollectionOfFloatPrimitiveValuesFromForm() {
189+
final String testFormData = "vals=1.5&vals=2.5";
190+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
191+
final List<Float> result = node.getCollectionOfPrimitiveValues(Float.class);
192+
assertNotNull(result);
193+
assertEquals(2, result.size());
194+
assertEquals(1.5f, result.get(0));
195+
assertEquals(2.5f, result.get(1));
196+
}
197+
198+
@Test
199+
public void getCollectionOfShortPrimitiveValuesFromForm() {
200+
final String testFormData = "vals=10&vals=20";
201+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
202+
final List<Short> result = node.getCollectionOfPrimitiveValues(Short.class);
203+
assertNotNull(result);
204+
assertEquals(2, result.size());
205+
assertEquals((short) 10, result.get(0));
206+
assertEquals((short) 20, result.get(1));
207+
}
208+
209+
@Test
210+
public void getCollectionOfBytePrimitiveValuesFromForm() {
211+
final String testFormData = "vals=1&vals=2";
212+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
213+
final List<Byte> result = node.getCollectionOfPrimitiveValues(Byte.class);
214+
assertNotNull(result);
215+
assertEquals(2, result.size());
216+
assertEquals((byte) 1, result.get(0));
217+
assertEquals((byte) 2, result.get(1));
218+
}
219+
220+
@Test
221+
public void getCollectionOfBigDecimalPrimitiveValuesFromForm() {
222+
final String testFormData = "vals=123.45&vals=678.90";
223+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
224+
final List<BigDecimal> result = node.getCollectionOfPrimitiveValues(BigDecimal.class);
225+
assertNotNull(result);
226+
assertEquals(2, result.size());
227+
assertEquals(new BigDecimal("123.45"), result.get(0));
228+
assertEquals(new BigDecimal("678.90"), result.get(1));
229+
}
230+
231+
@Test
232+
public void getCollectionOfOffsetDateTimePrimitiveValuesFromForm() {
233+
final String dt1 = "2024-01-01T00:00:00Z";
234+
final String dt2 = "2024-06-15T12:30:00Z";
235+
final String testFormData =
236+
"vals="
237+
+ URLEncoder.encode(dt1, StandardCharsets.UTF_8)
238+
+ "&vals="
239+
+ URLEncoder.encode(dt2, StandardCharsets.UTF_8);
240+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
241+
final List<OffsetDateTime> result =
242+
node.getCollectionOfPrimitiveValues(OffsetDateTime.class);
243+
assertNotNull(result);
244+
assertEquals(2, result.size());
245+
assertEquals(OffsetDateTime.parse(dt1), result.get(0));
246+
assertEquals(OffsetDateTime.parse(dt2), result.get(1));
247+
}
248+
249+
@Test
250+
public void getCollectionOfLocalDatePrimitiveValuesFromForm() {
251+
final String testFormData = "vals=2024-01-01&vals=2024-06-15";
252+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
253+
final List<LocalDate> result = node.getCollectionOfPrimitiveValues(LocalDate.class);
254+
assertNotNull(result);
255+
assertEquals(2, result.size());
256+
assertEquals(LocalDate.parse("2024-01-01"), result.get(0));
257+
assertEquals(LocalDate.parse("2024-06-15"), result.get(1));
258+
}
259+
260+
@Test
261+
public void getCollectionOfLocalTimePrimitiveValuesFromForm() {
262+
final String testFormData = "vals=08:00:00&vals=17:30:00";
263+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
264+
final List<LocalTime> result = node.getCollectionOfPrimitiveValues(LocalTime.class);
265+
assertNotNull(result);
266+
assertEquals(2, result.size());
267+
assertEquals(LocalTime.of(8, 0, 0), result.get(0));
268+
assertEquals(LocalTime.of(17, 30, 0), result.get(1));
269+
}
270+
271+
@Test
272+
public void getCollectionOfPeriodAndDurationPrimitiveValuesFromForm() {
273+
final String testFormData = "vals=P1M&vals=PT2H";
274+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
275+
final List<PeriodAndDuration> result =
276+
node.getCollectionOfPrimitiveValues(PeriodAndDuration.class);
277+
assertNotNull(result);
278+
assertEquals(2, result.size());
279+
assertEquals(PeriodAndDuration.parse("P1M"), result.get(0));
280+
assertEquals(PeriodAndDuration.parse("PT2H"), result.get(1));
281+
}
282+
283+
@Test
284+
public void getCollectionOfPrimitiveValuesThrowsForUnknownType() {
285+
final String testFormData = "vals=foo";
286+
final ParseNode node = new FormParseNode(testFormData).getChildNode("vals");
287+
assertThrows(
288+
RuntimeException.class, () -> node.getCollectionOfPrimitiveValues(Object.class));
289+
}
138290
}

0 commit comments

Comments
 (0)