/** * Receive a GET request for a Greeting. * * @param request the request * @param name the string containing the name * @return a Greeting */ @RequestMapping("/greeting") public Greeting greeting( ServletRequest request, @RequestParam(value = "name", defaultValue = "World") String name) { HttpServletRequestImpl httpServletRequest = (HttpServletRequestImpl) request; HttpServerExchange exchange = httpServletRequest.getExchange(); exchange .getConnection() .pushResource("/push-greeting?name=push", Methods.GET, exchange.getRequestHeaders()); LOG.info("undertow pushBuilder has pushed resource."); PushBuilder pushBuilder = httpServletRequest.newPushBuilder(); if (pushBuilder != null) { pushBuilder.path("/push-greeting?name=push"); pushBuilder.push(); } else { LOG.info("No servlet4 pushBuilder!"); } return new Greeting(counter.incrementAndGet(), String.format(template, name)); }
/** * Method to receive a GET request for a Greeting. * @param request the HTTP request. * @param name the string containing the name * @return a Greeting */ @RequestMapping("/greeting") public Greeting greeting(ServletRequest request, @RequestParam(value = "name", defaultValue = "World") String name) { HttpServletRequest httpServletRequest = (HttpServletRequest) request; if (httpServletRequest != null) { LOG.info("can cast to HttpServletRequest"); if (null != httpServletRequest.newPushBuilder()) { PushBuilder pushBuilder = httpServletRequest.newPushBuilder(); pushBuilder.path("/push-greeting?name=push"); pushBuilder.push(); LOG.info("##### has pushbuilder"); } else { LOG.info("##### has no pushbuilder"); } } jettyServerPushFunction.jettyServerPush(request); return new Greeting(counter.incrementAndGet(), String.format(template, name)); }
@Before public void setUp() { sut = new Http2Servlet(); request = mock(HttpServletRequest.class); response = mock(HttpServletResponse.class); pushBuilder = mock(PushBuilder.class); PrintWriter printWriter = new PrintWriter(stringWriter); when(pushBuilder.path(anyString())).thenReturn(pushBuilder); when(pushBuilder.addHeader(anyString(), anyString())).thenReturn(pushBuilder); when(request.newPushBuilder()).thenReturn(pushBuilder); try { when(response.getWriter()).thenReturn(printWriter); } catch (IOException e) { fail(); } }
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { PushBuilder pushBuilder = req.newPushBuilder(); if (pushBuilder != null) { pushBuilder .path("resources/images/dukewaving.gif") .addHeader("content-type", "image/gif") .push(); // Push more than one resource // pushBuilder // .path("resources/images/dukewaving.gif") // .addHeader("content-type", "image/gif") // .push(); } try (PrintWriter respWriter = resp.getWriter();) { respWriter.write("<html>" + "<img src='resources/images/dukewaving.gif'>" + "</html>"); } catch (IOException ex) { System.out.println(ex); } }
@Before public void setUp() { sut = new GreetingController(); connection = mock(ServerConnection.class); exchange = mock(HttpServerExchange.class); request = mock(HttpServletRequestImpl.class); pushBuilder = mock(PushBuilder.class); when(exchange.getConnection()).thenReturn(connection); when(exchange.getRequestHeaders()).thenReturn(new HeaderMap()); when(request.getExchange()).thenReturn(exchange); }
@Before public void setUp() { JettyServerPushFunction jettyServerPushFunction = mock(JettyServerPushFunction.class); this.greetingController = new GreetingController(jettyServerPushFunction); this.request = mock(HttpServletRequest.class); this.pushBuilder = mock(PushBuilder.class); Request jettyBaseRequest = mock(Request.class); org.eclipse.jetty.server.PushBuilder jettyPushBuilder = mock(org.eclipse.jetty.server.PushBuilder.class); when(pushBuilder.path(anyString())).thenReturn(this.pushBuilder); when(jettyPushBuilder.path(anyString())).thenReturn(jettyPushBuilder); when(jettyBaseRequest.getPushBuilder()).thenReturn(jettyPushBuilder); }
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=UTF-8"); PushBuilder pushBuilder = req.newPushBuilder(); if (pushBuilder != null) { pushBuilder .path("images/cat.png") .addHeader("content-type", "image/jpeg") .push(); pushBuilder .path("http2-json") .addHeader("content-type", "application/json") .push(); } try (PrintWriter respWriter = resp.getWriter()) { respWriter.write(new StringBuilder() .append("<html>") .append("<img src='images/cat.jpg'>") .append("<p>Image by <a href=\"https://flic.kr/p/HPf9R1\">") .append("Andy Miccone</a></p>") .append("<p>License: <a href=\"https://creativecommons.org/") .append("publicdomain/zero/1.0/\">") .append("CC0 1.0 Universal (CC0 1.0) \n") .append("Public Domain Dedication</a></p>") .append("</html>") .toString()); } }
/** * Method to receive a GET request for a Greeting. * @param request the HTTP request. * @param name the string containing the name * @return a Greeting */ @RequestMapping("/greeting") public Greeting greeting( HttpServletRequest request, @RequestParam(value = "name", defaultValue = "World") String name) { PushBuilder pushBuilder = request.newPushBuilder(); pushBuilder.path("/push-greeting?name=push"); pushBuilder.push(); return new Greeting(counter.incrementAndGet(), String.format(TEMPLATE, name)); }
@Before public void setUp() { sut = new GreetingController(); request = mock(HttpServletRequest.class); pushBuilder = mock(PushBuilder.class); when(pushBuilder.path(anyString())).thenReturn(pushBuilder); when(request.newPushBuilder()).thenReturn(pushBuilder); }
@GetMapping("/") public String index(final PushBuilder pushBuilder) { mongoTemplate.find(findAllQuery(), DrawingInfo.class, "drawings") .collectList() .block() .forEach(performServerPush(pushBuilder)); return "drawing.html"; }
@Override protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { PushBuilder pushBuilder = req.newPushBuilder(). path("main.css"); pushBuilder.push(); res.getWriter().println("<html><head><title>HTTP2 Test</title><link rel=\"stylesheet\" href=\"main.css\"></head><body>Hello Servlet Push!!!</body></html>"); }
private Consumer<? super DrawingInfo> performServerPush(final PushBuilder pushBuilder) { return drawing -> pushBuilder.path("/drawing/" + drawing.getId()).push(); }