users@jersey.java.net

[Jersey] Checking service call for Accept-Language header

From: DirkM <dirk_at_olx.com>
Date: Fri, 28 Aug 2009 14:46:39 -0500 (CDT)

Some of my service calls require the Accept-Language header to be set. I want
to return a 400 if the service is called and the header is not set.

I took a look at the
http://fisheye4.atlassian.com/browse/jersey/trunk/jersey/jersey-server/src/main/java/com/sun/jersey/api/container/filter/RolesAllowedResourceFilterFactory.java?r=2584
source code for RolesAllowedResourceFilterFactory, and created something
similar that checks the resource method for an annotation called
@LanguageRequired:

...
public class MyResource {
    @GET
    @Path("/testLanguage")
    @LocaleRequired
    public String testLanguage() {
        return "test";
    }
}
...

public class LocaleCheckFilterFactory implements ResourceFilterFactory {
    
    private class Filter implements ResourceFilter, ContainerRequestFilter {
        @Override
        public ContainerRequestFilter getRequestFilter() {
            return this;
        }

        @Override
        public ContainerResponseFilter getResponseFilter() {
            return null;
        }

        @Override
        public ContainerRequest filter(ContainerRequest request) {
            if(/* Accept-Language is not present */) {
                throw new MissingLocaleException("Missing or empty
Accept-Language header");
            }
            
            return request;
        }
    }
    
    
    @Override
    public List<ResourceFilter> create(AbstractMethod am) {

        if (!am.isAnnotationPresent(LocaleRequired.class)) {
            return null;
        }

        return Collections.<ResourceFilter>singletonList(new Filter());
    }
}


The problem is that when I debug, the AbstractMethod parameter has the @GET
and @Path annotations but doesn't have the @LocaleRequired annotation in its
list of annotations.

Can anyone point me to why this would be, or a better way of achieving my
aim?
Thanks,
Dirk
-- 
View this message in context: http://n2.nabble.com/Checking-service-call-for-Accept-Language-header-tp3537044p3537044.html
Sent from the Jersey mailing list archive at Nabble.com.