Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. class HttpServletRequestWritableWrapper extends HttpServletRequestWrapper {
  2. private final Logger logger = org.slf4j.LoggerFactory.getLogger(HttpServletRequestWritableWrapper.class);
  3. private final ByteArrayInputStream decryptedBody;
  4.  
  5. HttpServletRequestWritableWrapper(HttpServletRequest request, byte[] decryptedData) {
  6. super(request);
  7. decryptedBody = new ByteArrayInputStream(decryptedData);
  8. }
  9.  
  10.  
  11.  
  12. @Override
  13. public String getHeader(String name) {
  14. String headerValue = super.getHeader(name);
  15. if("Accept".equalsIgnoreCase(name))
  16. {
  17. logger.debug("Accept header changing :");
  18. return headerValue.replaceAll(
  19. MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE
  20. );
  21. }
  22. else if ("Content-Type".equalsIgnoreCase(name))
  23. {
  24. logger.debug("Content type change: ");
  25. return headerValue.replaceAll(MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE);
  26. }
  27. return headerValue;
  28. }
  29.  
  30. @Override
  31. public Enumeration<String> getHeaderNames() {
  32. return super.getHeaderNames();
  33. }
  34.  
  35. @Override
  36. public String getContentType() {
  37. String contentTypeValue = super.getContentType();
  38. if (MediaType.TEXT_PLAIN_VALUE.equalsIgnoreCase(contentTypeValue)) {
  39. logger.debug("Changing on getContentType():");
  40. return MediaType.APPLICATION_JSON_VALUE;
  41. }
  42. return contentTypeValue;
  43. }
  44.  
  45.  
  46. @Override
  47. public BufferedReader getReader() throws UnsupportedEncodingException {
  48. return new BufferedReader(new InputStreamReader(decryptedBody, UTF_8));
  49. }
  50.  
  51. @Override
  52. public ServletInputStream getInputStream() throws IOException {
  53. return new ServletInputStream() {
  54. @Override
  55. public int read() {
  56. return decryptedBody.read();
  57. }
  58. };
  59. }
  60.  
  61. @WebFilter(displayName = "EncryptionFilter", urlPatterns = "/*")
  62. public class EncryptionFilter implements Filter {
  63. private final Logger logger = org.slf4j.LoggerFactory.getLogger(EncryptionFilter.class);
  64.  
  65. @Override
  66. public void init(FilterConfig filterConfig) throws ServletException {
  67.  
  68. }
  69.  
  70. @Override
  71. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  72. byte[] data = "{"currentClientVersion":{"majorElement":"1","minorElement":"2"}}".getBytes();
  73.  
  74. logger.debug("data string " + data.toString());
  75.  
  76. logger.debug("Content-type before: " + servletRequest.getContentType());
  77.  
  78. HttpServletRequest request = (HttpServletRequest) servletRequest;
  79. HttpServletRequestWritableWrapper requestWrapper = new HttpServletRequestWritableWrapper(request, data);
  80. //logger.debug("Accept Header: " + requestWrapper.getHeader("Accept"));
  81. //logger.debug("Content-Type: " + requestWrapper.getHeader("Content-Type"));
  82. //logger.debug("Contenttype" + requestWrapper.getContentType());
  83.  
  84. filterChain.doFilter(requestWrapper, servletResponse);
  85.  
  86.  
  87. }
  88.  
  89. @Override
  90. public void destroy() {
  91.  
  92. }
  93.  
  94.  
  95. }
  96.  
  97. @Override
  98. public Enumeration<String> getHeaders(String name) {
  99. List<String> headerVals = Collections.list(super.getHeaders(name));
  100. int index = 0;
  101. for (String value : headerVals) {
  102. if ("Content-Type".equalsIgnoreCase(name)) {
  103. logger.debug("Content type change: ");
  104. headerVals.set(index, MediaType.APPLICATION_JSON_VALUE);
  105. }
  106.  
  107. index++;
  108. }
  109.  
  110. return Collections.enumeration(headerVals);
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement