/** 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); } }
/** * 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); } }
/** * 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. if (LOG.isLoggable(Level.WARNING)) { LOG.logp(Level.WARNING, classname, "injectPreloads", MessageKeys.UNEXPECTED_ERROR_PRELOADING); LOG.log(Level.WARNING, pe.getMessage(), 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 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 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 testSocialPreloadWithBatchError() throws Exception { GadgetSpec spec = new GadgetSpec(GADGET_URL, XML); String socialResult = "{code: 401, message: 'unauthorized'}"; RecordingRequestPipeline pipeline = new RecordingRequestPipeline(socialResult); 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(2, result.size()); JSONObject resultWithKeyP = new JSONObject("{id: 'p', error: {code: 401, message: 'unauthorized'}}"); JSONObject resultWithKeyA = new JSONObject("{id: 'a', error: {code: 401, message: 'unauthorized'}}"); Map<String, String> resultsById = getResultsById(result); JsonAssert.assertJsonEquals(resultWithKeyA.toString(), resultsById.get("a")); JsonAssert.assertJsonEquals(resultWithKeyP.toString(), resultsById.get("p")); }
@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()); }