code: @Nonnull
    public static String getRequestContextPath (@Nullable final HttpServletRequest aRequest)
    {
      String ret = null;
      if (aRequest != null)
        try
        {
          if (aRequest.isAsyncSupported () && aRequest.isAsyncStarted ())
            ret = (String) aRequest.getAttribute (AsyncContext.ASYNC_CONTEXT_PATH);
          else
            ret = aRequest.getContextPath ();
        }
        catch (final Exception ex)
        {
          // fall through
          if (isLogExceptions ())
            if (LOGGER.isWarnEnabled ())
              LOGGER.warn ("[ServletHelper] Failed to determine context path of HTTP request", ex);
        }
  
      if (ret == null)
      {
        // Fallback
        ret = ServletContextPathHolder.getContextPath ();
      }
  
      return ret;
    }
docs: Work around an exception that can occur on Tomcat 8.0.20:
  
  <pre>
  java.lang.NullPointerException: null
  at org.apache.catalina.connector.Request.getServletContext(Request.java:1593) ~[catalina.jar:8.0.20]
  at org.apache.catalina.connector.Request.getContextPath(Request.java:1910) ~[catalina.jar:8.0.20]
  at org.apache.catalina.connector.RequestFacade.getContextPath(RequestFacade.java:783) ~[catalina.jar:8.0.20]
  at com.helger.web.servlet.request.RequestLogger.getRequestFieldMap(RequestLogger.java:81) ~[ph-web-8.6.3.jar:8.6.3]
  </pre>
  
  @param aRequest
  Source request. May be <code>null</code>.
  @return Empty string if request is <code>null</code> or a String specifying
  the portion of the request URI that indicates the context of the
  request