Class FilterEncodingPreProcessor

Prepares a filter for XML encoded for interoperability with another system. It will behave
differently depending on the compliance level chosen. A new request will have to be made and the
features will have to be tested again on the client side if there are any FidFilters in the
filter. Consider the following to understand why:

and {
nullFilter
or{
fidFilter
nullFilter
}
}

for strict it would throw an exception, for low it would be left alone, but for Medium it would
end up as:

and{
nullFilter
nullFilter
}

and getFids() would return the fids in the fidFilter.

So the final filter would (this is not standard but a common implementation) return the
results of the and filter as well as all the features that match the fids. Which is more than the
original filter would accept.

The XML Document writer can operate at different levels of compliance. The geotools level is
extremely flexible and forgiving.

All NOT(FidFilter) are changed to Filter.INCLUDE. So make sure that the filter is processed
again on the client with the original filter For a description of the difference Compliance
levels that can be used see

visitNullFilter

This is particularly used during data structure transofrmations, however the use of
null is not recommended. Please make use of Filter.NONE and Filter.ALL as placeholder
objects that communicate intent.