private void applyJsonToAuthorizable(URL url, Authorizable authorizable, Session session) throws IOException, RepositoryException { String jsonString = IOUtils.readFully(url.openStream(), "UTF-8"); if (jsonString != null) { Map<String, Object[]> postprocessParameters = new HashMap<String, Object[]>(); try { JSONObject jsonObject = new JSONObject(jsonString); Iterator<String> keys = jsonObject.keys(); while (keys.hasNext()) { String key = keys.next(); Object jsonValue = jsonObject.get(key); if (key.startsWith(SlingPostConstants.RP_PREFIX)) { postprocessParameters.put(key, new Object[] {jsonValue}); } else { Value value = JcrResourceUtil.createValue(jsonValue, session); authorizable.setProperty(key, value); } } } catch (JSONException e) { LOGGER.error("Faulty JSON at " + url, e); } try { authorizablePostProcessService.process( authorizable, session, ModificationType.CREATE, postprocessParameters); } catch (Exception e) { LOGGER.error("Could not configure default authorizable " + authorizable.getID(), e); } } }