1414import org .restlet .Restlet ;
1515import org .restlet .routing .Route ;
1616
17+ import java .security .SecureRandom ;
1718import java .util .Collections ;
1819import java .util .List ;
1920import java .util .Random ;
3435 * @see java.util.List
3536 */
3637public final class RouteList extends WrapperList <Route > {
37- /** The index of the last route used in the round robin mode. */
38+ /** The index of the last route used in the round- robin mode. */
3839 private volatile int lastIndex ;
40+ /** Used when asked to return a random route. */
41+ private final SecureRandom random = new SecureRandom ();
3942
4043 /**
4144 * Constructor.
4245 */
4346 public RouteList () {
44- super (new CopyOnWriteArrayList <Route >());
47+ super (new CopyOnWriteArrayList <>());
4548 this .lastIndex = -1 ;
4649 }
4750
@@ -51,7 +54,7 @@ public RouteList() {
5154 * @param delegate The delegate list.
5255 */
5356 public RouteList (List <Route > delegate ) {
54- super (new CopyOnWriteArrayList <Route >(delegate ));
57+ super (new CopyOnWriteArrayList <>(delegate ));
5558 this .lastIndex = -1 ;
5659 }
5760
@@ -159,7 +162,7 @@ public synchronized Route getRandom(Request request, Response response, float re
159162 int length = size ();
160163
161164 if (length > 0 ) {
162- int j = new Random () .nextInt (length );
165+ int j = random .nextInt (length );
163166 Route route = get (j );
164167
165168 if (route .score (request , response ) >= requiredScore ) {
@@ -169,7 +172,7 @@ public synchronized Route getRandom(Request request, Response response, float re
169172 boolean loopedAround = false ;
170173
171174 do {
172- if ((j == length ) && ( !loopedAround ) ) {
175+ if ((j == length ) && !loopedAround ) {
173176 j = 0 ;
174177 loopedAround = true ;
175178 }
@@ -187,7 +190,7 @@ public synchronized Route getRandom(Request request, Response response, float re
187190 }
188191
189192 /**
190- * Removes all routes routing to a given target.
193+ * Removes all routes to a given target.
191194 *
192195 * @param target The target Restlet to detach.
193196 */
0 commit comments