I like how the tests are encapsulated in the validate method. The last commit adds an explicit null checks to the filter setters. However, perhaps worse than the use of nulls is inconsistent APIs. The single valued String fields such as analyzer and tokenizer continue to accept null values (since there is no clean non-null default like Strings.EMPTY_ARRAY), which can be set in the REST action. If we enforce non nulls consistently in the setters, we will end up with code such as:

if (request.param("analyzer") != null) analyzeRequest.analyzer(request.param("analyzer"));

Certainly doable, I have written that check thousands of times in my lifetime, but is it worthwhile for fields whose values that can be null? Six of one, half dozen of the other.