Преобразование нового Java-кода в более старый синтаксис Java - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь преобразовать класс, написанный на Java 1.8, в Java 1.4. Это старое Java-приложение, но я никогда не кодировал в Java 1.4 раньше.

Вот код Java 1.8:

public class RequestContext implements Filter {

    private static final ThreadLocal<HttpServletRequest> REQUEST_HOLDER = new ThreadLocal<HttpServletRequest>();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

        if (servletRequest instanceof HttpServletRequest) {
            REQUEST_HOLDER.set((HttpServletRequest) servletRequest);
        }

        try {
            chain.doFilter(servletRequest, servletResponse);
        }
        finally {
            REQUEST_HOLDER.remove(); // Clean up the ThreadLocal
        }
    }

    /**
     * @return the HttpServletRequest for the current thread.
     */
    public static HttpServletRequest getRequest() {
        return REQUEST_HOLDER.get();
    }

    @Override
    public void destroy() {

    }

}

Как мне преобразовать вышеперечисленное в Java 1.4?

1 Ответ

0 голосов
/ 17 июня 2019

Скорее всего, вам нужно указать Servlet 2.3 спецификация или новее, как он представил Filter.В соответствии с документами:

Фильтры - это новая функция в API сервлетов Java для версии 2.3.

Похоже, вам нужно удалить универсальные элементы, как они были представлены вJava 1.5.ThreadLocal доступно из Java 1.2, хотя в 1.5 был введен метод remove().Код должен выглядеть примерно так:

public class RequestContext implements Filter {

    private static final ThreadLocal REQUEST_HOLDER = new ThreadLocal();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        if (servletRequest instanceof HttpServletRequest) {
            REQUEST_HOLDER.set(servletRequest);
        }
        try {
            chain.doFilter(servletRequest, servletResponse);
        } finally {
            REQUEST_HOLDER.set(null);
        }
    }

    /**
     * @return the HttpServletRequest for the current thread.
     */
    public static HttpServletRequest getRequest() {
        return (HttpServletRequest) REQUEST_HOLDER.get();
    }

    @Override
    public void destroy() {

    }

}
...