@Test public void testGetClassMeta() throws Exception { PojoRest model = new PojoRest(new AddressBook().init()); assertEquals("Person", model.getClassMeta("0").getInnerClass().getSimpleName()); assertEquals("String", model.getClassMeta("0/addresses/0/state").getInnerClass().getSimpleName()); assertNull(model.getClassMeta("1")); assertNull(model.getClassMeta("0/addresses/1/state")); } }
/** * [PUT /addresses/{id}/*] * Change property on Address bean. */ @RestMethod(name="PUT", path="/addresses/{id}/*", guards=AdminGuard.class ) public String updateAddress(RestRequest req, @Path int id) throws Exception { try { Address a = findAddress(id); String pathInfo = req.getPathInfo(); PojoRest r = new PojoRest(a); ClassMeta<?> cm = r.getClassMeta(pathInfo); Object in = req.getBody(cm); r.put(pathInfo, in); return "PUT successful"; } catch (Exception e) { throw new RestException(SC_BAD_REQUEST, "PUT unsuccessful").initCause(e); } }
/** * [PUT /people/{id}/*] * Change property on Person bean. */ @RestMethod(name="PUT", path="/people/{id}/*", guards=AdminGuard.class ) public String updatePerson(RestRequest req, @Path int id) throws Exception { try { Person p = findPerson(id); String pathRemainder = req.getPathRemainder(); PojoRest r = new PojoRest(p); ClassMeta<?> cm = r.getClassMeta(pathRemainder); Object in = req.getBody(cm); r.put(pathRemainder, in); return "PUT successful"; } catch (Exception e) { throw new RestException(SC_BAD_REQUEST, "PUT unsuccessful").initCause(e); } }