In the example program REST is implemented using Jersey Framework.
Download Jersey framework from here...
I used Dynamic Web Project in Eclipse for coding. Extract jersey zip file and copy all the .jar files from api, ext, lib folders to WebContent/WEB-INF/lib folder.
Employee.java
package in.theinsanetechie.rest; import java.io.Serializable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "employee") public class Employee implements Serializable { private static final long serialVersionUID = 1L; private int empcode; private String name; private String designation; private float basicpay; public Employee() { } public Employee(int empcode, String name, String designation, float basicpay) { super(); this.empcode = empcode; this.name = name; this.designation = designation; this.basicpay = basicpay; } public int getEmpcode() { return empcode; } @XmlElement public void setEmpcode(int empcode) { this.empcode = empcode; } public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public String getDesignation() { return designation; } @XmlElement public void setDesignation(String designation) { this.designation = designation; } public float getBasicpay() { return basicpay; } @XmlElement public void setBasicpay(float basicpay) { this.basicpay = basicpay; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Employee other = (Employee) obj; if (Float.floatToIntBits(basicpay) != Float .floatToIntBits(other.basicpay)) return false; if (designation == null) { if (other.designation != null) return false; } else if (!designation.equals(other.designation)) return false; if (empcode != other.empcode) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
EmployeeAccessObject.java
package in.theinsanetechie.rest; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; public class EmployeeAccessObject { private String fileName = "Employee.dat"; @SuppressWarnings("unchecked") public ListgetFullList() { List list = null; File file = new File(fileName); try { if (file.exists()) { FileInputStream fileInputStream = new FileInputStream(file); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); list = (List ) objectInputStream.readObject(); objectInputStream.close(); } else{ Employee employee = new Employee(1001, "The Insane Techie", "Dev", 99999.99f); list = new ArrayList (); list.add(employee); saveList(list); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return list; } public Employee get(int empcode) { List list = getFullList(); for (Employee temp : list) { if (temp.getEmpcode() == empcode) { return temp; } } return null; } public boolean addToList(Employee emp){ List list = getFullList(); boolean exists = false; for(Employee temp: list){ if(temp.getEmpcode() == emp.getEmpcode()){ exists = true; break; } } if(!exists){ list.add(emp); saveList(list); return true; } return false; } public boolean updateList(Employee emp){ List list = getFullList(); for(Employee temp: list){ if(temp.getEmpcode() == emp.getEmpcode()){ int index = list.indexOf(temp); list.set(index, emp); saveList(list); return true; } } return false; } public boolean deleteFromList(int empcode){ List list = getFullList(); for(Employee temp: list){ if(temp.getEmpcode() == empcode){ int index = list.indexOf(temp); list.remove(index); saveList(list); return true; } } return false; } private void saveList(List list) { File file = new File(fileName); try { FileOutputStream fileOutputStream = new FileOutputStream(file); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(list); objectOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
EmployeeService.java
package in.theinsanetechie.rest; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.OPTIONS; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @Path("/EmployeeService") public class EmployeeService { EmployeeAccessObject accessObject = new EmployeeAccessObject(); private static final String SUCCESS = "success "; private static final String FAILURE = "failure "; @GET @Path("/employees") @Produces(MediaType.APPLICATION_XML) public ListgetFullList(){ return accessObject.getFullList(); } @GET @Path("/employees/{empcode}") @Produces(MediaType.APPLICATION_XML) public Employee get(@PathParam("empcode") int empcode){ return accessObject.get(empcode); } @PUT @Path("/employees") @Produces(MediaType.APPLICATION_XML) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String add(@FormParam("empcode") int empcode, @FormParam("name") String name, @FormParam("designation") String designation, @FormParam("basicpay") float basicpay, @Context HttpServletResponse servletResponse) throws IOException{ Employee emp = new Employee(empcode, name, designation, basicpay); boolean result = accessObject.addToList(emp); if(result == true){ return SUCCESS; } return FAILURE; } @POST @Path("/employees") @Produces(MediaType.APPLICATION_XML) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String update(@FormParam("empcode") int empcode, @FormParam("name") String name, @FormParam("designation") String designation, @FormParam("basicpay") float basicpay, @Context HttpServletResponse servletResponse) throws IOException{ Employee emp = new Employee(empcode, name, designation, basicpay); boolean result = accessObject.updateList(emp); if(result == true){ return SUCCESS; } return FAILURE; } @DELETE @Path("/employees/{empcode}") @Produces(MediaType.APPLICATION_XML) public String deleteUser(@PathParam("empcode") int empcode){ boolean result = accessObject.deleteFromList(empcode); if(result == true){ return SUCCESS; } return FAILURE; } @OPTIONS @Path("/employees") @Produces(MediaType.APPLICATION_XML) public String getSupportedOperations(){ return " GET, PUT, POST, DELETE "; } }
WebServiceTester.java
package in.theinsanetechie.rest; import java.util.List; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.core.Form; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType; public class WebServiceTester { private Client client; private String REST_SERVICE_URL = "http://localhost:8080/EmployeeManagement/rest/EmployeeService/employees"; private static final String SUCCESS="success "; private static final String PASS = "pass"; private static final String FAIL = "fail"; private void init(){ this.client = ClientBuilder.newClient(); } public static void main(String[] args){ WebServiceTester tester = new WebServiceTester(); tester.init(); tester.testGetFullList(); tester.testGet(); tester.testUpdate(); tester.testAdd(); tester.testDelete(); } private void testGetFullList(){ GenericType> list = new GenericType
>() {}; List
employees = client .target(REST_SERVICE_URL) .request(MediaType.APPLICATION_XML) .get(list); String result = PASS; if(employees.isEmpty()){ result = FAIL; } System.out.println("Test case name: testGetFullList, Result: " + result ); } private void testGet(){ Employee sampleEmp = new Employee(); sampleEmp.setEmpcode(1001); Employee emp = client .target(REST_SERVICE_URL) .path("/{empcode}") .resolveTemplate("empcode", 1001) .request(MediaType.APPLICATION_XML) .get(Employee.class); String result = FAIL; if(sampleEmp != null && sampleEmp.getEmpcode() == emp.getEmpcode()){ result = PASS; } System.out.println("Test case name: testGet, Result: " + result ); } private void testUpdate(){ Form form = new Form(); form.param("empcode", "1001"); form.param("name", "Dhanoop Bhaskar"); form.param("designation", "Computer Scientist"); form.param("basicpay", "100000.00f"); String callResult = client .target(REST_SERVICE_URL) .request(MediaType.APPLICATION_XML) .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class); String result = PASS; if(!SUCCESS.equals(callResult)){ result = FAIL; } System.out.println("Test case name: testUpdate, Result: " + result ); } private void testAdd(){ Form form = new Form(); form.param("empcode", "1002"); form.param("name", "The Insane Techie"); form.param("designation", "Computer Scientist"); form.param("basicpay", "100000.00f"); String callResult = client .target(REST_SERVICE_URL) .request(MediaType.APPLICATION_XML) .put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class); String result = PASS; if(!SUCCESS.equals(callResult)){ result = FAIL; } System.out.println("Test case name: testAdd, Result: " + result ); } private void testDelete(){ String callResult = client .target(REST_SERVICE_URL) .path("/{empcode}") .resolveTemplate("empcode", 1002) .request(MediaType.APPLICATION_XML) .delete(String.class); String result = PASS; if(!SUCCESS.equals(callResult)){ result = FAIL; } System.out.println("Test case name: testDelete, Result: " + result ); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Employee Management</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>in.theinsanetechie.rest</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
1 Comments
Heyy thanks for providing this nice info.. i found your site in google search.. thanks regards
ReplyDeleteweb consultants in karimnagar