The javadoc of OrderedFilterBeanDefinitionDecorator says:
If the user's filter already implements Ordered, and no "order" attribute is specified, the filter's default order will be used.
When a custom filter is specified via a "custom-filter" element without an "after", "before" or "position" attribute in the configuration, altough it implements the "Ordered" interface, the OrderedFilterBeanDefinitionDecorator always throws the exception:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: A single 'after', 'before', or 'position' attribute must be supplied
This behaviour obvisiously violates the contract defined by the javadoc and the documentation of the "custom-filter" element.
I think the problem is at line 63 of the OrderedFilterBeanDefinitionDecorator class. It would be sufficient to remove that code as the "order" attributes are checked again at line 110 with respect if the filter implements at least the "Ordered" interface.