In previous
post I explained, simple Jersey client application, in this post I am going to
show you complete client program that work with all URIs of employee application.
As you
remember, in previous posts, we developed following URIs.
API URL
|
Method
|
Description
|
/employees
|
GET
|
Return all
employees
|
/employees
|
POST
|
Add new
employee
|
/employees/employeeID
|
GET
|
Get
employee details for given id
|
/employees/employeeID
|
PUT
|
Update
specific employee
|
/employees/employeeID
|
DELETE
|
Delete
employee details for given id
|
/employees?city=Bangalore
|
GET
|
Get all
employees staying at Bangalore
|
/employees?start=1&size=2
|
GET
|
Get all
employees with ids 1, 2 and 3
|
/employees/1/address/permanentAddress
|
GET
|
Get
Permanent address of employee 1.
|
/employees/1/address/temporaryAddress
|
GET
|
Get
Temporary address of employee 1.
|
Following
are the maven dependencies, I used to work with Jersey REST client.
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.21</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
Step 1: Create model classes Link.java, Address.java,
Employee.java
package jersey_client.model; public class Link { private String link; private String rel; public String getLink() { return link; } public void setLink(String link) { this.link = link; } public String getRel() { return rel; } public void setRel(String rel) { this.rel = rel; } public Link(String link, String rel) { this.link = link; this.rel = rel; } public Link() { } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Link [link=").append(link).append(", rel=").append(rel) .append("]"); return builder.toString(); } }
package jersey_client.model; public class Address { private String street; private String city; private String state; private String country; public Address() { this("No Data", "No Data", "No Data", "No Data"); } public Address(String area, String city, String state, String country) { super(); this.street = area; this.city = city; this.state = state; this.country = country; } public String getArea() { return street; } public String getCity() { return city; } public String getCountry() { return country; } public String getState() { return state; } public void setArea(String area) { this.street = area; } public void setCity(String city) { this.city = city; } public void setCountry(String country) { this.country = country; } public void setState(String state) { this.state = state; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Address [street=").append(street).append(", city=") .append(city).append(", state=").append(state) .append(", country=").append(country).append("]"); return builder.toString(); } }
package jersey_client.model; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlTransient; public class Employee { private String firstName; private String lastName; private long id; private List<Link> links = new ArrayList<Link>(); private transient Address permAddrees; private transient Address tempAddrees; public Employee() { this("No Data", "No Data", -1, new Address(), new Address()); } public Employee(String firstName, String lastName, long id, Address permAddrees, Address tempAddrees) { super(); this.firstName = firstName; this.lastName = lastName; this.id = id; this.permAddrees = permAddrees; this.tempAddrees = tempAddrees; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public long getId() { return id; } public void setId(long id) { this.id = id; } public Address getPermAddrees() { return permAddrees; } public void setPermAddrees(Address permAddrees) { this.permAddrees = permAddrees; } @XmlTransient public Address getTempAddrees() { return tempAddrees; } public void setTempAddrees(Address tempAddrees) { this.tempAddrees = tempAddrees; } public List<Link> getLinks() { return links; } public void setLinks(List<Link> links) { this.links = links; } public void updateLinks(String tempAddressURL, String permAddressURL) { links = new ArrayList<>(); Link link1 = new Link(tempAddressURL, "Temporary Address"); Link link2 = new Link(permAddressURL, "Permanent Address"); links.add(link1); links.add(link2); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Employee [firstName=").append(firstName) .append(", lastName=").append(lastName).append(", id=") .append(id).append(", links=").append(links) .append(", permAddrees=").append(permAddrees) .append(", tempAddrees=").append(tempAddrees).append("]"); return builder.toString(); } }
Step 2: Create package "jersey_client.employee".
Create classes EmployeeRestClient.java, EmployeeRestClientTest.java.
package jersey_client.employee; 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.client.WebTarget; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import jersey_client.model.Address; import jersey_client.model.Employee; public class EmployeeRestClient { private static String rootURI = "http://localhost:8080/jersey_tutorial"; private static Client client = ClientBuilder.newClient(); public static List<Employee> getAllEmployees() { WebTarget target = client.target(rootURI).path("employees"); List<Employee> employees = target.request(MediaType.APPLICATION_JSON) .get(new GenericType<List<Employee>>() { }); return employees; } public static Employee getEmployee(long empId) { WebTarget target = client.target(rootURI).path("employees") .path("" + empId); Employee employee = target.request(MediaType.APPLICATION_JSON).get( Employee.class); return employee; } public static Employee updateEmployee(int empId, Employee emp) { WebTarget target = client.target(rootURI).path("employees") .path("" + empId); Entity<Employee> entity = Entity .entity(emp, MediaType.APPLICATION_JSON); Response res = target.request(MediaType.APPLICATION_JSON).put(entity); return res.readEntity(Employee.class); } public static Employee addNewEmployee(Employee emp) { WebTarget target = client.target(rootURI).path("employees"); Entity<Employee> entity = Entity .entity(emp, MediaType.APPLICATION_JSON); Response res = target.request(MediaType.APPLICATION_JSON).post(entity); return res.readEntity(Employee.class); } public static Employee deleteEmployee(long empId) { WebTarget target = client.target(rootURI).path("employees") .path("" + empId); Employee emp = target.request(MediaType.APPLICATION_JSON).delete( Employee.class); return emp; } public static List<Employee> getEmployeesStayingAtCity(String city) { WebTarget target = client.target(rootURI).path("employees") .queryParam("city", city); List<Employee> employees = target.request(MediaType.APPLICATION_JSON) .get(new GenericType<List<Employee>>() { }); return employees; } public static List<Employee> getEmployees(long start, long size) { WebTarget target = client.target(rootURI).path("employees") .queryParam("start", start).queryParam("size", size); List<Employee> employees = target.request(MediaType.APPLICATION_JSON) .get(new GenericType<List<Employee>>() { }); return employees; } public static Address getPermanentAddress(long empId) { WebTarget target = client.target(rootURI).path("employees") .path("" + empId).path("address").path("permanentAddress"); Address address = target.request(MediaType.APPLICATION_JSON).get( Address.class); return address; } public static Address getTemporaryAddress(long empId) { WebTarget target = client.target(rootURI).path("employees") .path("" + empId).path("address").path("temporaryAddress"); Address address = target.request(MediaType.APPLICATION_JSON).get( Address.class); return address; } }
package jersey_client.employee; import static jersey_client.employee.EmployeeRestClient.addNewEmployee; import static jersey_client.employee.EmployeeRestClient.deleteEmployee; import static jersey_client.employee.EmployeeRestClient.getAllEmployees; import static jersey_client.employee.EmployeeRestClient.getEmployee; import static jersey_client.employee.EmployeeRestClient.getEmployees; import static jersey_client.employee.EmployeeRestClient.getEmployeesStayingAtCity; import static jersey_client.employee.EmployeeRestClient.getPermanentAddress; import static jersey_client.employee.EmployeeRestClient.getTemporaryAddress; import static jersey_client.employee.EmployeeRestClient.updateEmployee; import java.util.List; import jersey_client.model.Address; import jersey_client.model.Employee; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class EmployeeRestClientTest { private static Gson gson = new GsonBuilder().setPrettyPrinting().create(); private static void printStars() { System.out.println("****************************************"); } public static void main(String args[]) { Employee emp1 = getEmployee(3); List<Employee> employees = getAllEmployees(); /* Adding new employee */ Address tempAddr = new Address(); Address permAddr = new Address(); tempAddr.setArea("Domlur"); tempAddr.setCity("Bangalore"); tempAddr.setCountry("India"); tempAddr.setState("Karnataka"); permAddr.setArea("MGRoad"); permAddr.setCity("Jaipur"); permAddr.setCountry("India"); permAddr.setState("Rajasthan"); Employee emp2 = new Employee(); emp2.setFirstName("Sankalp"); emp2.setLastName("Dubey"); emp2.setTempAddrees(tempAddr); emp2.setPermAddrees(permAddr); Employee emp3 = addNewEmployee(emp2); /* Update employee 1 */ Employee emp4 = updateEmployee(1, emp2); /* Delete employee 2 */ Employee emp5 = deleteEmployee(2); /* Get employees staying at Hyderabad */ List<Employee> employees2 = getEmployeesStayingAtCity("Hyderabad"); /* Get Employees from ids 1, 2, 3, 4, 5 */ List<Employee> employees3 = getEmployees(1, 5); /* Get Permanent address of employee 3 */ Address permAddr1 = getPermanentAddress(3); /* Get Temporary address of employee 3 */ Address tempAddr1 = getTemporaryAddress(3); System.out.println("Employee 3 details"); printStars(); System.out.println(gson.toJson(emp1)); System.out.println("All employee details"); printStars(); System.out.println(gson.toJson(employees)); System.out.println("New employee added"); printStars(); System.out.println(gson.toJson(emp3)); System.out.println("Updated employee 1"); printStars(); System.out.println(gson.toJson(emp4)); System.out.println("Employee deleted with id 2"); printStars(); System.out.println(gson.toJson(emp5)); System.out.println("Employees staying at Hyderabad"); printStars(); System.out.println(gson.toJson(employees2)); System.out.println("First five employees are"); printStars(); System.out.println(gson.toJson(employees3)); System.out.println("Permanenet Address of employee 3 is"); printStars(); System.out.println(gson.toJson(permAddr1)); System.out.println("Temporary Address of employee 3 is"); printStars(); System.out.println(gson.toJson(tempAddr1)); } }
Run EmployeeRestClientTest,
you will get following output.
Employee 3 details **************************************** { "firstName": "Rama Krishna", "lastName": "Gurram", "id": 3, "links": [ { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/temporaryAddress", "rel": "Temporary Address" }, { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/permanentAddress", "rel": "Permanent Address" } ] } All employee details **************************************** [ { "firstName": "Hari Krishna", "lastName": "Gurram", "id": 1, "links": [] }, { "firstName": "PTR", "lastName": "PTR", "id": 2, "links": [] }, { "firstName": "Rama Krishna", "lastName": "Gurram", "id": 3, "links": [ { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/temporaryAddress", "rel": "Temporary Address" }, { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/permanentAddress", "rel": "Permanent Address" } ] } ] New employee added **************************************** { "firstName": "Sankalp", "lastName": "Dubey", "id": 4, "links": [] } Updated employee 1 **************************************** { "firstName": "Sankalp", "lastName": "Dubey", "id": 1, "links": [] } Employee deleted with id 2 **************************************** { "firstName": "PTR", "lastName": "PTR", "id": 2, "links": [] } Employees staying at Hyderabad **************************************** [ { "firstName": "Rama Krishna", "lastName": "Gurram", "id": 3, "links": [ { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/temporaryAddress", "rel": "Temporary Address" }, { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/permanentAddress", "rel": "Permanent Address" } ] } ] First five employees are **************************************** [ { "firstName": "Sankalp", "lastName": "Dubey", "id": 1, "links": [] }, { "firstName": "Rama Krishna", "lastName": "Gurram", "id": 3, "links": [ { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/temporaryAddress", "rel": "Temporary Address" }, { "link": "http://localhost:8080/jersey_tutorial/employees/3/address/permanentAddress", "rel": "Permanent Address" } ] }, { "firstName": "Sankalp", "lastName": "Dubey", "id": 4, "links": [] } ] Permanenet Address of employee 3 is **************************************** { "street": "Bharath Nagar", "city": "Hyderabad", "state": "Andhra Pradesh", "country": "India" } Temporary Address of employee 3 is **************************************** { "street": "SR Nagar", "city": "Hyderabad", "state": "Andhra Pradesh", "country": "India" }
No comments:
Post a Comment