users@jersey.java.net

[Jersey] Re: Using GenericType in a generic method

From: dskyberg <davidskyberg_at_gmail.com>
Date: Thu, 4 Aug 2011 07:38:01 -0700 (PDT)

Hi Pavel,
That did the trick! Thaks for your quick response. For those who might
want to do something similar, here's my working code. This function allows
me to isolate error management rather than replicating the same code
throughout the project. Previously, I needed a get function for each set of
PoJo objects.

--------------
public <T> List<T> getObjects(final Class<T> clazz, String path){

        ParameterizedType genericType = new ParameterizedType() {
            public Type[] getActualTypeArguments() {
                return new Type[] {clazz};
            }
            public Type getRawType() {
                return List.class;
            }
            public Type getOwnerType() {
                return List.class;
            }
        };
        
        GenericType&lt;List&lt;T&gt;> type = new GenericType&lt;List&lt;
T&gt;>(genericType) {};
        
        WebResource r = client.resource(props.props.getResourceServerPath());
                
        // Get JAXB response
        ClientResponse response = r.path(path)
                                                 .header(HttpHeaders.AUTHORIZATION, accessTokenAsHeader())
                                                 .accept(MediaType.APPLICATION_JSON)
                                                 .get(ClientResponse.class);

        if(response.getClientResponseStatus() == ClientResponse.Status.OK){
                List<T> list = response.getEntity(type);
                        
                StringBuilder sb = new StringBuilder();
                sb.append(String.format("\tNo. of %1$ss: %2$s", clazz.getName(),
list.size()));
                logger.info(sb.toString());
                return list;
        }
        else{
                ResourceServerError error = response.getEntity(ResourceServerError.class);
                logger.info(String.format("Resource Server returned error: %1#s -
%2#s",error.getStatus(), error.getMessage()));
                return null;
        }
}


--
View this message in context: http://jersey.576304.n2.nabble.com/Using-GenericType-in-a-generic-method-tp6650758p6652984.html
Sent from the Jersey mailing list archive at Nabble.com.