diff --git a/nrich-webmvc/src/main/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverService.java b/nrich-webmvc/src/main/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverService.java index 72f1c44d..44a18018 100644 --- a/nrich-webmvc/src/main/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverService.java +++ b/nrich-webmvc/src/main/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverService.java @@ -33,7 +33,7 @@ public List resolveTransientPropertyList(Class type) { List transientPropertyList = new ArrayList<>(); Class currentType = type; - while (currentType != Object.class) { + while (currentType != null && currentType != Object.class) { List currentTransientPropertyList = Arrays.stream(currentType.getDeclaredFields()) .filter(this::includeField) .map(Field::getName) diff --git a/nrich-webmvc/src/test/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverServiceTest.java b/nrich-webmvc/src/test/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverServiceTest.java index ce23f164..68866b73 100644 --- a/nrich-webmvc/src/test/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverServiceTest.java +++ b/nrich-webmvc/src/test/java/net/croz/nrich/webmvc/service/DefaultTransientPropertyResolverServiceTest.java @@ -24,8 +24,10 @@ import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig; import java.util.List; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; @SpringJUnitWebConfig(WebmvcTestConfiguration.class) class DefaultTransientPropertyResolverServiceTest { @@ -44,4 +46,13 @@ void shouldResolveTransientPropertyList() { // then assertThat(resultList).containsExactlyInAnyOrder("value", "anotherValue"); } + + @Test + void shouldNotFailWhenResolvingTransientPropertyListFromInteface() { + // when + Throwable thrown = catchThrowable(() -> transientPropertyResolverService.resolveTransientPropertyList(Map.class)); + + // then + assertThat(thrown).isNull(); + } }