package com.netflix.suro.routing.filter.lang;
import com.netflix.suro.routing.filter.MessageFilter;
/**
* General contract for any filter language which relates to a methodology of converting a language expression to a
* valid {@link com.netflix.suro.routing.filter.MessageFilter} instance consumable by {@link com.netflix.suro.routing.filter}
*
* @author Nitesh Kant (nkant@netflix.com)
*/
public interface FilterLanguageSupport<T> {
/**
* Converts the passed filter object to a valid {@link MessageFilter}.
*
* @param filter Filter object to convert.
*
* @return {@link MessageFilter} corresponding to the passed filter.
*
* @throws InvalidFilterException If the passed filter was invalid.
*/
MessageFilter convert(T filter) throws InvalidFilterException;
}