Showing posts with label tech. Show all posts
Showing posts with label tech. Show all posts

Saturday, September 20, 2014

RestEasy 3.0


We were using RESTEasy 2.0 in on of our earlier projects. RESTEasy is a JBoss project that provides various frameworks to help you build RESTful Web Services and RESTful Java applications. The 2.0 version was quite simple to use. I decided to use version 3.0 in one of recent projects and the migration was not that tough. A lot of chages have been done in the newer version. I am going to mention the ones which I found out.

RESTEasy Client 

In version 2.0

        String url = "http://resetservice.com/api/testService";
        ClientRequest request = new ClientRequest(url);
        request.body("application/json", json);
        response = request.post();
        int status = response.getStatus();
        if (status == 200) {
            String data = (String) response.getEntity(String.class);
            Boolean value = new Gson().fromJson(data, Boolean.class);
            return value;
        }
        return false;


The same thing  in 3.0 now changes to -

     ResteasyClient client = new ResteasyClientBuilder().build();
     String result = getResponseString("http://resetservice.com/api/testService");
     Boolean returnVal = clientUtil.getObjectFromJson(Boolean.class, result);
     return returnVal; 


Authentication

I also had to use some in-house authentication technic.  I used it in very basic way. I checked for a particular request header (authorizationString) for authenticating the request. If that header is not present the request gets aborted. I used a very basic Below is the code snippet for the same.

@Provider
@ServerInterceptor
public class AuthorizationRequestFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext requestContext)
            throws IOException {
        final SecurityContext securityContext =requestContext.getSecurityContext();
        String header = requestContext.getHeaderString("authorizationString");
        try {
            if (securityContext == null || header == null || header == "" ||
                (header != null && !header.equals(
                ConfigReader.getInstance().getAuthToken()))) {
            requestContext.abortWith(
                    Response.status(Response.Status.UNAUTHORIZED).entity("User
                        cannot access the resource.").build());
        }
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}