Skip to content

Commit

Permalink
Fix optionals when empty
Browse files Browse the repository at this point in the history
Signed-off-by: Jorge Bescos Gascon <[email protected]>
  • Loading branch information
jbescos committed Nov 15, 2022
1 parent bb65db4 commit 0ed2544
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -279,11 +279,15 @@ public T fromString(String value) {
} else {
final List<ClassTypePair> ctps = ReflectionHelper.getTypeArgumentAndClass(genericType);
final ClassTypePair ctp = (ctps.size() == 1) ? ctps.get(0) : null;

final boolean empty = value.isEmpty();
for (ParamConverterProvider provider : Providers.getProviders(manager, ParamConverterProvider.class)) {
final ParamConverter<?> converter = provider.getConverter(ctp.rawClass(), ctp.type(), annotations);
if (converter != null) {
return (T) Optional.of(value).map(s -> converter.fromString(value));
if (empty) {
return (T) Optional.empty();
} else {
return (T) Optional.of(value).map(s -> converter.fromString(value));
}
}
}
/*
Expand Down Expand Up @@ -322,7 +326,7 @@ public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, An

@Override
public T fromString(String value) {
if (value == null) {
if (value == null || value.isEmpty()) {
return (T) optionals.empty();
} else {
return (T) optionals.of(value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ public void fromOptionalDate() {
Response invalid = target("/OptionalResource/fromDate").queryParam(PARAM_NAME, "invalid").request().get();
assertEquals(200, missing.getStatus());
assertEquals(new Date(1609459200000L), missing.readEntity(Date.class));
assertEquals(404, empty.getStatus());
assertFalse(empty.hasEntity());
assertEquals(200, empty.getStatus());
assertEquals(new Date(1609459200000L), empty.readEntity(Date.class));
assertEquals(200, notEmpty.getStatus());
assertEquals(new Date(1619870400000L), notEmpty.readEntity(Date.class));
assertEquals(404, invalid.getStatus());
Expand All @@ -173,8 +173,8 @@ public void fromOptionalInstant() {
Response invalid = target("/OptionalResource/fromInstant").queryParam(PARAM_NAME, "invalid").request().get();
assertEquals(200, missing.getStatus());
assertEquals("2021-01-01T00:00:00Z", missing.readEntity(String.class));
assertEquals(404, empty.getStatus());
assertFalse(empty.hasEntity());
assertEquals(200, empty.getStatus());
assertEquals("2021-01-01T00:00:00Z", empty.readEntity(String.class));
assertEquals(200, notEmpty.getStatus());
assertEquals("2021-05-01T12:00:00Z", notEmpty.readEntity(String.class));
assertEquals(404, invalid.getStatus());
Expand Down

0 comments on commit 0ed2544

Please sign in to comment.