JAX-RS JAVA EE import com.logicbig.example.Item; import com.logicbig.example.DataService;
import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import java.util.List;
@Path("items") public class ItemRestService {
@Context private UriInfo uriInfo;
private DataService dataService = DataService.getInstance();
@GET @Produces(MediaType.APPLICATION_JSON) public List<Item> getItems() { return dataService.getItemList(); }
@Path("{sku}") @PUT @Consumes(MediaType.APPLICATION_JSON) public Response createItem(Item item, @PathParam("sku") String sku) {
System.out.println(item); if (dataService.itemExists(sku)) { //status code 204 System.out.println("no content"); return Response.noContent() .build(); } else { dataService.createItem(item, sku); //status code 201 //sends back new URI in header key = 'LOCATION' System.out.println("good"); return Response.created(uriInfo.getAbsolutePath()) .build(); } }
@GET @Path("{sku}") @Produces(MediaType.APPLICATION_JSON) public Response getCustomer(@PathParam("sku") String sku) { Item item = dataService.getItemBySku(sku); if (item == null) { return Response.status(Response.Status.NOT_FOUND) .build(); } else { return Response.ok() .entity(item) .build(); } } }
Original Post
@GET @Path("test11") public String clientTest(@Context HttpHeaders headers) { MultivaluedMap<String, String> rh = headers.getRequestHeaders(); String str = rh.entrySet() .stream() .map(e -> e.getKey() + " = " + e.getValue()) .collect(Collectors.joining("\n"));
return str; }
Original Post
@GET @Path("test2") public String readAllCookies(@Context HttpHeaders headers) { Map<String, Cookie> cookies = headers.getCookies(); String str = cookies.entrySet() .stream() .map(e -> e.getKey() + " = " + e.getValue().getValue()) .collect(Collectors.joining("<br/>")); return str; }
Original Post
@GET @Path("{path}") public String create(@PathParam("path") String path, @Context Providers providers) { ContextResolver<MyContext> cr = providers .getContextResolver(MyContext.class, MediaType.WILDCARD_TYPE); MyContext<String> c = cr.getContext(String.class); String r = c.get(path); return "response: " + r; }
Original Postimport javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import java.net.URI;
@Path("/users") public class UserResource { @Context UriInfo uriInfo;
public UserResource() { printUriInfo("In constructor"); }
@GET public String getUsers() { printUriInfo("In getUsers() method"); return "returning dummy user list"; }
@GET @Path("{id}") public String getUserById(@PathParam("id") String id) { printUriInfo("In getUserById() method"); return "returning dummy user by id " + id; }
private void printUriInfo(String msg) { System.out.println("---------------"); System.out.println(msg); System.out.println("-- UriInfo --"); if (uriInfo == null) { System.out.println("UriInfo: " + uriInfo); return; } System.out.println("absolutePath: " + uriInfo.getAbsolutePath()); System.out.println("baseUri: " + uriInfo.getBaseUri()); System.out.println("matchedResource: " + uriInfo.getMatchedResources()); System.out.println("matchedUri: " + uriInfo.getMatchedURIs()); System.out.println("path: " + uriInfo.getPath()); System.out.println("pathParameters: " + uriInfo.getPathParameters()); System.out.println("pathSegments: " + uriInfo.getPathSegments()); System.out.println("queryParameters: " + uriInfo.getQueryParameters()); System.out.println("requestUri: " + uriInfo.getRequestUri()); System.out.println("relativize test: " + uriInfo.relativize(URI.create("test"))); System.out.println("resolve test: " + uriInfo.resolve(URI.create("test"))); } }
Original Post
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedMap; import java.util.List; import java.util.Map;
@Path("/users") public class UserResource { @Context private HttpHeaders httpHeaders;
@GET public String getUsers() { System.out.println("In getUsers() method"); printHeaderInfo(); return "returning dummy user list"; }
private void printHeaderInfo() { System.out.println("---------------"); MultivaluedMap<String, String> requestHeaders = httpHeaders.getRequestHeaders(); for (Map.Entry<String, List<String>> entry : requestHeaders.entrySet()) { System.out.println(entry.getKey() + "=" + entry.getValue()); } } }
Original Post
package com.logicbig.example;
import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.container.ResourceContext; import javax.ws.rs.core.Context;
@Path("/") public class OrderResource {
@Context private ResourceContext resourceContext;
@Path("/orders/{id}") public OrderDetails getOrderById(@PathParam("id") int orderId) { return resourceContext.initResource(new OrderDetails(orderId)); } }
Original Post
package com.logicbig.example;
import javax.ws.rs.GET; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders;
public class OrderDetails {
private final int id; @Context private HttpHeaders headers;
public OrderDetails(int id) { System.out.println("--- init --"); this.id = id; }
@GET public String getOrderDetails() { return String.format("response from getOrderDetails(), headers: %s%n", headers.getRequestHeaders()); } }
Original Post
package com.logicbig.example;
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Configuration; import javax.ws.rs.core.Context; import java.util.Map;
@Path("/") public class ExampleResource { @Context private Configuration configuration;
@GET @Path("/test1") public String getResponse() { Map<String, Object> properties = configuration.getProperties(); properties.forEach((k, v) -> System.out.println(k + " = " + v)); return "test response"; } }
Original Post
@Provider @Produces("text/csv") public class CsvWriter<T> implements MessageBodyWriter<List<T>> { @Context Providers providers;
@Override public void writeTo(List<T> ts, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { String response = ""; for (T t : ts) { try { Class<?> c = t.getClass(); //using Java Bean API to access property values BeanInfo beanInfo = Introspector.getBeanInfo(c); String temp = ""; for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { if (pd.getName().equals("class")) {//skip getClass() continue; } Object o = pd.getReadMethod().invoke(t); temp += "," + o; } if (temp.length() > 0) { temp = temp.substring(1); response += temp + "\n"; } } catch (Exception e) { throw new WebApplicationException(e); } } //using Providers instance MessageBodyWriter<String> plainTextWriter = providers.getMessageBodyWriter(String.class, genericType, annotations, MediaType.TEXT_PLAIN_TYPE); plainTextWriter.writeTo(response, String.class, genericType, annotations, mediaType, httpHeaders, entityStream); }
@Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return true; }
@Override public long getSize(List<T> ts, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return -1; } }
Original Post
package com.logicbig.example;
import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration;
@Path("/") public class ExampleResource { @Context private ServletConfig servletConfig; @Context private ServletContext servletContext; @Context private HttpServletRequest httpServletRequest; @Context private HttpServletResponse httpServletResponse;
@GET @Path("/test") public void handleRequest() throws IOException { System.out.println("-- in resource method --"); printServletConfigInfo(); printServletContextInfo(); printServletRequestInfo(); //committing response using HttpServletResponse httpServletResponse.getWriter().write("Test response"); httpServletResponse.getWriter().flush(); }
private void printServletRequestInfo() { System.out.println("-- Servlet Request --"); System.out.println("Request URI: " + httpServletRequest.getRequestURI()); Enumeration<String> headerNames = httpServletRequest.getHeaderNames(); ArrayList<String> list = Collections.list(headerNames); System.out.println("Request headers: " + list.size()); list.forEach(h -> System.out.println(h + " = " + httpServletRequest.getHeader(h))); }
private void printServletContextInfo() { System.out.println("-- Servlet Context --"); System.out.println("Context path: " + servletContext.getContextPath()); System.out.println("Server info: " + servletContext.getServerInfo()); Enumeration<String> attributeNames = servletContext.getAttributeNames(); ArrayList<String> list = Collections.list(attributeNames); System.out.println("Context attributes: " + list.size()); System.out.println("Session Tracking modes: " + servletContext.getDefaultSessionTrackingModes()); }
private void printServletConfigInfo() { System.out.println("-- Servlet Config Params --"); Enumeration<String> initParameterNames = servletConfig.getInitParameterNames(); ArrayList<String> list = Collections.list(initParameterNames); System.out.println("Init params: " + list.size()); list.forEach(n -> System.out.println(n + " = " + servletConfig.getInitParameter(n))); System.out.println("Servlet name: " + servletConfig.getServletName()); } }
Original Post
|
|