Skip to content

Instantly share code, notes, and snippets.

@joakime
Created September 11, 2019 10:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joakime/ca3bf453cd946e47a8a09181ef3a0dd7 to your computer and use it in GitHub Desktop.
Save joakime/ca3bf453cd946e47a8a09181ef3a0dd7 to your computer and use it in GitHub Desktop.
package jetty.http2;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestWrapper;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.PushBuilder;
import org.eclipse.jetty.server.Request;
public class Http2PushBuilderServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
dumpRequestDetail(request);
Request req = Request.getBaseRequest(request);
if (req != null)
{
System.out.printf("req: (%s) %s%n", req.getClass().getName(), req);
System.out.printf("req.isPushSupported() = %b%n", req.isPushSupported());
PushBuilder pushBuilder = req.getPushBuilder();
pushBuilder.path("/res").push();
}
}
private void dumpRequestDetail(HttpServletRequest request)
{
System.out.printf("HttpServletRequest is implemented by %s%n", request.getClass().getName());
System.out.printf("HttpServletRequest is instanceof Request = %b%n", request instanceof Request);
// some relevant virtual attributes
dumpAttribute(request, "org.eclipse.jetty.server.Server");
dumpAttribute(request, "org.eclipse.jetty.server.HttpChannel");
dumpAttribute(request, "org.eclipse.jetty.server.HttpConnection");
// the state of the wrapping of the request
if (request instanceof ServletRequestWrapper)
{
System.out.printf(" + is a HttpServletRequestWrapper%n");
ServletRequest servletRequest = request;
while (servletRequest instanceof ServletRequestWrapper)
{
servletRequest = ((ServletRequestWrapper)servletRequest).getRequest();
System.out.printf(" + Wrapped by %s%n", servletRequest.getClass().getName());
}
System.out.printf("Unwrapped ServletRequest is instanceof Request = %b%n", servletRequest instanceof Request);
}
}
private void dumpAttribute(HttpServletRequest request, String attrName)
{
System.out.printf(".getAttribute(%s) = ", attrName);
Object value = request.getAttribute(attrName);
if (value == null)
{
System.out.println("<null>");
}
else
{
System.out.printf("(%s) %s%n", value.getClass().getName(), value);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment