Friday, June 12, 2015

Simple restful service using jersey+json format


Resource class


package com.hps.resources;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hps.model.HelloRequest;
import com.hps.model.HelloResponse;

@Path("/admin")
public class MessageResource {
@GET
@Path("{parameter}")
public Response responseMsg( @PathParam("parameter") String parameter,
@DefaultValue("Nothing to say") @QueryParam("value") String value) throws JsonProcessingException, UnknownHostException {
String output = "Hello from: " + parameter + " : " + value;
return Response.status(200).entity(output).build();
}
@POST
@Path("/action")
@Produces(MediaType.APPLICATION_JSON)
public Response produceJson(HelloRequest helloRequest) throws JsonProcessingException, UnknownHostException{
String output = "Hello from: " + helloRequest.getParameter() + " : " +helloRequest.getMessage();

HelloResponse reponse = new HelloResponse(output);
reponse.setStatus(Response.Status.CREATED.getStatusCode());
return Response.status(200).entity(reponse).build();
}


}

HelloRequest.java



@XmlRootElement
public class HelloRequest {
private String message;
private String parameter;
//getters and setter methods
}

HelloResponse.java

public class HelloResponse {
private String message;
private int status;
//getters and setters
}


MyApplication.java(this will produce the json response)


import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import org.glassfish.jersey.filter.LoggingFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;

@ApplicationPath("/")
public class MyApplication extends Application {

@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(MessageResource.class);
return classes;
}
@Override
public Set<Object> getSingletons() {
final Set<Object> instances = new HashSet<Object>();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
instances.add(new JacksonJsonProvider(mapper));
instances.add(new LoggingFilter());
return instances;
}
}

web.xml



<servlet>
        <servlet-name>rest</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
          <param-name>javax.ws.rs.Application</param-name>
          <param-value>com.hps.resources.MyApplication</param-value>
        </init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>







No comments:

Post a Comment