Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class HttpServletRequestWritableWrapper extends HttpServletRequestWrapper {
- private final Logger logger = org.slf4j.LoggerFactory.getLogger(HttpServletRequestWritableWrapper.class);
- private final ByteArrayInputStream decryptedBody;
- HttpServletRequestWritableWrapper(HttpServletRequest request, byte[] decryptedData) {
- super(request);
- decryptedBody = new ByteArrayInputStream(decryptedData);
- }
- @Override
- public String getHeader(String name) {
- String headerValue = super.getHeader(name);
- if("Accept".equalsIgnoreCase(name))
- {
- logger.debug("Accept header changing :");
- return headerValue.replaceAll(
- MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE
- );
- }
- else if ("Content-Type".equalsIgnoreCase(name))
- {
- logger.debug("Content type change: ");
- return headerValue.replaceAll(MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE);
- }
- return headerValue;
- }
- @Override
- public Enumeration<String> getHeaderNames() {
- return super.getHeaderNames();
- }
- @Override
- public String getContentType() {
- String contentTypeValue = super.getContentType();
- if (MediaType.TEXT_PLAIN_VALUE.equalsIgnoreCase(contentTypeValue)) {
- logger.debug("Changing on getContentType():");
- return MediaType.APPLICATION_JSON_VALUE;
- }
- return contentTypeValue;
- }
- @Override
- public BufferedReader getReader() throws UnsupportedEncodingException {
- return new BufferedReader(new InputStreamReader(decryptedBody, UTF_8));
- }
- @Override
- public ServletInputStream getInputStream() throws IOException {
- return new ServletInputStream() {
- @Override
- public int read() {
- return decryptedBody.read();
- }
- };
- }
- @WebFilter(displayName = "EncryptionFilter", urlPatterns = "/*")
- public class EncryptionFilter implements Filter {
- private final Logger logger = org.slf4j.LoggerFactory.getLogger(EncryptionFilter.class);
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- }
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- byte[] data = "{"currentClientVersion":{"majorElement":"1","minorElement":"2"}}".getBytes();
- logger.debug("data string " + data.toString());
- logger.debug("Content-type before: " + servletRequest.getContentType());
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- HttpServletRequestWritableWrapper requestWrapper = new HttpServletRequestWritableWrapper(request, data);
- //logger.debug("Accept Header: " + requestWrapper.getHeader("Accept"));
- //logger.debug("Content-Type: " + requestWrapper.getHeader("Content-Type"));
- //logger.debug("Contenttype" + requestWrapper.getContentType());
- filterChain.doFilter(requestWrapper, servletResponse);
- }
- @Override
- public void destroy() {
- }
- }
- @Override
- public Enumeration<String> getHeaders(String name) {
- List<String> headerVals = Collections.list(super.getHeaders(name));
- int index = 0;
- for (String value : headerVals) {
- if ("Content-Type".equalsIgnoreCase(name)) {
- logger.debug("Content type change: ");
- headerVals.set(index, MediaType.APPLICATION_JSON_VALUE);
- }
- index++;
- }
- return Collections.enumeration(headerVals);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement