Skip to content
Snippets Groups Projects
Commit 2914cc52 authored by Simon Barner's avatar Simon Barner
Browse files

Remove unused support for "sidecar" models

* Feature considerably slows down deletion of projects

Issue-Ref: 4145
Issue-Url: af3#4145



Signed-off-by: default avatarSimon Barner <barner@fortiss.org>
parent c7f8269f
No related branches found
No related tags found
1 merge request!1464145 Remove unused support for "sidecar" models
Pipeline #31008 passed
Pipeline: maven-releng

#31009

    This commit is part of merge request !146. Comments created here will be created in the context of that merge request.
    CopyAction.java cc58c9f52b8d0b8698a9905ffadff7c37976481b GREEN CopyAction.java cc58c9f52b8d0b8698a9905ffadff7c37976481b GREEN
    CutAction.java 6e963d94aeea85676beb38489748002b6d13346a GREEN CutAction.java 6e963d94aeea85676beb38489748002b6d13346a GREEN
    DeleteAction.java 3a7af66b4b6de8335aea3d415400672093743e22 GREEN DeleteAction.java aeb40d54ea454a40ec9116f57303490c784ba94c YELLOW
    PasteAction.java f834f26660a664f138c19d82ace7b17ecc18603f GREEN PasteAction.java f834f26660a664f138c19d82ace7b17ecc18603f GREEN
    RedoAction.java d91086533289a4175e7f5ee949b31a0edc86672a GREEN RedoAction.java d91086533289a4175e7f5ee949b31a0edc86672a GREEN
    RenameAction.java 8049a91748366eec6a7c08622eac29d97950ade2 GREEN RenameAction.java 8049a91748366eec6a7c08622eac29d97950ade2 GREEN
    ......
    ...@@ -20,8 +20,6 @@ import static org.fortiss.tooling.kernel.utils.LoggingUtils.error; ...@@ -20,8 +20,6 @@ import static org.fortiss.tooling.kernel.utils.LoggingUtils.error;
    import java.util.ArrayList; import java.util.ArrayList;
    import java.util.Arrays; import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap; import java.util.HashMap;
    import java.util.HashSet; import java.util.HashSet;
    import java.util.LinkedList; import java.util.LinkedList;
    ...@@ -38,7 +36,6 @@ import org.eclipse.core.runtime.Status; ...@@ -38,7 +36,6 @@ import org.eclipse.core.runtime.Status;
    import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.IJobChangeEvent;
    import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.Job;
    import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.core.runtime.jobs.JobChangeAdapter;
    import org.eclipse.emf.common.util.URI;
    import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
    import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.Resource;
    import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogConstants;
    ...@@ -81,12 +78,6 @@ public class DeleteAction extends EObjectActionBase<EObject> { ...@@ -81,12 +78,6 @@ public class DeleteAction extends EObjectActionBase<EObject> {
    */ */
    private final ITopLevelElement topElement; private final ITopLevelElement topElement;
    /**
    * {@link URI}s of {@link Resource}s that directly or indirectly reference
    * {@link #topElement}.
    */
    private Collection<URI> uris = Collections.emptySet();
    /** {@link Shell} used to display dialog. */ /** {@link Shell} used to display dialog. */
    private Shell sh; private Shell sh;
    ...@@ -104,23 +95,8 @@ public class DeleteAction extends EObjectActionBase<EObject> { ...@@ -104,23 +95,8 @@ public class DeleteAction extends EObjectActionBase<EObject> {
    /** {@inheritDoc} */ /** {@inheritDoc} */
    @Override @Override
    protected IStatus run(IProgressMonitor progressMonitor) { protected IStatus run(IProgressMonitor progressMonitor) {
    // Check if there are further resources that reference the resource to be deleted. If final MessageDialog dialog = new MessageDialog(sh, "Confirm Delete", null,
    // so, extend confirmation dialog accordingly. "Are you sure you want to delete '" + topElement.getSaveableName() + "'?",
    Resource resource = topElement.getRootModelElement().eResource();
    uris = ResourceUtils.getReferencingResourceURIs(resource, false, progressMonitor);
    String message =
    "Are you sure you want to delete '" + topElement.getSaveableName() + "'?";
    if(!uris.isEmpty()) {
    message +=
    "\n\nNote that this model also references the following external resources:\n\n";
    for(URI uri : uris) {
    message += " - " + URI.decode(uri.lastSegment()) + "\n";
    }
    }
    final MessageDialog dialog = new MessageDialog(sh, "Confirm Delete", null, message,
    MessageDialog.QUESTION, MessageDialog.QUESTION,
    new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}, 0) { new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}, 0) {
    @Override @Override
    ...@@ -137,16 +113,13 @@ public class DeleteAction extends EObjectActionBase<EObject> { ...@@ -137,16 +113,13 @@ public class DeleteAction extends EObjectActionBase<EObject> {
    }); });
    if(dialog.getReturnCode() == 0) { if(dialog.getReturnCode() == 0) {
    IContainer parent = ResourceUtils.getIFile(resource).getParent(); IContainer parent = ResourceUtils
    .getIFile(topElement.getRootModelElement().eResource()).getParent();
    // Close all opened views belonging to the deleted project // Close all opened views belonging to the deleted project
    IModelEditorBindingService.getInstance() IModelEditorBindingService.getInstance()
    .closeEditors(topElement.getRootModelElement()); .closeEditors(topElement.getRootModelElement());
    for(URI externalModelURIs : uris) {
    topElement.getResourceSet().createResource(externalModelURIs);
    }
    // Deletes the entire resource set, including its external models // Deletes the entire resource set, including its external models
    topElement.delete(); topElement.delete();
    ......
    AutoUndoCommandStack.java fc326adf66c6cea2354884cdc240da5f2f82689a GREEN AutoUndoCommandStack.java fc326adf66c6cea2354884cdc240da5f2f82689a GREEN
    EMFTransactionalCommand.java ba4b5bead9768b6ce6c955b9238cd96cb722533c GREEN EMFTransactionalCommand.java ba4b5bead9768b6ce6c955b9238cd96cb722533c GREEN
    EclipseResourceStorageService.java e917c822c53eacada70188e66215d91241a29a5c GREEN EclipseResourceStorageService.java e917c822c53eacada70188e66215d91241a29a5c GREEN
    ModelContext.java db1735834c85e7b508266f56463d011f2b72af0e GREEN ModelContext.java efa60d240cd7bd8900685c35afcc87f56e6995fb YELLOW
    NonDirtyingEMFTransactionalCommand.java d288ebe35d22442c603496b0c917fb99a8febeea GREEN NonDirtyingEMFTransactionalCommand.java d288ebe35d22442c603496b0c917fb99a8febeea GREEN
    ...@@ -17,7 +17,6 @@ package org.fortiss.tooling.kernel.internal.storage.eclipse; ...@@ -17,7 +17,6 @@ package org.fortiss.tooling.kernel.internal.storage.eclipse;
    import static java.lang.Math.max; import static java.lang.Math.max;
    import static org.eclipse.emf.common.util.URI.createPlatformResourceURI; import static org.eclipse.emf.common.util.URI.createPlatformResourceURI;
    import static org.eclipse.emf.ecore.util.EcoreUtil.resolveAll;
    import static org.fortiss.tooling.kernel.utils.EMFResourceUtils.buildOptionsMap; import static org.fortiss.tooling.kernel.utils.EMFResourceUtils.buildOptionsMap;
    import static org.fortiss.tooling.kernel.utils.LoggingUtils.error; import static org.fortiss.tooling.kernel.utils.LoggingUtils.error;
    import static org.fortiss.tooling.kernel.utils.LoggingUtils.warning; import static org.fortiss.tooling.kernel.utils.LoggingUtils.warning;
    ...@@ -46,9 +45,7 @@ import org.eclipse.emf.common.command.BasicCommandStack; ...@@ -46,9 +45,7 @@ import org.eclipse.emf.common.command.BasicCommandStack;
    import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.common.command.CommandStack;
    import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.common.command.CommandStackListener;
    import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.Notification;
    import org.eclipse.emf.common.util.BasicEList;
    import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.Diagnostic;
    import org.eclipse.emf.common.util.EList;
    import org.eclipse.emf.common.util.URI; import org.eclipse.emf.common.util.URI;
    import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
    import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.Resource;
    ...@@ -283,7 +280,7 @@ class ModelContext implements ITopLevelElement, CommandStackListener { ...@@ -283,7 +280,7 @@ class ModelContext implements ITopLevelElement, CommandStackListener {
    /** Perform saving of the model. */ /** Perform saving of the model. */
    @Override @Override
    public synchronized void doSave(IProgressMonitor monitor) throws IOException, CoreException { public synchronized void doSave(IProgressMonitor monitor) throws IOException, CoreException {
    monitor.beginTask("Saving...", rset.getResources().size() + 2); monitor.beginTask("Saving...", 2);
    // Step 1: Validate resource managed by kernel // Step 1: Validate resource managed by kernel
    // Perform ID checking before safe to not produce inconsistent models // Perform ID checking before safe to not produce inconsistent models
    ...@@ -328,22 +325,6 @@ class ModelContext implements ITopLevelElement, CommandStackListener { ...@@ -328,22 +325,6 @@ class ModelContext implements ITopLevelElement, CommandStackListener {
    } }
    } }
    // Step 3..n: Save resources not managed by kernel
    for(Resource currentResource : rset.getResources()) {
    if(currentResource != resource && !editingDomain.isReadOnly(currentResource) &&
    !currentResource.getContents().isEmpty()) {
    // do not save resources which are not contained (by a FileProject)
    try {
    currentResource.save(saveOptions);
    } catch(IOException e) {
    if(exception == null) {
    exception = e;
    }
    } finally {
    monitor.worked(1);
    }
    }
    }
    monitor.done(); monitor.done();
    if(exception == null) { if(exception == null) {
    ...@@ -505,39 +486,15 @@ class ModelContext implements ITopLevelElement, CommandStackListener { ...@@ -505,39 +486,15 @@ class ModelContext implements ITopLevelElement, CommandStackListener {
    @Override @Override
    public boolean delete() { public boolean delete() {
    // Determine resources referenced by the resource managed by the kernel
    EList<Resource> resourcesToDelete = new BasicEList<Resource>();
    resolveAll(rset);
    for(Resource currentResource : rset.getResources()) {
    if(currentResource != resource) {
    resourcesToDelete.add(currentResource);
    }
    }
    boolean rval = true;
    // First, delete resource managed by the kernel
    try { try {
    getFile().delete(false, null); getFile().delete(false, null);
    } catch(CoreException e) { } catch(CoreException e) {
    String msg = "Error during deletion of model file " + getFile().getName() + "."; String msg = "Error during deletion of model file " + getFile().getName() + ".";
    error(ToolingKernelActivator.getDefault(), msg); error(ToolingKernelActivator.getDefault(), msg);
    rval = false; return false;
    }
    // The, delete all other resources
    for(Resource currentResource : resourcesToDelete) {
    try {
    currentResource.delete(null);
    } catch(IOException e) {
    String msg = "Error during deletion of model file ";
    msg += currentResource.getURI().lastSegment() + ".";
    error(ToolingKernelActivator.getDefault(), msg);
    rval = false;
    }
    } }
    return rval; return true;
    } }
    /** {@inheritDoc} */ /** {@inheritDoc} */
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment