/** Load all the data out of a preloads object */ private Collection<Object> getAll(Collection<PreloadedData> preloads) throws PreloadException { List<Object> list = Lists.newArrayList(); for (PreloadedData preloadCallable : preloads) { list.addAll(preloadCallable.toJson()); } return list; }
/** Load all the data out of a preloads object */ private Collection<Object> getAll(Collection<PreloadedData> preloads) throws PreloadException { List<Object> list = Lists.newArrayList(); for (PreloadedData preloadCallable : preloads) { list.addAll(preloadCallable.toJson()); } return list; }
/** Load all the data out of a preloads object */ private Collection<Object> getAll(Collection<PreloadedData> preloads) throws PreloadException { List<Object> list = Lists.newArrayList(); for (PreloadedData preloadCallable : preloads) { list.addAll(preloadCallable.toJson()); } return list; }
private List<Object> getAll(Collection<Callable<PreloadedData>> preloaded) throws Exception { List<Object> list = Lists.newArrayList(); for (Callable<PreloadedData> preloadCallable : preloaded) { list.addAll(preloadCallable.call().toJson()); } return list; }
private List<Object> getAll(Collection<Callable<PreloadedData>> preloaded) throws Exception { List<Object> list = Lists.newArrayList(); for (Callable<PreloadedData> preloadCallable : preloaded) { list.addAll(preloadCallable.call().toJson()); } return list; }
private List<Object> getAll(Collection<Callable<PreloadedData>> preloaded) throws Exception { List<Object> list = Lists.newArrayList(); for (Callable<PreloadedData> preloadCallable : preloaded) { list.addAll(preloadCallable.call().toJson()); } return list; }
/** * Injects preloads into the gadget output. * * If preloading fails for any reason, we just output an empty object. */ protected void injectPreloads(Gadget gadget, Node scriptTag) { List<Object> preload = Lists.newArrayList(); for (PreloadedData preloaded : gadget.getPreloads()) { try { preload.addAll(preloaded.toJson()); } catch (PreloadException pe) { // This will be thrown in the event of some unexpected exception. We can move on. LOG.log(Level.WARNING, "Unexpected error when preloading", pe); } } Text text = scriptTag.getOwnerDocument().createTextNode("gadgets.io.preloaded_="); text.appendData(JsonSerializer.serialize(preload)); text.appendData(";"); scriptTag.appendChild(text); } }
@Test public void getData() throws Exception { ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.returnsNormal("foo")); preloads.add(TestFuture.returnsNormal("bar")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); assertEquals(TestFuture.expectedResult("bar"), iterator.next().toJson()); assertFalse(iterator.hasNext()); }
@Test public void getData() throws Exception { ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.returnsNormal("foo")); preloads.add(TestFuture.returnsNormal("bar")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); assertEquals(TestFuture.expectedResult("bar"), iterator.next().toJson()); assertFalse(iterator.hasNext()); }
@Test public void getData() throws Exception { ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.returnsNormal("foo")); preloads.add(TestFuture.returnsNormal("bar")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); assertEquals(TestFuture.expectedResult("bar"), iterator.next().toJson()); assertFalse(iterator.hasNext()); }
@Test public void oauthPreloads() throws Exception { String xml = "<Module><ModulePrefs title=''>" + // This is kind of a bogus test since oauth params aren't set. " <Preload href='" + PRELOAD_HREF + "' authz='oauth'/>" + "</ModulePrefs><Content/></Module>"; GadgetSpec spec = new GadgetSpec(GADGET_URL, xml); Preloader preloader = new HttpPreloader(requestPipeline); Gadget gadget = new Gadget() .setContext(context) .setSpec(spec) .setCurrentView(spec.getView(GadgetSpec.DEFAULT_VIEW)); Collection<Callable<PreloadedData>> preloaded = preloader.createPreloadTasks( gadget); assertEquals(1, preloaded.size()); PreloadedData data = preloaded.iterator().next().call(); HttpRequest request = oauthFetcher.requests.get(0); checkRequest(request); checkResults(data.toJson().iterator().next()); }
@Test public void testVariablePreload() throws Exception { GadgetSpec spec = new GadgetSpec(GADGET_URL, XML_WITH_VARIABLE); RecordingRequestPipeline pipeline = new RecordingRequestPipeline(""); PipelinedDataPreloader preloader = new PipelinedDataPreloader(pipeline, containerConfig); view = "profile"; contextParams.put("st", "token"); Gadget gadget = new Gadget() .setContext(context) .setSpec(spec) .setCurrentView(spec.getView("profile")); PipelinedData.Batch batch = getBatch(gadget); Collection<Callable<PreloadedData>> tasks = preloader.createPreloadTasks( context, batch); assertEquals(1, tasks.size()); // Nothing fetched yet assertEquals(0, pipeline.requests.size()); Collection<Object> result = tasks.iterator().next().call().toJson(); assertEquals(1, result.size()); JsonAssert.assertObjectEquals("{id: 'p', result: 2}", result.iterator().next()); }
@Test public void normalPreloads() throws Exception { String xml = "<Module><ModulePrefs title=''>" + " <Preload href='" + PRELOAD_HREF + "'/>" + "</ModulePrefs><Content/></Module>"; GadgetSpec spec = new GadgetSpec(GADGET_URL, xml); Preloader preloader = new HttpPreloader(requestPipeline); Gadget gadget = new Gadget() .setContext(context) .setSpec(spec) .setCurrentView(spec.getView(GadgetSpec.DEFAULT_VIEW)); Collection<Callable<PreloadedData>> preloaded = preloader.createPreloadTasks(gadget); assertEquals(1, preloaded.size()); PreloadedData data = preloaded.iterator().next().call(); checkRequest(plainFetcher.requests.get(0)); assertFalse("request should not ignore cache", plainFetcher.requests.get(0).getIgnoreCache()); checkResults(data.toJson().iterator().next()); }
@Test public void testVariablePreload() throws Exception { GadgetSpec spec = new GadgetSpec(GADGET_URL, XML_WITH_VARIABLE); RecordingRequestPipeline pipeline = new RecordingRequestPipeline(""); PipelinedDataPreloader preloader = new PipelinedDataPreloader(pipeline, containerConfig); view = "profile"; contextParams.put("st", "token"); Gadget gadget = new Gadget() .setContext(context) .setSpec(spec) .setCurrentView(spec.getView("profile")); PipelinedData.Batch batch = getBatch(gadget); Collection<Callable<PreloadedData>> tasks = preloader.createPreloadTasks( context, batch); assertEquals(1, tasks.size()); // Nothing fetched yet assertEquals(0, pipeline.requests.size()); Collection<Object> result = tasks.iterator().next().call().toJson(); assertEquals(1, result.size()); JsonAssert.assertObjectEquals("{id: 'p', result: 2}", result.iterator().next()); }
@Test public void getDataWithRuntimeException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecution()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a PreloadException around // a RuntimeException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertSame(pe.getCause().getClass(), RuntimeException.class); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }
@Test public void getDataWithRuntimeException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecution()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a PreloadException around // a RuntimeException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertSame(pe.getCause().getClass(), RuntimeException.class); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }
@Test public void getDataWithRuntimeException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecution()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a PreloadException around // a RuntimeException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertSame(pe.getCause().getClass(), RuntimeException.class); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }
@Test public void getDataWithPreloadException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecutionWrapped()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a straight PreloadException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertNull(pe.getCause()); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }
@Test public void getDataWithPreloadException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecutionWrapped()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a straight PreloadException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertNull(pe.getCause()); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }
@Test public void getDataWithPreloadException() throws Exception{ ConcurrentPreloads preloads = new ConcurrentPreloads(); preloads.add(TestFuture.throwsExecutionWrapped()); preloads.add(TestFuture.returnsNormal("foo")); assertEquals(2, preloads.size()); Iterator<PreloadedData> iterator = preloads.iterator(); // First item should throw an exception, a straight PreloadException PreloadedData withError = iterator.next(); try { withError.toJson(); fail(); } catch (PreloadException pe) { assertNull(pe.getCause()); } // And iteration should continue assertEquals(TestFuture.expectedResult("foo"), iterator.next().toJson()); }