DATACMNS-1466 - Fixed potential ArrayIndexOutOfBoundsException in DefaultPersistentPropertyPath.

Introduced explicit content checks in ….getLeafProperty() and ….getBaseProperty().
This commit is contained in:
Oliver Drotbohm
2019-01-11 11:33:29 +01:00
parent 413522f514
commit 4182dace3c
2 changed files with 18 additions and 2 deletions

View File

@@ -145,7 +145,7 @@ class DefaultPersistentPropertyPath<T extends PersistentProperty<T>> implements
* @see org.springframework.data.mapping.context.PersistentPropertyPath#getLeafProperty()
*/
public T getLeafProperty() {
return properties.get(properties.size() - 1);
return properties.isEmpty() ? null : properties.get(properties.size() - 1);
}
/*
@@ -153,7 +153,7 @@ class DefaultPersistentPropertyPath<T extends PersistentProperty<T>> implements
* @see org.springframework.data.mapping.context.PersistentPropertyPath#getBaseProperty()
*/
public T getBaseProperty() {
return properties.get(0);
return properties.isEmpty() ? null : properties.get(0);
}
/*

View File

@@ -21,6 +21,7 @@ import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
@@ -148,4 +149,19 @@ public class DefaultPersistenPropertyPathUnitTests<T extends PersistentProperty<
assertThat(result, is(nullValue()));
}
@Test // DATACMNS-1466
public void returnsNullForLeafPropertyOnEmptyPath() {
PersistentPropertyPath<T> path = new DefaultPersistentPropertyPath<T>(Collections.<T> emptyList());
assertThat(path.getLeafProperty(), is(nullValue()));
}
@Test // DATACMNS-1466
public void returnsNullForBasePropertyOnEmptyPath() {
PersistentPropertyPath<T> path = new DefaultPersistentPropertyPath<T>(Collections.<T> emptyList());
assertThat(path.getBaseProperty(), is(nullValue()));
}
}