diff --git a/testsuite/performance/tests/src/main/java/org/keycloak/performance/iteration/RandomSublist.java b/testsuite/performance/tests/src/main/java/org/keycloak/performance/iteration/RandomSublist.java
index d4e97cd..846f6df 100644
--- a/testsuite/performance/tests/src/main/java/org/keycloak/performance/iteration/RandomSublist.java
+++ b/testsuite/performance/tests/src/main/java/org/keycloak/performance/iteration/RandomSublist.java
@@ -1,9 +1,12 @@
package org.keycloak.performance.iteration;
import java.util.AbstractList;
+import java.util.Collections;
import java.util.List;
+import org.apache.commons.lang.Validate;
import static org.keycloak.performance.iteration.RandomIntegers.getRandomIntegers;
import static org.keycloak.performance.iteration.UniqueRandomIntegers.getUniqueRandomIntegers;
+import org.keycloak.performance.util.ValidateNumber;
/**
*
@@ -19,11 +22,15 @@ public class RandomSublist<T> extends AbstractList<T> {
private final int size;
public RandomSublist(List<T> originalList, int seed, int sublistSize, boolean unique) {
+ Validate.notNull(originalList);
this.originalList = originalList;
- this.randomIndexesOfOriginalList = unique
- ? getUniqueRandomIntegers(seed, originalList.size())
- : getRandomIntegers(seed, originalList.size());
+ ValidateNumber.isInRange(sublistSize, 0, originalList.size());
this.size = sublistSize;
+ this.randomIndexesOfOriginalList = originalList.isEmpty()
+ ? Collections.<Integer>emptyList()
+ : (unique
+ ? getUniqueRandomIntegers(seed, originalList.size())
+ : getRandomIntegers(seed, originalList.size()));
}
public RandomSublist(List<T> originalList, int seed, int sublistSize) {
@@ -32,6 +39,9 @@ public class RandomSublist<T> extends AbstractList<T> {
@Override
public T get(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
return originalList.get(randomIndexesOfOriginalList.get(index));
}