blob: 7281c40b096ed169d455f401437a25930cea2291 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2021 Siemens and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Siemens - [574930] Initial API and implementation
*
* </copyright>
*/
package org.eclipse.sphinx.tests.emf.workspace.loading;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.sphinx.emf.metamodel.AbstractMetaModelDescriptor;
import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
import org.eclipse.sphinx.emf.model.IModelDescriptor;
import org.eclipse.sphinx.emf.model.ModelDescriptor;
import org.eclipse.sphinx.emf.scoping.DefaultResourceScope;
import org.eclipse.sphinx.emf.workspace.loading.DefaultModelLoadManager;
import org.eclipse.sphinx.emf.workspace.loading.IModelLoadManager;
import org.eclipse.sphinx.emf.workspace.loading.ModelLoadManager;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultFileLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultFileReloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultFileUnloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultModelLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultModelUnloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultProjectLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultProjectReloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultUnresolveUnreachableCrossProjectReferencesOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.DefaultUpdateResourceURIOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IFileLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IFileReloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IFileUnloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IModelLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IModelUnloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IProjectLoadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IProjectReloadOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IUnresolveUnreachableCrossProjectReferencesOperation;
import org.eclipse.sphinx.emf.workspace.loading.operations.IUpdateResourceURIOperation;
import org.junit.Test;
/**
* In order to successfully run this test make sure that <i>org.eclipse.sphinx.tests.emf.workspace.extension</i> plug-in
* is not present in the same runtime, because that will register the <i>CustomModelLoadManager</i> which will override
* the {@link DefaultModelLoadManager}, as a result this test will fail.
*/
public class DefaultModelLoadManagerTest {
@Test
public void testDefaultInstance() {
final IModelLoadManager instance = ModelLoadManager.INSTANCE;
assertNotNull(instance);
assertEquals(instance.getClass(), DefaultModelLoadManager.class);
}
@Test
public void testDefaultOpreations() {
final ModelLoadManagerOperationAccessor instance = new ModelLoadManagerOperationAccessor();
DefaultMetaModelDescriptor defaultMetaModelDescriptor = new DefaultMetaModelDescriptor("id", "ns", "name"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ModelDescriptor defaultModelDescriptor = new ModelDescriptor(defaultMetaModelDescriptor, null, new DefaultResourceScope());
Collection<IFile> files = Collections.emptyList();
Collection<IProject> projects = Collections.emptyList();
Map<TransactionalEditingDomain, Collection<Resource>> resourcesToUnload = Collections.emptyMap();
Map<IFile, IPath> filesToUpdate = Collections.emptyMap();
IFileLoadOperation fileLoadOperation = instance.createFileLoadOperation(files, defaultMetaModelDescriptor);
IFileReloadOperation fileReloadOperation = instance.createFileReloadOperation(files, defaultMetaModelDescriptor, false);
IFileUnloadOperation fileUnloadOperation = instance.createFileUnloadOperation(files, defaultMetaModelDescriptor, false);
IModelLoadOperation modelLoadOperation = instance.createModelLoadOperation(defaultModelDescriptor, false);
IModelUnloadOperation modelUnloadOperation = instance.createModelUnloadOperation(resourcesToUnload, false);
IProjectLoadOperation projectLoadOperation = instance.createProjectLoadOperation(projects, false, defaultMetaModelDescriptor);
IProjectReloadOperation projectReloadOperation = instance.createProjectReloadOperation(projects, false, defaultMetaModelDescriptor);
IUnresolveUnreachableCrossProjectReferencesOperation unresolveUnreachableCrossProjectReferencesOperation = instance
.createUnresolveUnreachableCrossProjectReferencesOperation(projects);
IUpdateResourceURIOperation updateResourceURIOperation = instance.createUpdateResourceURIOperation(filesToUpdate);
assertNotNull(fileLoadOperation);
assertNotNull(fileReloadOperation);
assertNotNull(fileUnloadOperation);
assertNotNull(modelLoadOperation);
assertNotNull(modelUnloadOperation);
assertNotNull(projectLoadOperation);
assertNotNull(projectReloadOperation);
assertNotNull(unresolveUnreachableCrossProjectReferencesOperation);
assertNotNull(updateResourceURIOperation);
assertEquals(fileLoadOperation.getClass(), DefaultFileLoadOperation.class);
assertEquals(fileReloadOperation.getClass(), DefaultFileReloadOperation.class);
assertEquals(fileUnloadOperation.getClass(), DefaultFileUnloadOperation.class);
assertEquals(modelLoadOperation.getClass(), DefaultModelLoadOperation.class);
assertEquals(modelUnloadOperation.getClass(), DefaultModelUnloadOperation.class);
assertEquals(projectLoadOperation.getClass(), DefaultProjectLoadOperation.class);
assertEquals(projectReloadOperation.getClass(), DefaultProjectReloadOperation.class);
assertEquals(unresolveUnreachableCrossProjectReferencesOperation.getClass(),
DefaultUnresolveUnreachableCrossProjectReferencesOperation.class);
assertEquals(updateResourceURIOperation.getClass(), DefaultUpdateResourceURIOperation.class);
}
private static class DefaultMetaModelDescriptor extends AbstractMetaModelDescriptor {
protected DefaultMetaModelDescriptor(String identifier, String namespace, String name) {
super(identifier, namespace, name, null);
}
/*
* @see org.eclipse.sphinx.emf.metamodel.AbstractMetaModelDescriptor#getDefaultContentTypeId()
*/
@Override
public String getDefaultContentTypeId() {
return ""; //$NON-NLS-1$
}
}
private static class ModelLoadManagerOperationAccessor extends DefaultModelLoadManager {
@Override
public IFileLoadOperation createFileLoadOperation(Collection<IFile> files, IMetaModelDescriptor mmDescriptor) {
return super.createFileLoadOperation(files, mmDescriptor);
}
@Override
public IFileReloadOperation createFileReloadOperation(Collection<IFile> files, IMetaModelDescriptor mmDescriptor, boolean memoryOptimized) {
return super.createFileReloadOperation(files, mmDescriptor, memoryOptimized);
}
@Override
public IFileUnloadOperation createFileUnloadOperation(Collection<IFile> files, IMetaModelDescriptor mmDescriptor, boolean memoryOptimized) {
return super.createFileUnloadOperation(files, mmDescriptor, memoryOptimized);
}
@Override
public IModelLoadOperation createModelLoadOperation(IModelDescriptor modelDescriptor, boolean includeReferencedScopes) {
return super.createModelLoadOperation(modelDescriptor, includeReferencedScopes);
}
@Override
public IModelUnloadOperation createModelUnloadOperation(Map<TransactionalEditingDomain, Collection<Resource>> resourcesToUnload,
boolean memoryOptimized) {
return super.createModelUnloadOperation(resourcesToUnload, memoryOptimized);
}
@Override
public IProjectLoadOperation createProjectLoadOperation(Collection<IProject> projects, boolean includeReferencedProjects,
IMetaModelDescriptor mmDescriptor) {
return super.createProjectLoadOperation(projects, includeReferencedProjects, mmDescriptor);
}
@Override
public IProjectReloadOperation createProjectReloadOperation(Collection<IProject> projects, boolean includeReferencedProjects,
IMetaModelDescriptor mmDescriptor) {
return super.createProjectReloadOperation(projects, includeReferencedProjects, mmDescriptor);
}
@Override
public IUnresolveUnreachableCrossProjectReferencesOperation createUnresolveUnreachableCrossProjectReferencesOperation(
Collection<IProject> projectsWithUnreachableCrossRefrencesToUnresolve) {
return super.createUnresolveUnreachableCrossProjectReferencesOperation(projectsWithUnreachableCrossRefrencesToUnresolve);
}
@Override
public IUpdateResourceURIOperation createUpdateResourceURIOperation(Map<IFile, IPath> filesToUpdate) {
return super.createUpdateResourceURIOperation(filesToUpdate);
}
}
}