/** * deletes the given eobject as well as all cross references pointing to it * @param object * @param features the features to consider for cross references, or null if all features are relevant * @throws CommitException */ public static void deleteWithCrossRefs(CDOObject object, final EReference... features) throws CommitException { commit(object, new Modification<CDOObject, CDOObject>() { @Override public CDOObject apply(CDOObject object) { List<CDOObjectReference> refs = object.cdoView().queryXRefs(object, features); for (CDOObjectReference reference : refs) { EStructuralFeature sourceFeature = reference.getSourceFeature(); if(sourceFeature.isMany()) { Object result = reference.getSourceObject().eGet(sourceFeature); if (result instanceof Collection) { Collection collection = (Collection) result; collection.remove(object); } } else { reference.getSourceObject().eUnset(sourceFeature); } } EcoreUtil.remove(object); return null; } }); }
public <T extends CDOView> T configureView(T view){ return TransactionUtil.configureView(view); }
public static <T extends EObject, R extends EObject> R commit(T parent, Modification<T,R> op) throws CommitException { if (parent instanceof CDOObject) { CDOObject cdoObject = (CDOObject) parent; CDOView view = cdoObject.cdoView(); CDOTransaction transaction = getTransaction(cdoObject); T writableObject = transaction.getObject(parent); R returnValue = null; try{ returnValue = op.apply(writableObject); transaction.commit(); return returnValue; } finally { if(view!=transaction) { transaction.close(); if(returnValue!=null) return view.getObject(returnValue); } } } throw new TransactionException("could not obtain a transaction"); }
private void putProject(HttpServletRequest req, final URI uri, HttpServletResponse resp) throws IOException { // TODO: evaluate JSON stream for settings if(!isAuthorized(req, true, workspace)) { resp.setHeader("WWW-Authenticate", BASIC_AUTH_REALM); resp.sendError(HttpServletResponse.SC_UNAUTHORIZED); } else { try { TransactionUtil.commit(workspace, new Modification<Workspace, Workspace>() { @Override public Workspace apply(Workspace object) { Project child = PropertiesFactory.eINSTANCE.createProject(); child.setName(uri.lastSegment()); object.getChildren().add(child); return object; } }); } catch (CommitException e) { logger.error("Commit failed", e); } } }
private static CDOTransaction getTransaction(CDOObject object) { CDOView view = object.cdoView(); if (view instanceof CDOTransaction) { CDOTransaction transaction = (CDOTransaction) view; return transaction; } else if (view != null) { return configureView(view.getSession().openTransaction()); } throw new TransactionException("could not obtain a transaction"); }
@Override public void onClick() { Review theReview = model.getObject(); try { TransactionUtil.commit(theReview, new Modification<Review, Review>() { @Override public Review apply(Review object) { object.setState(ReviewState.INVALID); return object; } }); setResponsePage(getPage().getPageClass(), returnAddress); } catch (CommitException e) { LOG.error("Failed to commit updated review state",e); } } }
TransactionUtil.commit(management, new Modification<UserManagement, UserManagement>() { @Override public UserManagement apply(UserManagement object) {
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"); }
private void putVersion(HttpServletRequest req, final URI uri, HttpServletResponse resp) throws IOException { URI truncated = uri.trimSegments(1); Resolvable object = getObject(truncated.path()); if (object instanceof Project) { Project project = (Project) object; if(!isAuthorized(req, true, project)) { resp.setHeader("WWW-Authenticate", BASIC_AUTH_REALM); resp.sendError(HttpServletResponse.SC_UNAUTHORIZED); } else if (project.getChild(uri.lastSegment()) == null) { try { TransactionUtil.commit(project, new Modification<Project, Project>() { @Override public Project apply(Project object) { ProjectVersion child = PropertiesFactory.eINSTANCE.createProjectVersion(); ProjectLocale locale = PropertiesFactory.eINSTANCE.createProjectLocale(); child.getChildren().add(locale); child.setTemplate(locale); child.setName(uri.lastSegment()); object.getChildren().add(child); return object; } }); } catch (CommitException e) { logger.error("Commit failed", e); } } } else resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Project " + truncated.path() + " does not exist"); }
diff.setOldPath(descriptorLocation.path()); try { TransactionUtil.commit(projectVersion, new Modification<ProjectVersion, ProjectVersion>() { @Override public ProjectVersion apply(ProjectVersion object) {
if (translation.getValue().equals(review.getMessage())) { try { TransactionUtil.commit(review, new Modification<Review, Review>() { @Override public Review apply(Review object) { TransactionUtil.commit(descriptor, new Modification<PropertyFileDescriptor, PropertyFileDescriptor>() { @Override public PropertyFileDescriptor apply(PropertyFileDescriptor object) {
@Override public void onClick() { PropertyFileDescriptor descriptor = getModel(getPage().getPageParameters()); if(descriptor!=null){ try { ProjectLocale locale = TransactionUtil.commit(descriptor, new Modification<PropertyFileDescriptor, ProjectLocale>() { @Override public ProjectLocale apply(PropertyFileDescriptor object) { ProjectLocale locale = object.getProjectLocale(); if(!object.isMaster()) object = object.getMaster(); if(object!=null) PropertyResourceUtil.removeDescriptor(object); return locale; }; }); URI uri = resolver.getURI(locale); PageParameters params = new PageParameters(); for(int i=0;i<uri.segmentCount();i++) { params.set(i, uri.segment(i)); } //go to the parent locale setResponsePage(ResourcePage.class, params); } catch (CommitException e) { error(e.getMessage()); LOG.error("Failed to delete descriptor",e); } } }
TransactionUtil.commit(getModelObject(), new Modification<PropertyFileDescriptor, PropertyFileDescriptor>() { @Override public PropertyFileDescriptor apply(PropertyFileDescriptor object) {