private void putLocale(HttpServletRequest req, final URI uri, HttpServletResponse resp) throws IOException { URI truncated = uri.trimSegments(1); Resolvable object = getObject(truncated.path()); if (object instanceof ProjectVersion) { ProjectVersion version = (ProjectVersion) object; if(!isAuthorized(req, true, version)) { resp.setHeader("WWW-Authenticate", BASIC_AUTH_REALM); resp.sendError(HttpServletResponse.SC_UNAUTHORIZED); } else if (version.getChild(uri.lastSegment()) == null) { try { TransactionUtil.commit(version, new Modification<ProjectVersion, ProjectVersion>() { @Override public ProjectVersion apply(ProjectVersion object) { ProjectLocale locale = PropertiesFactory.eINSTANCE.createProjectLocale(); locale.setName(uri.lastSegment()); locale.setLocale((Locale) PropertiesFactory.eINSTANCE.createFromString(PropertiesPackage.Literals.LOCALE, uri.lastSegment())); PropertyResourceUtil.addNewLocale(locale, object); return object; } }); } catch (CommitException e) { logger.error("Commit failed", e); } } } else resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Version " + truncated.path() + " does not exist"); }