class NotifierInfoCatalogResource {

    @GET
    @Path("/notifiers")
    @Timed
    public Response listNotifiers(@Context UriInfo uriInfo, @Context SecurityContext securityContext) {
        List<QueryParam> queryParams = new ArrayList<>();
        MultivaluedMap<String, String> params = uriInfo.getQueryParameters();
        Collection<Notifier> notifiers;
        if (params.isEmpty()) {
            notifiers = catalogService.listNotifierInfos();
        } else {
            queryParams = WSUtils.buildQueryParameters(params);
            notifiers = catalogService.listNotifierInfos(queryParams);
        }
        if (notifiers != null) {
            boolean notifierUser = SecurityUtil.hasRole(authorizer, securityContext, Roles.ROLE_NOTIFIER_USER);
            if (notifierUser) {
                LOG.debug("Returning all Notifiers since user has role: {}", Roles.ROLE_NOTIFIER_USER);
            } else {
                notifiers = SecurityUtil.filter(authorizer, securityContext, Notifier.NAMESPACE, notifiers, READ);
            }
            return WSUtils.respondEntities(notifiers, OK);
        }

        throw EntityNotFoundException.byFilter(queryParams.toString());
    }

    public  NotifierInfoCatalogResource(StreamlineAuthorizer authorizer, StreamCatalogService catalogService, FileStorage fileStorage);

}