/** * Get the JS content for a request (JsUri) */ protected String getFeaturesContent(JsUri jsUri) throws GadgetException { // Inject js content, fetched from JsPipeline JsRequest jsRequest = new JsRequestBuilder(jsUriManager, featureRegistryProvider.get(jsUri.getRepository())).build(jsUri, null); JsResponse jsResponse; try { jsResponse = jsServingPipeline.execute(jsRequest); } catch (JsException e) { throw new GadgetException(Code.JS_PROCESSING_ERROR, e, e.getStatusCode()); } return jsResponse.toJsString(); }
/** * Builds a {@link JsRequest} instance for a given JsUri/host pair. * @param jsUri JsUri encapsulating the request. * @param host Host context for the request. * @return The corresponding JsRequest. */ public JsRequest build(JsUri jsUri, String host) { return build(jsUri, host, false); }
@Before public void setUp() { control = EasyMock.createControl(); jsUriManager = control.createMock(JsUriManager.class); jsUri = control.createMock(JsUri.class); request = control.createMock(HttpServletRequest.class); registry = control.createMock(FeatureRegistry.class); builder = new JsRequestBuilder(jsUriManager, registry); EasyMock.expect(request.getScheme()).andReturn("http"); EasyMock.expect(request.getServerPort()).andReturn(80); EasyMock.expect(request.getServerName()).andReturn("HOST"); EasyMock.expect(request.getRequestURI()).andReturn("/foo"); EasyMock.expect(request.getQueryString()).andReturn(""); }
/** * Builds a {@link JsRequest} instance from the given request object. * * @param request The originating HTTP request object. * @return The corresponding JsRequest object. * @throws GadgetException If there was a problem parsing the URI. */ public JsRequest build(HttpServletRequest request) throws GadgetException { JsUri jsUri = jsUriManager.processExternJsUri(new UriBuilder(request).toUri()); String host = request.getHeader("Host"); boolean inCache = request.getHeader("If-Modified-Since") != null; return build(jsUri, host, inCache); }
@Before public void setUp() { control = EasyMock.createControl(); jsUriManager = control.createMock(JsUriManager.class); jsUri = control.createMock(JsUri.class); request = control.createMock(HttpServletRequest.class); registry = control.createMock(FeatureRegistry.class); builder = new JsRequestBuilder(jsUriManager, registry); EasyMock.expect(request.getScheme()).andReturn("http"); EasyMock.expect(request.getServerPort()).andReturn(80); EasyMock.expect(request.getServerName()).andReturn("HOST"); EasyMock.expect(request.getRequestURI()).andReturn("/foo"); EasyMock.expect(request.getQueryString()).andReturn(""); }
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { JsRequest jsRequest; try { jsRequest = jsRequestBuilder.build(req); } catch (GadgetException e) { resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; } JsResponse jsResponse; try { jsResponse = jsServingPipeline.execute(jsRequest); } catch (JsException e) { resp.sendError(e.getStatusCode(), e.getMessage()); return; } emitJsResponse(jsResponse, req, resp); }
@Before public void setUp() throws Exception { httpUtilMock = mock(JsServlet.CachingSetter.class); servlet.setCachingSetter(httpUtilMock); jsUriManagerMock = mock(JsUriManager.class); servlet.setJsRequestBuilder(new JsRequestBuilder(jsUriManagerMock, null)); getJsProcessorMock = mock(GetJsContentProcessor.class); }
@Test public void testCreateRequestInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn("today"); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertTrue(jsRequest.isInCache()); }
@Before public void setUp() throws Exception { httpUtilMock = mock(JsServlet.CachingSetter.class); servlet.setCachingSetter(httpUtilMock); jsUriManagerMock = mock(JsUriManager.class); servlet.setJsRequestBuilder(new JsRequestBuilder(jsUriManagerMock, null)); getJsProcessorMock = mock(GetJsContentProcessor.class); }
@Test public void testCreateRequestInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn("today"); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertTrue(jsRequest.isInCache()); }
@Test public void testCreateRequestNotInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn(null); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertFalse(jsRequest.isInCache()); }
@Test public void testCreateRequestNotInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn(null); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertFalse(jsRequest.isInCache()); }
@Test public void testCreateRequestThrowsExceptionOnParseError() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andThrow( new GadgetException(Code.INVALID_PARAMETER)); control.replay(); try { builder.build(request); fail("Should have thrown a GadgetException."); } catch (GadgetException e) { // pass } control.verify(); }
@Test public void testCreateRequestThrowsExceptionOnParseError() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andThrow( new GadgetException(Code.INVALID_PARAMETER)); control.replay(); try { builder.build(request); fail("Should have thrown a GadgetException."); } catch (GadgetException e) { // pass } control.verify(); }
EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); control.replay(); JsRequest jsRequest = builder.build(request); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost());
EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); control.replay(); JsRequest jsRequest = builder.build(request); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost());
public GadgetsHandlerApi.JsResponse getJs(GadgetsHandlerApi.JsRequest request) throws ProcessingException { verifyBaseParams(request, false); Set<String> fields = beanFilter.processBeanFields(request.getFields()); JsUri jsUri = createJsUri(request); Uri servedUri = jsUriManager.makeExternJsUri(jsUri); String content = null; Long expireMs = null; if (isFieldIncluded(fields, "jsContent")) { JsResponse response; try { response = jsPipeline.execute(jsRequestBuilder.build(jsUri, servedUri.getAuthority())); } catch (JsException e) { throw new ProcessingException(e.getMessage(), e.getStatusCode()); } content = response.toJsString(); if (response.isProxyCacheable()) { expireMs = getDefaultExpiration(); } } else { expireMs = getDefaultExpiration(); } return createJsResponse(request.getUrl(), servedUri, content, fields, expireMs); }