@OnReceive(url="{url}", onError = "setMessage") static void fetchArray(Person[] p, JSONik model) { model.setFetchedCount(p.length); model.setFetched(p[0]); }
@OnReceive(url="{url}?callme={me}", jsonp = "me") static void fetchViaJSONP(JSONik model, Person p) { model.setFetched(p); }
@OnReceive(url="{url}", onError = "setMessage") static void fetchArray(JSONik model, Person[] p) { model.setFetchedCount(p.length); model.setFetched(p[0]); onCallback = BrwsrCtx.findDefault(model.getClass()); }
@OnReceive(url="{url}?callme={me}", jsonp = "me") static void fetchViaJSONP(Person p, JSONik model) { model.setFetched(p); }
@OnReceive(url="{url}") static void fetchPeople(JSONik model, People p) { final int size = p.getInfo().size(); if (size > 0) { model.setFetched(p.getInfo().get(0)); } model.setFetchedCount(size); }
@OnReceive(url="{url}") static void fetch(Person p, JSONik model) { model.setFetched(p); }
@OnReceive(url="{url}") static void fetchPeople(People p, JSONik model) { model.setFetchedCount(p.getInfo().size()); model.setFetched(p.getInfo().get(0)); }
@ModelOperation static void assignFetched(JSONik m, Person p) { m.setFetched(p); }
@OnReceive(url="{url}", headers={ "Easy: {easy}", "H-a!r*d^e.r: {harder}", "Repeat-ed: {rep}", "Repeat*ed: {rep}", "Same-URL: {url}" }) static void fetchPeopleWithHeaders(JSONik model, People p) { final int size = p.getInfo().size(); if (size > 0) { model.setFetched(p.getInfo().get(0)); } model.setFetchedCount(size); }
@ModelOperation static void assignFetched(JSONik m, Person p) { m.setFetched(p); } private BrwsrCtx ctx;
@OnReceive(url="{url}") static void fetch(JSONik model, Person p) { model.setFetched(p); onCallback = BrwsrCtx.findDefault(model.getClass()); }
@KOTest public void loadError() throws InterruptedException { if (js == null) { js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetchArray("http://127.0.0.1:54253/does/not/exist.txt"); } if (js.getFetchedResponse() == null) { throw new InterruptedException(); } assert "Exception".equals(js.getFetchedResponse()) : js.getFetchedResponse(); }
@KOTest public void loadError() throws InterruptedException { if (js == null) { js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetchArray("http://127.0.0.1:54253/does/not/exist.txt"); } if (js.getFetchedResponse() == null) { throw new InterruptedException(); } assertEquals("Exception", js.getFetchedResponse(), "Response " + js.getFetchedResponse()); }
@KOTest public void loadAndParseJSON() throws InterruptedException { if (js == null) { url = Utils.prepareURL( JSONTest.class, "{'firstName': 'Sitar', 'sex': 'MALE'}", "application/json" ); js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetch(url); } Person p = js.getFetched(); if (p == null) { throw new InterruptedException(); } assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName(); assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex(); }
@KOTest public void loadAndParseJSONArraySingle() throws InterruptedException { if (js == null) { url = Utils.prepareURL( JSONTest.class, "[{'firstName': 'Gitar', 'sex': 'FEMALE'}]", "application/json" ); js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetch(url); } Person p = js.getFetched(); if (p == null) { throw new InterruptedException(); } assert "Gitar".equals(p.getFirstName()) : "Expecting Gitar: " + p.getFirstName(); assert Sex.FEMALE.equals(p.getSex()) : "Expecting FEMALE: " + p.getSex(); }
@KOTest public void syncOperation() { js = Models.bind(new JSONik(), Utils.newContext(OperationsTest.class)); p = new Person("Sitar", "Gitar", Sex.MALE, null); js.applyBindings(); js.setFetched(p); Person p = js.getFetched(); assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar immediately: " + p.getFirstName(); assert Sex.MALE.equals(p.getSex()) : "Expecting MALE immediately: " + p.getSex(); }
@KOTest public void loadAndParseJSONArray() throws InterruptedException { if (js == null) { url = Utils.prepareURL( JSONTest.class, "[{'firstName': 'Gitar', 'sex': 'FEMALE'}," + "{'firstName': 'Peter', 'sex': 'MALE'}" + "]", "application/json" ); js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetchArray(url); } Person p = js.getFetched(); if (p == null) { throw new InterruptedException(); } assert js.getFetchedCount() == 2 : "We got two values: " + js.getFetchedCount(); assert "Gitar".equals(p.getFirstName()) : "Expecting Gitar: " + p.getFirstName(); assert Sex.FEMALE.equals(p.getSex()) : "Expecting FEMALE: " + p.getSex(); }
@KOTest public void loadAndParseJSONSentToArray() throws InterruptedException { if (js == null) { url = Utils.prepareURL( JSONTest.class, "{'firstName': 'Sitar', 'sex': 'MALE'}", "application/json" ); js = Models.bind(new JSONik(), newContext()); js.applyBindings(); js.setFetched(null); js.fetchArray(url); } Person p = js.getFetched(); if (p == null) { throw new InterruptedException(); } assertEquals("Sitar", p.getFirstName(), "Expecting Sitar: " + p.getFirstName()); assertEquals(Sex.MALE, p.getSex(), "Expecting MALE: " + p.getSex()); }
@KOTest public void loadAndParseJSON() throws InterruptedException { if (js == null) { url = Utils.prepareURL( JSONTest.class, "{'firstName': 'Sitar', 'sex': 'MALE'}", "application/json" ); js = Models.bind(new JSONik(), ctx = newContext()); js.applyBindings(); js.setFetched(null); js.fetch(url); } Person p = js.getFetched(); if (p == null) { throw new InterruptedException(); } assertEquals("Sitar", p.getFirstName(), "Expecting Sitar: " + p.getFirstName()); assertEquals(Sex.MALE, p.getSex(), "Expecting MALE: " + p.getSex()); assertEquals(ctx, onCallback, "Context is the same"); }
@KOTest public void syncOperation() { js = Models.bind(new JSONik(), Utils.newContext(OperationsTest.class)); p = new Person("Sitar", "Gitar", Sex.MALE, null); js.applyBindings(); js.setFetched(p); Person p = js.getFetched(); assertEquals("Sitar", p.getFirstName(), "Expecting Sitar immediately: " + p.getFirstName()); assertEquals(Sex.MALE, p.getSex(), "Expecting MALE immediately: " + p.getSex()); }