package ameba.message.filtering;
import org.glassfish.jersey.message.filtering.EntityFilteringFeature;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
/**
* <p>
* {@link javax.ws.rs.core.Feature} used to add support for custom query parameter filtering for
* Entity Data Filtering feature. </p>
* Note: This feature also registers the
* {@link org.glassfish.jersey.message.filtering.EntityFilteringFeature}.
*
* @author Andy Pemberton (pembertona at gmail.com)
* @author icode
* @see org.glassfish.jersey.message.filtering.EntityFilteringFeature
*
*/
public final class EntityFieldsFilteringFeature implements Feature {
/**
* Constant <code>FIELDS_PARAM_NAME="model.query.param.fields"</code>
*/
public static final String QUERY_FIELDS_PARAM_NAME = "model.query.param.fields";
/**
* {@inheritDoc}
*/
@Override
public boolean configure(final FeatureContext context) {
final Configuration config = context.getConfiguration();
if (!config.isRegistered(EntityFieldsProcessor.class)) {
// register EntityFilteringFeature
if (!config.isRegistered(EntityFilteringFeature.class)) {
context.register(EntityFilteringFeature.class);
}
// Entity Processors.
context.register(EntityFieldsProcessor.class);
// Scope Resolver.
context.register(EntityFieldsScopeResolver.class);
return true;
}
return false;
}
}