| /** |
| * <copyright> |
| * |
| * Copyright (c) 2008-2019 See4sys, itemis and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * See4sys - Initial API and implementation |
| * itemis - [400897] ExtendedResourceAdapter's approach of reflectively clearing all EObject fields when performing memory-optimized unloads bears the risk of leaving some EObjects leaked |
| * itemis - [409510] Enable resource scope-sensitive proxy resolutions without forcing metamodel implementations to subclass EObjectImpl |
| * itemis - [418005] Add support for model files with multiple root elements |
| * itemis - [423676] AbstractIntegrationTestCase unable to remove project references that are no longer needed |
| * itemis - [425379] ExtendedResourceSet may contain a resource multiple times (with normalized and non-normalized URI) |
| * |
| * </copyright> |
| */ |
| package org.eclipse.sphinx.tests.emf.integration.util; |
| |
| import java.net.URL; |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.Set; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.IResourceRuleFactory; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.AssertionFailedException; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.core.runtime.OperationCanceledException; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.core.runtime.jobs.ISchedulingRule; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.InternalEObject; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.emf.ecore.util.FeatureMap.Entry; |
| import org.eclipse.emf.ecore.xmi.XMLResource; |
| import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; |
| import org.eclipse.emf.edit.provider.WrapperItemProvider; |
| import org.eclipse.emf.transaction.TransactionalEditingDomain; |
| import org.eclipse.sphinx.emf.resource.ExtendedResource; |
| import org.eclipse.sphinx.emf.resource.ExtendedResourceAdapter; |
| import org.eclipse.sphinx.emf.resource.ExtendedResourceAdapterFactory; |
| import org.eclipse.sphinx.emf.resource.ModelResourceDescriptor; |
| import org.eclipse.sphinx.emf.util.EcorePlatformUtil; |
| import org.eclipse.sphinx.emf.util.EcoreResourceUtil; |
| import org.eclipse.sphinx.emf.util.WorkspaceEditingDomainUtil; |
| import org.eclipse.sphinx.emf.util.WorkspaceTransactionUtil; |
| import org.eclipse.sphinx.emf.workspace.loading.ModelLoadManager; |
| import org.eclipse.sphinx.examples.hummingbird10.Application; |
| import org.eclipse.sphinx.examples.hummingbird10.Component; |
| import org.eclipse.sphinx.examples.hummingbird10.Hummingbird10Factory; |
| import org.eclipse.sphinx.examples.hummingbird10.Hummingbird10MMDescriptor; |
| import org.eclipse.sphinx.examples.hummingbird10.Hummingbird10Package; |
| import org.eclipse.sphinx.examples.hummingbird10.Interface; |
| import org.eclipse.sphinx.examples.hummingbird20.Hummingbird20MMDescriptor; |
| import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package; |
| import org.eclipse.sphinx.examples.hummingbird20.instancemodel.ParameterExpression; |
| import org.eclipse.sphinx.examples.hummingbird20.typemodel.ComponentType; |
| import org.eclipse.sphinx.examples.hummingbird20.typemodel.Platform; |
| import org.eclipse.sphinx.examples.hummingbird20.typemodel.Port; |
| import org.eclipse.sphinx.examples.hummingbird20.typemodel.TypeModel20Factory; |
| import org.eclipse.sphinx.examples.uml2.ide.metamodel.UML2MMDescriptor; |
| import org.eclipse.sphinx.tests.emf.integration.internal.Activator; |
| import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultIntegrationTestCase; |
| import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultTestReferenceWorkspace; |
| import org.eclipse.uml2.uml.Model; |
| import org.eclipse.uml2.uml.Package; |
| import org.eclipse.uml2.uml.UMLFactory; |
| import org.eclipse.uml2.uml.UMLPackage; |
| import org.xml.sax.SAXParseException; |
| |
| /** |
| * JUnit Test for class {@link EcorePlatformUtil} |
| */ |
| @SuppressWarnings("nls") |
| public class EcorePlatformUtilTest extends DefaultIntegrationTestCase { |
| |
| public EcorePlatformUtilTest() { |
| // Set subset of projects to load |
| Set<String> projectsToLoad = getProjectSubsetToLoad(); |
| projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A); |
| projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A); |
| projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D); |
| projectsToLoad.add(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_E); |
| |
| // Remove all project references except: |
| // HB_PROJECT_NAME_20_E -> HB_PROJECT_NAME_20_D |
| Map<String, Set<String>> projectReferences = getProjectReferences(); |
| projectReferences.remove(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_E); |
| projectReferences.remove(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D); |
| |
| // Set test plug-in for retrieving test input resources |
| setTestPlugin(Activator.getPlugin()); |
| } |
| |
| private Platform createPlatform() { |
| Platform platform = TypeModel20Factory.eINSTANCE.createPlatform(); |
| platform.setName("Platform"); |
| |
| org.eclipse.sphinx.examples.hummingbird20.typemodel.Interface interface1 = TypeModel20Factory.eINSTANCE.createInterface(); |
| interface1.setName("interface"); |
| platform.getInterfaces().add(interface1); |
| |
| ComponentType componentType = TypeModel20Factory.eINSTANCE.createComponentType(); |
| componentType.setName("ComponentType"); |
| platform.getComponentTypes().add(componentType); |
| |
| org.eclipse.sphinx.examples.hummingbird20.typemodel.Parameter param = TypeModel20Factory.eINSTANCE.createParameter(); |
| param.setName("param"); |
| param.setDataType("String"); |
| param.setOptional(true); |
| componentType.getParameters().add(param); |
| |
| Port port = TypeModel20Factory.eINSTANCE.createPort(); |
| port.setName("port"); |
| port.setOwner(componentType); |
| port.setMaxProviderCount(100); |
| port.setMinProviderCount(10); |
| port.setRequiredInterface(interface1); |
| |
| componentType.getPorts().add(port); |
| return platform; |
| |
| } |
| |
| private Application createApplicationHB10() { |
| Application application = Hummingbird10Factory.eINSTANCE.createApplication(); |
| application.setName("Application"); |
| |
| Component component = Hummingbird10Factory.eINSTANCE.createComponent(); |
| component.setName("Component"); |
| |
| Interface interface1 = Hummingbird10Factory.eINSTANCE.createInterface(); |
| interface1.setName("Interface"); |
| |
| application.getComponents().add(component); |
| application.getInterfaces().add(interface1); |
| |
| return application; |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#validate(IFile, URL)} . |
| */ |
| public void testValidate() throws Exception { |
| |
| IFile validModelFile = refWks.hbProject20_A.getFile("valid_exampleModel.xml"); |
| assertNotNull(validModelFile); |
| validModelFile.create(getTestFileAccessor().openInputFileInputStream("valid_exampleModel.xml"), true, null); |
| |
| IFile invalidModelFile = refWks.hbProject20_A.getFile("invalid_exampleModel.xml"); |
| assertNotNull(invalidModelFile); |
| invalidModelFile.create(getTestFileAccessor().openInputFileInputStream("invalid_exampleModel.xml"), true, null); |
| |
| URL schemaURL = getTestFileAccessor().getInputFileURI("exampleSchema.xsd", true).toURL(); |
| |
| try { |
| EcorePlatformUtil.validate(validModelFile, schemaURL); |
| |
| } catch (Exception ex) { |
| fail(ex.getClass().getName() + " " + ex.getMessage()); |
| } |
| try { |
| EcorePlatformUtil.validate(invalidModelFile, schemaURL); |
| } catch (Exception ex) { |
| if (!(ex instanceof SAXParseException)) { |
| fail(ex.getMessage()); |
| } |
| } |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#unloadFile(ResourceSet resourceSet, IPath modelPath)} . |
| */ |
| public void testUnloadResource() throws Exception { |
| int resourceCountInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourceCountInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourceCountInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // ================================================== |
| // HUMINGBIRD 20 |
| // Unload HB_FILE_NAME_20_20_A_1 |
| IFile file = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| |
| // Unload HB_FILE_NAME_20_20_A_2 |
| file = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| |
| // Unload HB_FILE_NAME_20_20_A_3 |
| file = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| |
| // Unload HB_FILE_NAME_20_20_D_1 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| |
| // Unload HB_FILE_NAME_20_20_D_2 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| |
| // Unload HB_FILE_NAME_20_20_D_3 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain20 = resourceCountInEditingDomain20 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| // ==================================================== |
| // HUMMINGBIRD 10 |
| // Unload HB_FILE_NAME_10_10_A_1 |
| file = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain10 = resourceCountInEditingDomain10 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| |
| // Unload HB_FILE_NAME_10_10_A_2 |
| file = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain10 = resourceCountInEditingDomain10 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| |
| // Unload HB_FILE_NAME_10_10_A_3 |
| file = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomain10 = resourceCountInEditingDomain10 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| // =============================================== |
| // UML2 MODEL |
| // Unload file UML2_FILE_NAME_20D_1 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomainUml2 = resourceCountInEditingDomainUml2 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourceCountInEditingDomainUml2); |
| |
| // Unload file UML2_FILE_NAME_20D_2 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomainUml2 = resourceCountInEditingDomainUml2 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourceCountInEditingDomainUml2); |
| |
| // Unload file UML2_FILE_NAME_20D_3 |
| file = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| assertNotNull(file); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, file); |
| waitForModelLoading(); |
| |
| resourceCountInEditingDomainUml2 = resourceCountInEditingDomainUml2 - 1; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourceCountInEditingDomainUml2); |
| |
| // ============================================== |
| // Unload null file |
| try { |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, null); |
| } catch (Exception ex) { |
| fail("Exception while input file is NULL: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| } |
| // --------------- |
| // Unload with null EditingDomain |
| try { |
| file = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_4); |
| EcorePlatformUtil.unloadFile(null, file); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| |
| } catch (Exception ex) { |
| fail("Exception while input file is NULL: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| } |
| // ----------------- |
| // Unload file with un correlative editing domain |
| file = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_4); |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| |
| file = refWks.hbProject20_E.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20E_1); |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, file); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourceCountInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourceCountInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourceCountInEditingDomainUml2); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createURI(IPath)} |
| */ |
| public void testCreateURI() throws Exception { |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| |
| // Paths pointing to existing location inside workspace |
| IPath existingFullPathInsideWorkspace = hbFile10_10A_1.getFullPath(); |
| URI expectedURI = URI.createPlatformResourceURI(existingFullPathInsideWorkspace.toString(), true); |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(existingFullPathInsideWorkspace)); |
| |
| IPath existingLocationPathInsideWorkspace = hbFile10_10A_1.getLocation(); |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(existingLocationPathInsideWorkspace)); |
| |
| // Paths pointing to non-existing locations inside workspace |
| IPath nonExistingFullPathInsideWorkspace = existingFullPathInsideWorkspace.removeLastSegments(1).append("dummy.xml"); |
| expectedURI = URI.createPlatformResourceURI(nonExistingFullPathInsideWorkspace.toString(), true); |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(nonExistingFullPathInsideWorkspace)); |
| |
| IPath nonExistingLocationPathInsideWorkspace = existingLocationPathInsideWorkspace.removeLastSegments(1).append("dummy.xml"); |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(nonExistingLocationPathInsideWorkspace)); |
| |
| nonExistingFullPathInsideWorkspace = new Path("/opt/a/b/c/dummy.xml"); |
| expectedURI = URI.createPlatformResourceURI(nonExistingFullPathInsideWorkspace.toString(), true); |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(nonExistingFullPathInsideWorkspace)); |
| |
| // Path pointing to location outside workspace |
| IPath nonExistingLocationPathOutsideWorkspace = ResourcesPlugin.getWorkspace().getRoot().getLocation().removeLastSegments(1) |
| .append("dummy.xml"); |
| String device = nonExistingLocationPathOutsideWorkspace.getDevice(); |
| if (device != null) { |
| // Under Windows, location path will include a drive letter |
| // -> it will be interpreted as (non existing) location path outside workspace |
| |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=423284: convert drive letter to lower case |
| String expectedPath = nonExistingLocationPathOutsideWorkspace.toString(); |
| expectedPath = expectedPath.substring(0, 1).toLowerCase() + expectedPath.substring(1); |
| expectedURI = URI.createFileURI(expectedPath); |
| |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(nonExistingLocationPathOutsideWorkspace)); |
| } else { |
| // Under Linux, location path will not include any drive letter but start with a leading separator |
| // -> it will be interpreted as (non existing) full path inside workspace |
| expectedURI = URI.createPlatformResourceURI(nonExistingLocationPathOutsideWorkspace.toString(), true); |
| |
| assertEquals(expectedURI, EcorePlatformUtil.createURI(nonExistingLocationPathOutsideWorkspace)); |
| } |
| } |
| |
| /** |
| * Test method for{@link EcorePlatformUtil#createPath(URI)} |
| */ |
| public void testCreatePath() throws Exception { |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| |
| String hbFile10_10A_1StringUri = DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1; |
| // Given URI is platform URI |
| String platformResourceURIPrefix = "platform:/resource"; |
| URI platformResouceURI = URI.createURI(platformResourceURIPrefix + "/" + hbFile10_10A_1StringUri, true); |
| IPath hbFile10_10A_1Path = hbFile10_10A_1.getFullPath(); |
| |
| assertEquals(hbFile10_10A_1Path, EcorePlatformUtil.createPath(platformResouceURI)); |
| |
| // Given URI is FileURI |
| URI fileURI = URI.createFileURI(hbFile10_10A_1.getLocation().toString()); |
| |
| assertEquals(hbFile10_10A_1.getLocation(), EcorePlatformUtil.createPath(fileURI)); |
| // Given URI is PluginURI |
| String pluginURIPrefix = "platform:/plugin"; |
| String pluginID = "org.eclipse.sphinx.emf.test"; |
| URI platformPluginURI = URI.createURI(pluginURIPrefix + "/" + pluginID + "/" + hbFile10_10A_1StringUri, true); |
| |
| assertEquals("/" + pluginID + "/" + hbFile10_10A_1StringUri, EcorePlatformUtil.createPath(platformPluginURI).toString()); |
| |
| try { |
| EcorePlatformUtil.createPath(null); |
| } catch (Exception ex) { |
| if (!(ex instanceof AssertionFailedException)) { |
| fail("Exception whil input path is null: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| } |
| } |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createAbsoluteFileURI(IPath)} |
| */ |
| public void testCreateAbsoluteFileURI() throws Exception { |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| |
| IPath hbFile10_10A_1Path = hbFile10_10A_1.getFullPath(); |
| URI expectedURI = URI.createFileURI(hbFile10_10A_1.getLocation().toString()); |
| |
| assertEquals(expectedURI, EcorePlatformUtil.createAbsoluteFileURI(hbFile10_10A_1Path)); |
| // TODO NPE: Null input |
| // try { |
| // IPath nullPath = null; |
| // EcorePlatformUtil.createAbsoluteFileURI(nullPath); |
| // |
| // } catch (Exception ex) { |
| // fail("Exception while input path is null: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| // } |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createAbsoluteFileLocation(URI)} |
| */ |
| public void testCreateAbsoluteFileLocation() throws Exception { |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| |
| // File URI |
| URI fileURI = URI.createFileURI(hbFile10_10A_1.getLocation().toString()); |
| assertEquals(hbFile10_10A_1.getLocation().toString().replace("//", "/"), |
| EcorePlatformUtil.createAbsoluteFileLocation(fileURI).toString().replace("//", "/")); |
| |
| // Platform URI |
| URI platformResouceURI = URI.createPlatformResourceURI(hbFile10_10A_1.getFullPath().toString(), true); |
| assertEquals(hbFile10_10A_1.getLocation(), EcorePlatformUtil.createAbsoluteFileLocation(platformResouceURI)); |
| |
| // TODO NPE: Null input |
| // try { |
| // URI nullUri = null; |
| // EcorePlatformUtil.createAbsoluteFileLocation(nullUri); |
| // |
| // } catch (Exception ex) { |
| // fail("Exception whil input path is null: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| // } |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#convertToAbsoluteFileLocation(IPath)} |
| */ |
| public void testConvertToAbsoluteFileLocation() throws Exception { |
| |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| // Given Path is full Path |
| IPath convertToAbsoluteFileLocation = EcorePlatformUtil.convertToAbsoluteFileLocation(hbFile10_10A_1.getFullPath()); |
| assertEquals(hbFile10_10A_1.getLocation(), convertToAbsoluteFileLocation); |
| // Given path is file location |
| assertEquals(hbFile10_10A_1.getLocation(), EcorePlatformUtil.convertToAbsoluteFileLocation(hbFile10_10A_1.getLocation())); |
| // Null input |
| try { |
| IPath nullPath = null; |
| EcorePlatformUtil.convertToAbsoluteFileLocation(nullPath); |
| |
| } catch (Exception ex) { |
| if (!(ex instanceof AssertionFailedException)) { |
| fail("Exception whil input path is null: " + ex.getClass() + " " + ex.getLocalizedMessage()); |
| } |
| } |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#isFileLoaded(IFile)} |
| * |
| * @throws Exception |
| */ |
| public void testIsFileLoaded() throws Exception { |
| IFile loadedHBFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile loadedHBFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile loadedHBFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(loadedHBFile10_1); |
| assertNotNull(loadedHBFile10_2); |
| assertNotNull(loadedHBFile10_3); |
| |
| assertTrue(loadedHBFile10_1.isAccessible()); |
| assertTrue(loadedHBFile10_2.isAccessible()); |
| assertTrue(loadedHBFile10_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile10_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile10_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile10_3)); |
| // -------------------------------------------------------------------- |
| // Files Hummingbird20 |
| int initialResourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| assertEquals(initialResourcesInEditingDomain20, refWks.editingDomain20.getResourceSet().getResources().size()); |
| IFile loadedHBFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile loadedHBFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile loadedHBFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| |
| assertNotNull(loadedHBFile20_1); |
| assertNotNull(loadedHBFile20_2); |
| assertNotNull(loadedHBFile20_3); |
| |
| assertTrue(loadedHBFile20_1.isAccessible()); |
| assertTrue(loadedHBFile20_2.isAccessible()); |
| assertTrue(loadedHBFile20_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile20_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile20_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile20_3)); |
| |
| // -------------------------------------------------------------------- |
| // Files Uml2 |
| IFile loadedUml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile loadedUml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile loadedUml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(loadedUml2File_1); |
| assertNotNull(loadedUml2File_2); |
| assertNotNull(loadedUml2File_3); |
| |
| assertTrue(loadedUml2File_1.isAccessible()); |
| assertTrue(loadedUml2File_2.isAccessible()); |
| assertTrue(loadedUml2File_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedUml2File_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedUml2File_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedUml2File_2)); |
| |
| // -------------------------------------------------------------------- |
| // Get file while resources is memory only |
| String onlyInMemoryResourceName = "newResource.instancemodel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| // We retrieve model root from file HB_FILE_NAME_20_20A_1 |
| IFile referenceFile = refWks.getReferenceFile(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A, |
| DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| Resource resource = EcorePlatformUtil.getResource(referenceFile); |
| assertNotNull(resource); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot = resource.getContents().get(0); |
| assertNotNull(modelRoot); |
| |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| Path path = new Path(onlyInMemoryResourceUri.toPlatformString(true)); |
| IFile fileOfResourceInMemoryOnly = ResourcesPlugin.getWorkspace().getRoot().getFile(path); |
| assertTrue(EcorePlatformUtil.isFileLoaded(fileOfResourceInMemoryOnly)); |
| // -------------------------------------------------------------------- |
| // Given file is Unloaded |
| |
| synchronizedUnloadFile(loadedHBFile10_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(loadedHBFile10_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile10_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile10_3)); |
| |
| synchronizedUnloadFile(loadedHBFile20_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(loadedHBFile20_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile20_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedHBFile20_3)); |
| |
| synchronizedUnloadFile(loadedUml2File_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(loadedUml2File_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedUml2File_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(loadedUml2File_2)); |
| |
| // ------------------------------------------------------------------ |
| // Given file is deleted |
| synchronizedDeleteFile(loadedHBFile10_2); |
| assertFalse(loadedHBFile10_1.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_1)); |
| assertFalse(loadedHBFile10_2.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_2)); |
| assertTrue(loadedHBFile10_3.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_3)); |
| |
| synchronizedDeleteFile(loadedHBFile10_3); |
| assertFalse(loadedHBFile10_1.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_1)); |
| assertFalse(loadedHBFile10_2.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_2)); |
| assertFalse(loadedHBFile10_3.getName(), EcorePlatformUtil.isFileLoaded(loadedHBFile10_3)); |
| |
| // -------------------------------------------------------------------- |
| // Given file is NULL |
| IFile nullFile = null; |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullFile)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#isFileLoaded(TransactionalEditingDomain, IFile)} |
| */ |
| public void testIsFileLoadedWithEditingDomain() throws Exception { |
| IFile loadedHBFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile loadedHBFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile loadedHBFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(loadedHBFile10_1); |
| assertNotNull(loadedHBFile10_2); |
| assertNotNull(loadedHBFile10_3); |
| |
| assertTrue(loadedHBFile10_1.isAccessible()); |
| assertTrue(loadedHBFile10_2.isAccessible()); |
| assertTrue(loadedHBFile10_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_3)); |
| |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile10_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile10_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile10_3)); |
| // -------------------------------------------------------------------- |
| // Files AR3x |
| IFile loadedHBFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile loadedHBFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile loadedHBFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| |
| assertNotNull(loadedHBFile20_1); |
| assertNotNull(loadedHBFile20_2); |
| assertNotNull(loadedHBFile20_3); |
| |
| assertTrue(loadedHBFile20_1.isAccessible()); |
| assertTrue(loadedHBFile20_2.isAccessible()); |
| assertTrue(loadedHBFile20_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_3)); |
| |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile20_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile20_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile20_3)); |
| // -------------------------------------------------------------------- |
| // Files Uml |
| IFile loadedUml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile loadedUml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile loadedUml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(loadedUml2File_1); |
| assertNotNull(loadedUml2File_2); |
| assertNotNull(loadedUml2File_3); |
| |
| assertTrue(loadedUml2File_1.isAccessible()); |
| assertTrue(loadedUml2File_2.isAccessible()); |
| assertTrue(loadedUml2File_3.isAccessible()); |
| |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_2)); |
| |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedUml2File_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedUml2File_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedUml2File_3)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedUml2File_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedUml2File_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedUml2File_3)); |
| |
| // -------------------------------------------------------------------- |
| // Get file while resources is memory only |
| String onlyInMemoryResourceName = "newResource.instancemodel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| // We retrieve model root from file HB_FILE_NAME_20_20A_1 |
| IFile referenceFile = refWks.getReferenceFile(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A, |
| DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| Resource resource = EcorePlatformUtil.getResource(referenceFile); |
| assertNotNull(resource); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot = resource.getContents().get(0); |
| assertNotNull(modelRoot); |
| |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| Path path = new Path(onlyInMemoryResourceUri.toPlatformString(true)); |
| IFile fileOfResourceInMemoryOnly = ResourcesPlugin.getWorkspace().getRoot().getFile(path); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, fileOfResourceInMemoryOnly)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, fileOfResourceInMemoryOnly)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, fileOfResourceInMemoryOnly)); |
| // -------------------------------------------------------------------- |
| // Given file is Unloaded |
| |
| synchronizedUnloadFile(loadedHBFile10_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_3)); |
| |
| synchronizedUnloadFile(loadedHBFile20_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, loadedHBFile20_3)); |
| |
| synchronizedUnloadFile(loadedUml2File_1); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_1)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, loadedUml2File_2)); |
| // ------------------------------------------------------------------ |
| // Given file is deleted |
| synchronizedDeleteFile(loadedHBFile10_2); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_2)); |
| assertTrue(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_3)); |
| |
| synchronizedDeleteFile(loadedHBFile10_3); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, loadedHBFile10_3)); |
| // ------------------------------------------------------------------ |
| // Given EditingDomain is NULL |
| TransactionalEditingDomain nullEditingDomain = null; |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile10_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile10_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile10_3)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile20_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile20_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedHBFile20_3)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedUml2File_1)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedUml2File_2)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(nullEditingDomain, loadedUml2File_3)); |
| |
| // -------------------------------------------------------------------- |
| // Given file is NULL |
| IFile nullFile = null; |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain20, nullFile)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomain10, nullFile)); |
| assertFalse(EcorePlatformUtil.isFileLoaded(refWks.editingDomainUml2, nullFile)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#isResourceLoaded(TransactionalEditingDomain, Resource)} |
| */ |
| public void testIsResourceLoaded() throws Exception { |
| // Hummingbird10 Resources |
| Resource loadedHBResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource loadedHBResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource loadedHBResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| |
| assertNotNull(loadedHBResource10_1); |
| assertNotNull(loadedHBResource10_2); |
| assertNotNull(loadedHBResource10_3); |
| |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_3)); |
| |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource10_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource10_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource10_3)); |
| // -------------------------------------------------------------------- |
| // //Hummingbird20 Resources |
| Resource loadedHBResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource loadedHBResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource loadedHBResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| |
| assertNotNull(loadedHBResource20_1); |
| assertNotNull(loadedHBResource20_2); |
| assertNotNull(loadedHBResource20_3); |
| |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_3)); |
| |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource20_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource20_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource20_3)); |
| // -------------------------------------------------------------------- |
| // Files Uml2 |
| |
| Resource loadedResourceUml2_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource loadedResourceUml2_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource loadedResourceUml2_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| |
| assertNotNull(loadedResourceUml2_1); |
| assertNotNull(loadedResourceUml2_2); |
| assertNotNull(loadedResourceUml2_3); |
| |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_3)); |
| |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedResourceUml2_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedResourceUml2_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedResourceUml2_3)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedResourceUml2_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedResourceUml2_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedResourceUml2_3)); |
| |
| // -------------------------------------------------------------------- |
| // Get file while resources is memory only |
| String onlyInMemoryResourceName = "newResource.instancemodel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| // We retrieve model root from file HB_FILE_NAME_20_20A_1 |
| IFile referenceFile = refWks.getReferenceFile(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A, |
| DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| Resource resource = EcorePlatformUtil.getResource(referenceFile); |
| assertNotNull(resource); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot = resource.getContents().get(0); |
| assertNotNull(modelRoot); |
| |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, onlyInMemoryResource20)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, onlyInMemoryResource20)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, onlyInMemoryResource20)); |
| // -------------------------------------------------------------------- |
| // Given file is Unloaded |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| |
| ModelLoadManager.INSTANCE.unloadFile(hbFile10_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_3)); |
| |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| |
| ModelLoadManager.INSTANCE.unloadFile(hbFile20_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, loadedHBResource20_3)); |
| |
| IFile Uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile Uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile Uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(Uml2File_1); |
| assertNotNull(Uml2File_2); |
| assertNotNull(Uml2File_3); |
| |
| ModelLoadManager.INSTANCE.unloadFile(Uml2File_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_1)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, loadedResourceUml2_3)); |
| // ------------------------------------------------------------------ |
| // Given file is deleted |
| synchronizedDeleteFile(hbFile10_2); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_2)); |
| assertTrue(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_3)); |
| |
| synchronizedDeleteFile(hbFile10_3); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, loadedHBResource10_3)); |
| // ------------------------------------------------------------------ |
| // Given EditingDomain is NULL |
| TransactionalEditingDomain nullEditingDomain = null; |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource10_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource10_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource10_3)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource20_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource20_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedHBResource20_3)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedResourceUml2_1)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedResourceUml2_2)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(nullEditingDomain, loadedResourceUml2_3)); |
| |
| // -------------------------------------------------------------------- |
| // Given file is NULL |
| Resource nullResource = null; |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain20, nullResource)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomain10, nullResource)); |
| assertFalse(EcorePlatformUtil.isResourceLoaded(refWks.editingDomainUml2, nullResource)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getFile(EObject)} |
| */ |
| public void testGetFileFromEObject() throws Exception { |
| // Hummingbird20 EObject |
| IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(hbFile20_20A_1); |
| assertTrue(hbFile20_20A_1.isAccessible()); |
| |
| Resource hbResource20 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| assertNotNull(hbResource20); |
| assertFalse(hbResource20.getContents().isEmpty()); |
| EObject rootObject20 = hbResource20.getContents().get(0); |
| |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(rootObject20)); |
| // -------------------------------------------------------------------- |
| // Hummingbird10 EObject |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| assertTrue(hbFile10_10A_1.isAccessible()); |
| Resource hbResource10 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| |
| assertNotNull(hbResource10); |
| assertFalse(hbResource10.getContents().isEmpty()); |
| EObject rootObject10 = hbResource10.getContents().get(0); |
| |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(rootObject10)); |
| // -------------------------------------------------------------------- |
| // Uml2 EObject |
| IFile shinxFile_3D_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| assertNotNull(shinxFile_3D_1); |
| assertTrue(shinxFile_3D_1.isAccessible()); |
| Resource Uml2Resource = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| |
| assertNotNull(Uml2Resource); |
| assertFalse(Uml2Resource.getContents().isEmpty()); |
| EObject uml2Object = Uml2Resource.getContents().get(0); |
| |
| assertEquals(shinxFile_3D_1, EcorePlatformUtil.getFile(uml2Object)); |
| // -------------------------------------------------------------------- |
| // Get file while resources is memory only |
| String onlyInMemoryResourceName = "newResource.instanceModel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| // We retrieve model root from file HB_FILE_NAME_20_20A_1 |
| IFile referenceFile = refWks.getReferenceFile(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A, |
| DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| Resource resource = EcorePlatformUtil.getResource(referenceFile); |
| assertNotNull(resource); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot = resource.getContents().get(0); |
| assertNotNull(modelRoot); |
| |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| Path path = new Path(onlyInMemoryResourceUri.toPlatformString(true)); |
| IFile expectedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path); |
| |
| IFile fileOfResourceInMemoryOnly = EcorePlatformUtil.getFile(modelRoot); |
| assertNotNull(fileOfResourceInMemoryOnly); |
| assertEquals(expectedFile, fileOfResourceInMemoryOnly); |
| assertFalse(fileOfResourceInMemoryOnly.isAccessible()); |
| // -------------------------------------------------------------------- |
| // Get file of object in unloaded resource |
| synchronizedUnloadProject(refWks.hbProject10_A, false); |
| assertNotNull(rootObject10); |
| assertNull(EcorePlatformUtil.getFile(rootObject10)); |
| // -------------------------------------------------------------------- |
| // Get deleted file from its object |
| hbFile20_20A_1.delete(true, new NullProgressMonitor()); |
| assertNotNull(rootObject20); |
| assertNotNull(EcorePlatformUtil.getFile(rootObject20)); |
| assertFalse(EcorePlatformUtil.getFile(rootObject20).isAccessible()); |
| // -------------------------------------------------------------------- |
| // Given Object is null |
| EObject nullObject = null; |
| assertNull(EcorePlatformUtil.getFile(nullObject)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getFile(URI)} |
| * |
| * @throws Exception |
| * @throws OperationCanceledException |
| */ |
| public void testGetFileFromUri() throws Exception { |
| // Test with a resource with an underlying file |
| |
| // Context: URI of Hummingbird 20 resource |
| IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(hbFile20_20A_1); |
| assertTrue(hbFile20_20A_1.isAccessible()); |
| String hbFile20_20A_1Path = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1; |
| |
| Resource hbResource20 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| assertNotNull(hbResource20); |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(hbResource20.getURI())); |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(hbFile20_20A_1.getFullPath()))); |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(URI.createPlatformResourceURI(hbFile20_20A_1Path, true))); |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(URI.createURI(hbFile20_20A_1Path, true))); |
| // -------------------------------------------------------------------- |
| // Context: URI of Hummingbird 10 resource |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| assertTrue(hbFile10_10A_1.isAccessible()); |
| String hbFile10_10A_1Path = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1; |
| |
| Resource hbResource10 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| assertNotNull(hbResource10); |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(hbResource10.getURI())); |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(hbFile10_10A_1.getFullPath()))); |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(URI.createPlatformResourceURI(hbFile10_10A_1Path, true))); |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(URI.createURI(hbFile10_10A_1Path, true))); |
| // -------------------------------------------------------------------- |
| // Context: URI of UML resource |
| |
| IFile fileUml2_20D_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| assertNotNull(fileUml2_20D_1); |
| assertTrue(fileUml2_20D_1.isAccessible()); |
| String fileUml2_20D_1Path = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" |
| + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1; |
| |
| Resource resourceUml2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| assertNotNull(resourceUml2); |
| assertEquals(fileUml2_20D_1, EcorePlatformUtil.getFile(resourceUml2.getURI())); |
| assertEquals(fileUml2_20D_1, EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(fileUml2_20D_1.getFullPath()))); |
| assertEquals(fileUml2_20D_1, EcorePlatformUtil.getFile(URI.createPlatformResourceURI(fileUml2_20D_1Path, true))); |
| assertEquals(fileUml2_20D_1, EcorePlatformUtil.getFile(URI.createURI(fileUml2_20D_1Path, true))); |
| |
| // -------------------------------------------------------------------- |
| // Test with a resource existing only in memory |
| String onlyInMemoryResourceName = "newResource.instancemodel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| EObject modelRoot = createHummingbird20InstanceModelRoot(); |
| assertNotNull(modelRoot); |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| Path path = new Path(onlyInMemoryResourceUri.toPlatformString(true)); |
| IFile expectedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path); |
| |
| assertEquals(expectedFile, EcorePlatformUtil.getFile(onlyInMemoryResource20.getURI())); |
| assertEquals(expectedFile, EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(onlyInMemoryResourceIPath))); |
| assertEquals(expectedFile, EcorePlatformUtil.getFile(URI.createPlatformResourceURI(onlyInMemoryResourcePath, true))); |
| assertEquals(expectedFile, EcorePlatformUtil.getFile(URI.createURI(onlyInMemoryResourcePath, true))); |
| // -------------------------------------------------------------------- |
| // Given URI is NULL |
| URI nullUri = null; |
| assertNull(EcorePlatformUtil.getFile(nullUri)); |
| // -------------------------------------------------------------------- |
| // Given URI is of deleted files |
| synchronizedDeleteFile(hbFile10_10A_1); |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(hbResource10.getURI())); |
| assertFalse(EcorePlatformUtil.getFile(hbResource10.getURI()).isAccessible()); |
| |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(hbFile10_10A_1.getFullPath()))); |
| assertFalse(EcorePlatformUtil.getFile(EcorePlatformUtil.createAbsoluteFileURI(hbFile10_10A_1.getFullPath())).isAccessible()); |
| |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(URI.createPlatformResourceURI(hbFile10_10A_1Path, true))); |
| assertFalse(EcorePlatformUtil.getFile(URI.createPlatformResourceURI(hbFile10_10A_1Path, true)).isAccessible()); |
| |
| assertEquals(hbFile10_10A_1, EcorePlatformUtil.getFile(URI.createURI(hbFile10_10A_1Path, true))); |
| assertFalse(EcorePlatformUtil.getFile(URI.createURI(hbFile10_10A_1Path, true)).isAccessible()); |
| // -------------------------------------------------------------------- |
| // Given URI is belong to resource outside workspace |
| java.net.URI outsideWrkUri = getTestFileAccessor().getInputFileURI("hbFile20.instancemodel"); |
| URI outsideWrksUri = getTestFileAccessor().convertToEMFURI(outsideWrkUri); |
| // Cannot get file outside workspace |
| IFile fileOutSideWrks = EcorePlatformUtil.getFile(outsideWrksUri); |
| assertNull(fileOutSideWrks); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getFile(Resource)} |
| * |
| * @throws InterruptedException |
| * @throws OperationCanceledException |
| */ |
| public void testGetFileFromResouce() throws Exception { |
| |
| // -------------------------------------------------------------------- |
| // File Hummingbird10 |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| URI hbResource10_1URI = EcorePlatformUtil.createURI(hbFile10_1.getFullPath()); |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(hbResource10_1URI, false); |
| URI hbResource10_2URI = EcorePlatformUtil.createURI(hbFile10_2.getFullPath()); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(hbResource10_2URI, false); |
| URI hbResource10_3URI = EcorePlatformUtil.createURI(hbFile10_3.getFullPath()); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(hbResource10_3URI, false); |
| |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| assertEquals(hbFile10_1, EcorePlatformUtil.getFile(hbResource10_1)); |
| assertEquals(hbFile10_2, EcorePlatformUtil.getFile(hbResource10_2)); |
| assertEquals(hbFile10_3, EcorePlatformUtil.getFile(hbResource10_3)); |
| // -------------------------------------------------------------------- |
| // File Hummingbird20 |
| int initialResourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| |
| assertEquals(initialResourcesInEditingDomain20, refWks.editingDomain20.getResourceSet().getResources().size()); |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| assertEquals(hbFile20_1, EcorePlatformUtil.getFile(hbResource20_1)); |
| assertEquals(hbFile20_2, EcorePlatformUtil.getFile(hbResource20_2)); |
| assertEquals(hbFile20_3, EcorePlatformUtil.getFile(hbResource20_3)); |
| assertEquals(hbFile20_4, EcorePlatformUtil.getFile(hbResource20_4)); |
| assertEquals(hbFile20_5, EcorePlatformUtil.getFile(hbResource20_5)); |
| assertEquals(hbFile20_6, EcorePlatformUtil.getFile(hbResource20_6)); |
| // -------------------------------------------------------------------- |
| // Uml2 File |
| int initialResourcesIneditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, initialResourcesIneditingDomainUml2); |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| Resource uml2Resource_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource uml2Resource_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource uml2Resource_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| |
| assertEquals(uml2File_1, EcorePlatformUtil.getFile(uml2Resource_1)); |
| assertEquals(uml2File_2, EcorePlatformUtil.getFile(uml2Resource_2)); |
| assertEquals(uml2File_3, EcorePlatformUtil.getFile(uml2Resource_3)); |
| // -------------------------------------------------------------------- |
| // Test with a resource existing only in memory |
| String onlyInMemoryResourceName = "newResource.instancemodel"; |
| String onlyInMemoryResourcePath = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + onlyInMemoryResourceName; |
| URI onlyInMemoryResourceUri = URI.createPlatformResourceURI(onlyInMemoryResourcePath, true); |
| |
| // We retrieve model root from file HB_FILE_NAME_20_20A_1 |
| EObject modelRoot = createHummingbird20InstanceModelRoot(); |
| // we add the new resource. |
| IPath onlyInMemoryResourceIPath = EcorePlatformUtil.createPath(onlyInMemoryResourceUri); |
| EcorePlatformUtil.addNewModelResource(refWks.editingDomain20, onlyInMemoryResourceIPath, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), modelRoot, true, null); |
| waitForModelLoading(); |
| |
| // We ensure that no underlying file exist on file system for our newly created resource. |
| assertFalse(EcoreResourceUtil.exists(onlyInMemoryResourceUri)); |
| |
| // we retrieve the newly created resource |
| Resource onlyInMemoryResource20 = EcorePlatformUtil.getResource(onlyInMemoryResourceUri); |
| assertNotNull(onlyInMemoryResource20); |
| Path path = new Path(onlyInMemoryResourceUri.toPlatformString(true)); |
| IFile expectedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path); |
| assertEquals(expectedFile, EcorePlatformUtil.getFile(onlyInMemoryResource20)); |
| assertFalse(EcorePlatformUtil.getFile(onlyInMemoryResource20).isAccessible()); |
| // -------------------------------------------------------------------- |
| // Given resource is NULL |
| Resource nullResource = null; |
| assertNull(EcorePlatformUtil.getFile(nullResource)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getFile(org.eclipse.emf.ecore.util.FeatureMap.Entry)} |
| */ |
| public void testGetFileFromFeatureMapEntry() throws Exception { |
| Resource hbResource20A_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| |
| assertNotNull(hbResource20A_1); |
| assertFalse(hbResource20A_1.getContents().isEmpty()); |
| assertTrue(hbResource20A_1.getContents().get(0) instanceof org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application modelRoot20A_1 = (org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application) hbResource20A_1 |
| .getContents().get(0); |
| assertNotNull(modelRoot20A_1); |
| |
| assertFalse(modelRoot20A_1.getComponents().isEmpty()); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component component = modelRoot20A_1.getComponents().get(0); |
| assertNotNull(component); |
| |
| assertFalse(component.getParameterExpressions().isEmpty()); |
| ParameterExpression parameterExpression = component.getParameterExpressions().get(0); |
| assertNotNull(parameterExpression); |
| assertFalse(parameterExpression.getMixed().isEmpty()); |
| Entry testEntry = parameterExpression.getMixed().get(0); |
| |
| assertEquals(InstanceModel20Package.Literals.PARAMETER_EXPRESSION__EXPRESSIONS, testEntry.getEStructuralFeature()); |
| |
| IFile file = EcorePlatformUtil.getFile(testEntry); |
| assertNotNull(file); |
| |
| // Given Entry is NULL |
| Entry nullEntry = null; |
| assertNull(EcorePlatformUtil.getFile(nullEntry)); |
| |
| // -------------------------------------------------------------------- |
| // Given Entry belong to unloaded resource |
| IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| ModelLoadManager.INSTANCE.unloadFile(hbFile20_20A_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNull(EcorePlatformUtil.getFile(testEntry)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getFile(org.eclipse.emf.edit.provider.IWrapperItemProvider)} |
| */ |
| public void testGetFileFromIWrapperItemProvider() throws Exception { |
| IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(hbFile20_20A_1); |
| assertTrue(hbFile20_20A_1.isAccessible()); |
| |
| Resource hb20Resource = EcorePlatformUtil.getResource(hbFile20_20A_1); |
| assertFalse(hb20Resource.getContents().isEmpty()); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application hb20Application = (org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application) hb20Resource |
| .getContents().get(0); |
| assertNotNull(hb20Application); |
| |
| assertFalse(hb20Application.getComponents().isEmpty()); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component component = hb20Application.getComponents().get(0); |
| |
| WrapperItemProvider wrapperItemProvider = new WrapperItemProvider(component, hb20Application, |
| InstanceModel20Package.eINSTANCE.getApplication_Components(), 1, |
| ((AdapterFactoryEditingDomain) WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)).getAdapterFactory()); |
| |
| assertEquals(hbFile20_20A_1, EcorePlatformUtil.getFile(wrapperItemProvider)); |
| |
| // -------------------------------------------------------------------- |
| // Input is null |
| WrapperItemProvider nullItemProvider = null; |
| assertNull(EcorePlatformUtil.getFile(nullItemProvider)); |
| // -------------------------------------------------------------------- |
| // WrapperItemProvider of object in unloaded resource |
| ModelLoadManager.INSTANCE.unloadFile(hbFile20_20A_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNull(EcorePlatformUtil.getFile(wrapperItemProvider)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getResource(EObject)} |
| */ |
| public void testGetResourceFromEObject() throws Exception { |
| // Hummingbird20 EObject |
| Resource hbResource20 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| |
| assertNotNull(hbResource20); |
| assertFalse(hbResource20.getContents().isEmpty()); |
| EObject object3x = hbResource20.getContents().get(0); |
| |
| assertSame(hbResource20, EcorePlatformUtil.getResource(object3x)); |
| // -------------------------------------------------------------------- |
| // Hummingbird10 EObject |
| IFile hbFile10_10A_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| assertNotNull(hbFile10_10A_1); |
| assertTrue(hbFile10_10A_1.isAccessible()); |
| Resource hbResource10 = null; |
| for (Resource res : refWks.editingDomain10.getResourceSet().getResources()) { |
| if (DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1.equals(res.getURI().lastSegment())) { |
| hbResource10 = res; |
| break; |
| } |
| } |
| assertNotNull(hbResource10); |
| assertFalse(hbResource10.getContents().isEmpty()); |
| EObject object21 = hbResource10.getContents().get(0); |
| |
| assertSame(hbResource10, EcorePlatformUtil.getResource(object21)); |
| // -------------------------------------------------------------------- |
| // Uml2 EObject |
| IFile uml2File_20D_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| assertNotNull(uml2File_20D_1); |
| assertTrue(uml2File_20D_1.isAccessible()); |
| Resource uml2Resource = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| assertNotNull(uml2Resource); |
| assertFalse(uml2Resource.getContents().isEmpty()); |
| EObject uml2Object = uml2Resource.getContents().get(0); |
| |
| assertSame(uml2Resource, EcorePlatformUtil.getResource(uml2Object)); |
| // -------------------------------------------------------------------- |
| // Given object is NULL |
| EObject nullEObject = null; |
| assertNull(EcorePlatformUtil.getResource(nullEObject)); |
| // -------------------------------------------------------------------- |
| // Given object belong to unloaded resource |
| ModelLoadManager.INSTANCE.unloadFile(hbFile10_10A_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNotNull(object21); |
| assertNull(EcorePlatformUtil.getResource(object21)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getResource(URI)} |
| */ |
| public void testGetResourceFromURI() throws Exception { |
| |
| String hbFile20_20A_1StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1; |
| String hbFile20_20A_2StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2; |
| String hbFile20_20A_3StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3; |
| String hbFile20_20D_1StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1; |
| String hbFile20_20D_2StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2; |
| String hbFile20_20D_3StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3; |
| |
| Resource hbResource20_1 = null; |
| Resource hbResource20_2 = null; |
| Resource hbResource20_3 = null; |
| Resource hbResource20_4 = null; |
| Resource hbResource20_5 = null; |
| Resource hbResource20_6 = null; |
| for (Resource res : refWks.editingDomain20.getResourceSet().getResources()) { |
| if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1.equals(res.getURI().lastSegment())) { |
| hbResource20_1 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2.equals(res.getURI().lastSegment())) { |
| hbResource20_2 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3.equals(res.getURI().lastSegment())) { |
| hbResource20_3 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1.equals(res.getURI().lastSegment())) { |
| hbResource20_4 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2.equals(res.getURI().lastSegment())) { |
| hbResource20_5 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3.equals(res.getURI().lastSegment())) { |
| hbResource20_6 = res; |
| } |
| } |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| // PlatformResource URI |
| assertEquals(hbResource20_1, EcorePlatformUtil.getResource(hbResource20_1.getURI())); |
| assertEquals(hbResource20_2, EcorePlatformUtil.getResource(hbResource20_2.getURI())); |
| assertEquals(hbResource20_3, EcorePlatformUtil.getResource(hbResource20_3.getURI())); |
| assertEquals(hbResource20_4, EcorePlatformUtil.getResource(hbResource20_4.getURI())); |
| assertEquals(hbResource20_5, EcorePlatformUtil.getResource(hbResource20_5.getURI())); |
| assertEquals(hbResource20_6, EcorePlatformUtil.getResource(hbResource20_6.getURI())); |
| |
| assertEquals(hbResource20_1, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20A_1StringUri, true))); |
| assertEquals(hbResource20_2, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20A_2StringUri, true))); |
| assertEquals(hbResource20_3, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20A_3StringUri, true))); |
| assertEquals(hbResource20_4, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20D_1StringUri, true))); |
| assertEquals(hbResource20_5, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20D_2StringUri, true))); |
| assertEquals(hbResource20_6, EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20D_3StringUri, true))); |
| |
| // Workspace-relative absolute URIs |
| assertEquals(hbResource20_1, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20A_1StringUri, true))); |
| assertEquals(hbResource20_2, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20A_2StringUri, true))); |
| assertEquals(hbResource20_3, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20A_3StringUri, true))); |
| assertEquals(hbResource20_4, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20D_1StringUri, true))); |
| assertEquals(hbResource20_5, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20D_2StringUri, true))); |
| assertEquals(hbResource20_6, EcorePlatformUtil.getResource(URI.createURI(hbFile20_20D_3StringUri, true))); |
| |
| // Absolute file URIs |
| URI hbFile20_20A_1FileUri = URI.createFileURI(hbFile20_20A_1StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20A_1FileUri = URI.createURI("file:" + hbFile20_20A_1StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20A_1FileUri, hbFile20_20A_1FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20A_1FileUri)); |
| URI hbFile20_20A_2FileUri = URI.createFileURI(hbFile20_20A_2StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20A_2FileUri = URI.createURI("file:" + hbFile20_20A_2StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20A_2FileUri, hbFile20_20A_2FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20A_2FileUri)); |
| URI hbFile20_20A_3FileUri = URI.createFileURI(hbFile20_20A_3StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20A_3FileUri = URI.createURI("file:" + hbFile20_20A_3StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20A_3FileUri, hbFile20_20A_3FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20A_3FileUri)); |
| URI hbFile20_20D_1FileUri = URI.createFileURI(hbFile20_20D_1StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20D_1FileUri = URI.createURI("file:" + hbFile20_20D_1StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20D_1FileUri, hbFile20_20D_1FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20D_1FileUri)); |
| URI hbFile20_20D_2FileUri = URI.createFileURI(hbFile20_20D_2StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20D_2FileUri = URI.createURI("file:" + hbFile20_20D_2StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20D_2FileUri, hbFile20_20D_2FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20D_2FileUri)); |
| URI hbFile20_20D_3FileUri = URI.createFileURI(hbFile20_20D_3StringUri); |
| // Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=425631: create file URI manually when running |
| // under Windows |
| if (org.eclipse.core.runtime.Platform.OS_WIN32.equals(org.eclipse.core.runtime.Platform.getOS())) { |
| hbFile20_20D_3FileUri = URI.createURI("file:" + hbFile20_20D_3StringUri); |
| } |
| assertTrue("Unexpected non-file URI: " + hbFile20_20D_3FileUri, hbFile20_20D_3FileUri.isFile()); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20D_3FileUri)); |
| |
| // -------------------------------------------------------------------- |
| // Given URI is unloaded resource's uri |
| IFile fileToUnload = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(fileToUnload); |
| ModelLoadManager.INSTANCE.unloadFile(fileToUnload, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNotNull(hbResource20_1); |
| assertNull(EcorePlatformUtil.getResource(hbResource20_1.getURI())); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_20A_1FileUri)); |
| assertNull(EcorePlatformUtil.getResource(URI.createURI(hbFile20_20A_1StringUri, true))); |
| assertNull(EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20A_1StringUri, true))); |
| // -------------------------------------------------------------------- |
| // Given URI is outside of workspace |
| String hbFile20_20B_1StringUri = "/" + DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_B + "/" |
| + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20B_1; |
| assertNull(EcorePlatformUtil.getResource(URI.createFileURI(hbFile20_20B_1StringUri))); |
| assertNull(EcorePlatformUtil.getResource(URI.createURI(hbFile20_20B_1StringUri, true))); |
| assertNull(EcorePlatformUtil.getResource(URI.createPlatformResourceURI(hbFile20_20B_1StringUri, true))); |
| |
| // -------------------------------------------------------------------- |
| // Given URI is NULL |
| URI nullUri = null; |
| assertNull(EcorePlatformUtil.getResource(nullUri)); |
| |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getResource(IFile)} |
| */ |
| public void testGetResourceFromFile() throws Exception { |
| // File Hummingbird10 |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| Resource hbResource10_1 = null; |
| Resource hbResource10_2 = null; |
| Resource hbResource10_3 = null; |
| for (Resource res : refWks.editingDomain10.getResourceSet().getResources()) { |
| if (DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1.equals(res.getURI().lastSegment())) { |
| hbResource10_1 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2.equals(res.getURI().lastSegment())) { |
| hbResource10_2 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3.equals(res.getURI().lastSegment())) { |
| hbResource10_3 = res; |
| } |
| } |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| assertEquals(hbResource10_1, EcorePlatformUtil.getResource(hbFile10_1)); |
| assertEquals(hbResource10_2, EcorePlatformUtil.getResource(hbFile10_2)); |
| assertEquals(hbResource10_3, EcorePlatformUtil.getResource(hbFile10_3)); |
| // -------------------------------------------------------------------- |
| // File Hummingbird20 |
| int initialResourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| assertEquals(initialResourcesInEditingDomain20, refWks.editingDomain20.getResourceSet().getResources().size()); |
| |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| |
| Resource hbResource20_1 = null; |
| Resource hbResource20_2 = null; |
| Resource hbResource20_3 = null; |
| Resource hbResource20_4 = null; |
| Resource hbResource20_5 = null; |
| Resource hbResource20_6 = null; |
| for (Resource res : refWks.editingDomain20.getResourceSet().getResources()) { |
| if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1.equals(res.getURI().lastSegment())) { |
| hbResource20_1 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2.equals(res.getURI().lastSegment())) { |
| hbResource20_2 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3.equals(res.getURI().lastSegment())) { |
| hbResource20_3 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1.equals(res.getURI().lastSegment())) { |
| hbResource20_4 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2.equals(res.getURI().lastSegment())) { |
| hbResource20_5 = res; |
| } else if (DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3.equals(res.getURI().lastSegment())) { |
| hbResource20_6 = res; |
| } |
| } |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| assertEquals(hbResource20_1, EcorePlatformUtil.getResource(hbFile20_1)); |
| assertEquals(hbResource20_2, EcorePlatformUtil.getResource(hbFile20_2)); |
| assertEquals(hbResource20_3, EcorePlatformUtil.getResource(hbFile20_3)); |
| assertEquals(hbResource20_4, EcorePlatformUtil.getResource(hbFile20_4)); |
| assertEquals(hbResource20_5, EcorePlatformUtil.getResource(hbFile20_5)); |
| assertEquals(hbResource20_6, EcorePlatformUtil.getResource(hbFile20_6)); |
| // -------------------------------------------------------------------- |
| // Uml2 File |
| int initialResourcesIneditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, initialResourcesIneditingDomainUml2); |
| |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| Resource uml2Resource_1 = null; |
| Resource uml2Resource_2 = null; |
| Resource uml2Resource_3 = null; |
| for (Resource res : refWks.editingDomainUml2.getResourceSet().getResources()) { |
| if (DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1.equals(res.getURI().lastSegment())) { |
| uml2Resource_1 = res; |
| } else if (DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2.equals(res.getURI().lastSegment())) { |
| uml2Resource_2 = res; |
| } else if (DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3.equals(res.getURI().lastSegment())) { |
| uml2Resource_3 = res; |
| } |
| } |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| |
| assertEquals(uml2Resource_1, EcorePlatformUtil.getResource(uml2File_1)); |
| assertEquals(uml2Resource_2, EcorePlatformUtil.getResource(uml2File_2)); |
| assertEquals(uml2Resource_3, EcorePlatformUtil.getResource(uml2File_3)); |
| // -------------------------------------------------------------------- |
| // Given File is unloaded |
| ModelLoadManager.INSTANCE.unloadFile(hbFile10_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNull(EcorePlatformUtil.getResource(hbFile10_1)); |
| ModelLoadManager.INSTANCE.unloadFile(hbFile20_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNull(EcorePlatformUtil.getResource(hbFile20_1)); |
| ModelLoadManager.INSTANCE.unloadFile(uml2File_1, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| assertNull(EcorePlatformUtil.getResource(uml2File_1)); |
| // -------------------------------------------------------------------- |
| // Given File is NULL |
| IFile nullFile = null; |
| assertNull(EcorePlatformUtil.getResource(nullFile)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getResource(org.eclipse.emf.ecore.util.FeatureMap.Entry)} |
| */ |
| public void testGetResourceFromFeatureMapEntry() throws Exception { |
| Resource hbResource20A_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| |
| assertNotNull(hbResource20A_1); |
| assertFalse(hbResource20A_1.getContents().isEmpty()); |
| assertTrue(hbResource20A_1.getContents().get(0) instanceof org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application modelRoot20A_1 = (org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application) hbResource20A_1 |
| .getContents().get(0); |
| assertNotNull(modelRoot20A_1); |
| |
| assertFalse(modelRoot20A_1.getComponents().isEmpty()); |
| org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component component = modelRoot20A_1.getComponents().get(0); |
| assertNotNull(component); |
| |
| assertFalse(component.getParameterExpressions().isEmpty()); |
| ParameterExpression parameterExpression = component.getParameterExpressions().get(0); |
| assertNotNull(parameterExpression); |
| assertFalse(parameterExpression.getMixed().isEmpty()); |
| Entry testEntry = parameterExpression.getMixed().get(0); |
| |
| assertEquals(InstanceModel20Package.Literals.PARAMETER_EXPRESSION__EXPRESSIONS, testEntry.getEStructuralFeature()); |
| |
| Resource resource = EcorePlatformUtil.getResource(testEntry); |
| assertEquals(hbResource20A_1, resource); |
| |
| // -------------------------------------------------------------------- |
| // Input is NULL |
| Entry nullEntry = null; |
| assertNull(EcorePlatformUtil.getResource(nullEntry)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#getResource(org.eclipse.emf.edit.provider.IWrapperItemProvider)} |
| */ |
| public void testGetResourceFromIWrapperItemProvider() throws Exception { |
| // IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| // assertNotNull(hbFile20_20A_1); |
| // assertTrue(hbFile20_20A_1.isAccessible()); |
| // |
| // Resource hbResource20_A_1 = refWks.editingDomain20.getResourceSet().getResource( |
| // URI.createPlatformResourceURI(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" |
| // + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| // assertNotNull(hbResource20_A_1); |
| // |
| // WrapperItemProvider wrapperItemProvider = new WrapperItemProvider(element, modelRoot, |
| // Package.eINSTANCE |
| // .get, 1, ((AdapterFactoryEditingDomain) |
| // WorkspaceEditingDomainUtil.getEditingDomain(hbFile20_20A_1)) |
| // .getAdapterFactory()); |
| // |
| // Resource resource = EcorePlatformUtil.getResource(wrapperItemProvider); |
| // assertNotNull(resource); |
| // assertEquals(hbResource20_A_1, resource); |
| // |
| // // -------------------------------------------------------------------- |
| // // Input is NULL |
| // WrapperItemProvider nullWrapperItemProvider = null; |
| // assertNull(EcorePlatformUtil.getResource(nullWrapperItemProvider)); |
| // // -------------------------------------------------------------------- |
| // // WrapperItemProvider of object in unloaded resource |
| // ModelLoadManager.INSTANCE.unloadFile(hbFile20_20A_1, true, new NullProgressMonitor()); |
| // waitForModelLoading(); |
| // assertNull(EcorePlatformUtil.getResource(wrapperItemProvider)); |
| |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveNewModelResource(org.eclipse.emf.transaction.TransactionalEditingDomain, IPath, String, EObject, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @throws InterruptedException |
| */ |
| public void testSaveNewModelResource_WithoutSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesIneditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| String newResourceName10 = "NewModel10.hummingbird"; |
| String newResourceName10_ = "NewModel10_.hummingbird"; |
| String newResourceName20 = "NewModel20.instancemodel"; |
| String newUml2ResourceName = "NewUml2.uml"; |
| String newUml2ResourceName_ = "NewUml2_.uml"; |
| String testResourcename10 = "test10.hummingbird"; |
| String testResourcename20 = "test20.instancemodel"; |
| IPath newResourcePath10_1 = refWks.hbProject10_A.getFullPath().append(newResourceName10); |
| IPath newResourcePath10_2 = refWks.hbProject10_A.getFullPath().append(newResourceName10_); |
| IPath newResourcePath10_3 = refWks.hbProject10_A.getFullPath().append(testResourcename10); |
| IPath newResourcePath20_1 = refWks.hbProject10_A.getFullPath().append(newResourceName20); |
| IPath newResourcePath20_2 = refWks.hbProject20_A.getFullPath().append(newResourceName20); |
| IPath newResourcePath20_3 = refWks.hbProject20_A.getFullPath().append(testResourcename20); |
| IPath newUml2ResourcePath_1 = refWks.hbProject10_A.getFullPath().append(newUml2ResourceName); |
| IPath newUml2ResourcePath_2 = refWks.hbProject20_A.getFullPath().append(newUml2ResourceName); |
| IPath newUml2ResourcePath_3 = refWks.hbProject20_A.getFullPath().append(newUml2ResourceName_); |
| |
| // Save resource |
| { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath10_1, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| URI newResourceURI = EcorePlatformUtil.createURI(newResourcePath10_1); |
| Resource savedResource = refWks.editingDomain10.getResourceSet().getResource(newResourceURI, false); |
| assertNotNull(savedResource); |
| assertEquals(1, savedResource.getContents().size()); |
| assertTrue(savedResource.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp = (Application) savedResource.getContents().get(0); |
| assertEquals(1, retrievedSavedApp.getComponents().size()); |
| assertEquals(1, retrievedSavedApp.getInterfaces().size()); |
| } |
| // ************************************************************************* |
| // Context: use ContentTypeId of Hummingbird20 to save hbResource10 to EditingDomain10 |
| { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath10_2, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createApplicationHB10(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| URI newResourceURI1 = EcorePlatformUtil.createURI(newResourcePath10_2); |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(newResourceURI1, false); |
| assertNotNull(savedResource1); |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| } |
| // ************************************************************************* |
| // Context: Overwrite existing resource by Resource10 saved with ContentTypeId of Hummingbird20 in |
| // EditingDomain10 |
| { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath10_1, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createApplicationHB10(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| URI newResourceURI = EcorePlatformUtil.createURI(newResourcePath10_1); |
| Resource savedResource = refWks.editingDomain10.getResourceSet().getResource(newResourceURI, false); |
| assertNotNull(savedResource); |
| assertEquals(1, savedResource.getContents().size()); |
| assertTrue(savedResource.getContents().get(0) instanceof Application); |
| |
| Application retrievedSavedApp2 = (Application) savedResource.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| } |
| // ************************************************************************* |
| // Context: save HB20 Resource to EditingDomain10 in hbProject10 |
| { |
| // Save resource |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath20_1, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createPlatform(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| // |
| URI newResourceURI = EcorePlatformUtil.createURI(newResourcePath20_1); |
| Resource savedResource = refWks.editingDomain10.getResourceSet().getResource(newResourceURI, false); |
| assertNull(savedResource); |
| savedResource = refWks.editingDomain20.getResourceSet().getResource(newResourceURI, false); |
| assertNull(savedResource); |
| savedResource = refWks.editingDomain20.getResourceSet().getResource(newResourceURI, true); |
| assertNotNull(savedResource); |
| resourcesInEditingDomain20++; |
| // |
| assertEquals(1, savedResource.getContents().size()); |
| assertTrue(savedResource.getContents().get(0) instanceof Platform); |
| Platform retrievedSavedPlatform1 = (Platform) savedResource.getContents().get(0); |
| assertEquals(1, retrievedSavedPlatform1.getComponentTypes().size()); |
| assertEquals(1, retrievedSavedPlatform1.getInterfaces().size()); |
| } |
| |
| // ************************************************************************* |
| // Context: save HB20 Resource to EditingDomain10 and in hbProject20 |
| { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath20_2, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createPlatform(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| resourcesInEditingDomain20++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| URI newResourceURI = EcorePlatformUtil.createURI(newResourcePath20_2); |
| Resource savedResource = refWks.editingDomain20.getResourceSet().getResource(newResourceURI, false); |
| assertNotNull(savedResource); |
| |
| assertEquals(1, savedResource.getContents().size()); |
| assertTrue(savedResource.getContents().get(0) instanceof Platform); |
| Platform retrievedSavedPlatform1 = (Platform) savedResource.getContents().get(0); |
| assertEquals(1, retrievedSavedPlatform1.getComponentTypes().size()); |
| assertEquals(1, retrievedSavedPlatform1.getInterfaces().size()); |
| } |
| // ----------------------------------------------------------------------- |
| // Context: Save uml2 resource in EditingDomain10 |
| |
| // Save new model resource |
| Model newModel = UMLFactory.eINSTANCE.createModel(); |
| newModel.setName("UML2Model"); |
| |
| Package newPack1 = UMLFactory.eINSTANCE.createPackage(); |
| newPack1.setName("Package1"); |
| newModel.getPackagedElements().add(newPack1); |
| |
| Package newPack2 = UMLFactory.eINSTANCE.createPackage(); |
| newPack2.setName("Package2"); |
| newModel.getPackagedElements().add(newPack2); |
| |
| { |
| // Save uml2Resource in EditingDomain21 |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newUml2ResourcePath_1, UMLPackage.eCONTENT_TYPE, newModel, true, |
| new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| resourcesIneditingDomainUml2++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| // Resource HB20 in hbProject10_A is unloaded |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Verified saved resource |
| Resource uml2Resource = refWks.editingDomainUml2.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newUml2ResourcePath_1.toString(), true), true); |
| assertNotNull(uml2Resource); |
| assertNotNull(uml2Resource.getContents()); |
| assertEquals(1, uml2Resource.getContents().size()); |
| Model savedModel = (Model) uml2Resource.getContents().get(0); |
| assertNotNull(savedModel); |
| |
| assertEquals(2, savedModel.getPackagedElements().size()); |
| assertEquals("Package1", savedModel.getPackagedElements().get(0).getName()); |
| assertEquals("Package2", savedModel.getPackagedElements().get(1).getName()); |
| } |
| // ************************************************************************* |
| // Context: Save uml2 resource in editingDomainUml |
| { |
| // FIXME create a new model resource |
| Model newModel_2 = UMLFactory.eINSTANCE.createModel(); |
| newModel_2.setName("UML2Model"); |
| |
| Package newPack1_2 = UMLFactory.eINSTANCE.createPackage(); |
| newPack1_2.setName("Package1"); |
| newModel_2.getPackagedElements().add(newPack1_2); |
| |
| Package newPack2_2 = UMLFactory.eINSTANCE.createPackage(); |
| newPack2_2.setName("Package2"); |
| newModel_2.getPackagedElements().add(newPack2_2); |
| |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomainUml2, newUml2ResourcePath_2, UMLPackage.eCONTENT_TYPE, newModel_2, true, |
| new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesIneditingDomainUml2++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Verify saved resources |
| Resource uml2Resource = refWks.editingDomainUml2.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newUml2ResourcePath_2.toString(), true), false); |
| assertNotNull(uml2Resource); |
| |
| // Verify second resource |
| assertNotNull(uml2Resource.getContents()); |
| assertEquals(1, uml2Resource.getContents().size()); |
| Model savedModel = (Model) uml2Resource.getContents().get(0); |
| assertNotNull(savedModel); |
| assertEquals(2, savedModel.getPackagedElements().size()); |
| assertEquals("Package1", savedModel.getPackagedElements().get(0).getName()); |
| assertEquals("Package2", savedModel.getPackagedElements().get(1).getName()); |
| } |
| // ************************************************************************* |
| // Context:ad hoc case |
| { |
| // Given EditingDomain is NULL |
| TransactionalEditingDomain nullEditingDomain = null; |
| EcorePlatformUtil.saveNewModelResource(nullEditingDomain, newResourcePath10_3, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| EcorePlatformUtil.saveNewModelResource(nullEditingDomain, newResourcePath20_3, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createPlatform(), true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| EcorePlatformUtil.saveNewModelResource(nullEditingDomain, newUml2ResourcePath_3, UMLPackage.eCONTENT_TYPE, newModel, true, |
| new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| } |
| { |
| // Given Path is NULL |
| IPath nullPath = null; |
| try { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, nullPath, Hummingbird10Package.eCONTENT_TYPE, createApplicationHB10(), |
| true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| } catch (Exception ex) { |
| if (!(ex instanceof AssertionFailedException)) { |
| fail("Exception when the given Path is Null: " + ex.getMessage()); |
| } |
| } |
| } |
| { |
| // Given contentTypeID is NULL or incorrect |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath10_3, null, createApplicationHB10(), true, |
| new NullProgressMonitor()); |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain20, newResourcePath20_3, null, createPlatform(), true, |
| new NullProgressMonitor()); |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomainUml2, newUml2ResourcePath_3, null, newModel, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| resourcesInEditingDomain20++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| resourcesIneditingDomainUml2++; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesIneditingDomainUml2); |
| } |
| { |
| // Given RootObject is NULL |
| EObject rootObject = null; |
| try { |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath10_3, Hummingbird10Package.eCONTENT_TYPE, rootObject, |
| true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| } catch (Exception ex) { |
| if (!(ex instanceof AssertionFailedException)) { |
| fail("Exception when the given Path is Null: " + ex.getMessage()); |
| } |
| } |
| } |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveNewModelResource(org.eclipse.emf.transaction.TransactionalEditingDomain, IPath, String, EObject, java.util.Map, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @see {@link this#testSaveNewModelResource_WithoutSaveOptions()} |
| * @throws InterruptedException |
| */ |
| public void testSaveNewModelResource_WithSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| String newResourceName = "NewModel.hummingbird"; |
| IPath newResourcePath = refWks.hbProject10_A.getFullPath().append(newResourceName); |
| // Save options |
| Map<Object, Object> options = new HashMap<Object, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| options.put(XMLResource.OPTION_SAVE_DOCTYPE, Boolean.TRUE); |
| |
| // Save new model resource |
| EcorePlatformUtil.saveNewModelResource(refWks.editingDomain10, newResourcePath, Hummingbird10Package.eCONTENT_TYPE, createApplicationHB10(), |
| options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEquals(resourcesInEditingDomain10 + 1, refWks.editingDomain10.getResourceSet().getResources().size()); |
| URI savedResourceURI = EcorePlatformUtil.createURI(newResourcePath); |
| Resource savedResource = refWks.editingDomain10.getResourceSet().getResource(savedResourceURI, false); |
| assertNotNull(savedResource); |
| assertEquals(1, savedResource.getContents().size()); |
| assertTrue(savedResource.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp = (Application) savedResource.getContents().get(0); |
| assertEquals(1, retrievedSavedApp.getComponents().size()); |
| assertEquals(1, retrievedSavedApp.getInterfaces().size()); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveNewModelResources(org.eclipse.emf.transaction.TransactionalEditingDomain, java.util.Collection, java.util.Map, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @see {@link this#testSaveNewModelResource_WithoutSaveOptions()} |
| * {@link this#testSaveNewModelResource_WithoutSaveOptions()} |
| * @throws InterruptedException |
| */ |
| |
| public void testSaveNewModelResources_WithSaveOptions() throws Exception { |
| assertNotNull(refWks.hbProject10_A); |
| assertNotNull(refWks.hbProject20_A); |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| |
| String newResourceName1 = "NewModel1.hummingbird"; |
| String newResourceName2 = "NewModel2.hummingbird"; |
| String newResourceName3 = "NewModel3.hummingbird"; |
| String newResourceName4 = "NewModel4.hummingbird"; |
| String newResourceName5 = "NewModel5.hummingbird"; |
| IPath newResourcePath10_1 = refWks.hbProject10_A.getFullPath().append(newResourceName1); |
| IPath newResourcePath10_2 = refWks.hbProject10_A.getFullPath().append(newResourceName2); |
| IPath newResourcePath10_3 = refWks.hbProject10_A.getFullPath().append(newResourceName3); |
| IPath newResourcePath10_4 = refWks.hbProject10_A.getFullPath().append(newResourceName4); |
| IPath newResourcePath10_5 = refWks.hbProject10_A.getFullPath().append(newResourceName5); |
| IPath newResourcePath20_1 = refWks.hbProject20_A.getFullPath().append(newResourceName3); |
| |
| Collection<ModelResourceDescriptor> modelResourceDescriptors10 = new ArrayList<ModelResourceDescriptor>(); |
| Collection<ModelResourceDescriptor> modelResourceDescriptors_mix = new ArrayList<ModelResourceDescriptor>(); |
| Map<Object, Object> options = new HashMap<Object, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| options.put(XMLResource.OPTION_SAVE_DOCTYPE, Boolean.TRUE); |
| |
| ModelResourceDescriptor modelDesc1 = new ModelResourceDescriptor(newResourcePath10_1, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc2 = new ModelResourceDescriptor(newResourcePath10_2, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc3 = new ModelResourceDescriptor(newResourcePath10_3, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc4 = new ModelResourceDescriptor(newResourcePath10_4, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc5 = new ModelResourceDescriptor(newResourcePath10_5, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc6 = new ModelResourceDescriptor(newResourcePath20_1, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createPlatform()); |
| |
| { |
| // Save resources with its corresponding editingDomain |
| modelResourceDescriptors10.add(modelDesc1); |
| modelResourceDescriptors10.add(modelDesc2); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain10, modelResourceDescriptors10, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10 += 2; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_1.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_2.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| |
| } |
| // ********************************************************************* |
| { |
| // Save resource with inappropriate EditingDomain |
| modelResourceDescriptors10.clear(); |
| modelResourceDescriptors10.add(modelDesc3); |
| modelResourceDescriptors10.add(modelDesc4); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain20, modelResourceDescriptors10, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20 + 2); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| resourcesInEditingDomain10 += 2; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_3.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_4.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| |
| } |
| // ******************************************************************************* |
| |
| { |
| // Context save ModelDescriptor Hb10 and HB20 at once |
| modelResourceDescriptors_mix.add(modelDesc5); |
| modelResourceDescriptors_mix.add(modelDesc6); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain10, modelResourceDescriptors_mix, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10 + 2); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10 + 1); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20 + 1); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_5.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain20.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath20_1.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp.getComponents().size()); |
| assertEquals(1, retrievedSavedApp.getInterfaces().size()); |
| |
| assertTrue(savedResource2.getContents().get(0) instanceof Platform); |
| Platform retrievedSavedPlatform = (Platform) savedResource2.getContents().get(0); |
| |
| assertEquals(1, retrievedSavedPlatform.getComponentTypes().size()); |
| assertEquals(1, retrievedSavedPlatform.getInterfaces().size()); |
| |
| } |
| |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveNewModelResources(org.eclipse.emf.transaction.TransactionalEditingDomain, java.util.Collection, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @see {@link this#testSaveNewModelResource_WithoutSaveOptions()} |
| * @throws InterruptedException |
| */ |
| public void testSaveNewModelResources_WithoutSaveOptions() throws Exception { |
| assertNotNull(refWks.hbProject10_A); |
| assertNotNull(refWks.hbProject20_A); |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| |
| String newResourceName1 = "NewModel1.hummingbird"; |
| String newResourceName2 = "NewModel2.hummingbird"; |
| String newResourceName3 = "NewModel3.hummingbird"; |
| String newResourceName4 = "NewModel4.hummingbird"; |
| String newResourceName5 = "NewModel5.hummingbird"; |
| IPath newResourcePath10_1 = refWks.hbProject10_A.getFullPath().append(newResourceName1); |
| IPath newResourcePath10_2 = refWks.hbProject10_A.getFullPath().append(newResourceName2); |
| IPath newResourcePath10_3 = refWks.hbProject10_A.getFullPath().append(newResourceName3); |
| IPath newResourcePath10_4 = refWks.hbProject10_A.getFullPath().append(newResourceName4); |
| IPath newResourcePath10_5 = refWks.hbProject10_A.getFullPath().append(newResourceName5); |
| IPath newResourcePath20_1 = refWks.hbProject20_A.getFullPath().append(newResourceName3); |
| |
| Collection<ModelResourceDescriptor> modelResourceDescriptors10 = new ArrayList<ModelResourceDescriptor>(); |
| Collection<ModelResourceDescriptor> modelResourceDescriptors_mix = new ArrayList<ModelResourceDescriptor>(); |
| |
| ModelResourceDescriptor modelDesc1 = new ModelResourceDescriptor(newResourcePath10_1, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc2 = new ModelResourceDescriptor(newResourcePath10_2, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc3 = new ModelResourceDescriptor(newResourcePath10_3, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc4 = new ModelResourceDescriptor(newResourcePath10_4, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc5 = new ModelResourceDescriptor(newResourcePath10_5, Hummingbird10Package.eCONTENT_TYPE, |
| createApplicationHB10()); |
| ModelResourceDescriptor modelDesc6 = new ModelResourceDescriptor(newResourcePath20_1, |
| Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), createPlatform()); |
| |
| { |
| // Save resources with its corresponding editingDomain |
| modelResourceDescriptors10.add(modelDesc1); |
| modelResourceDescriptors10.add(modelDesc2); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain10, modelResourceDescriptors10, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| resourcesInEditingDomain10 += 2; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_1.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_2.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| |
| } |
| // ==================================================================== |
| { |
| // Save resource with inappropriate EditingDomain |
| modelResourceDescriptors10.clear(); |
| modelResourceDescriptors10.add(modelDesc3); |
| modelResourceDescriptors10.add(modelDesc4); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain20, modelResourceDescriptors10, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20 + 2); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| resourcesInEditingDomain10 += 2; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_3.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_4.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| } |
| // ==================================================================== |
| { |
| // Context save ModelDescriptor HB10 and Hb20 at once |
| modelResourceDescriptors_mix.add(modelDesc5); |
| modelResourceDescriptors_mix.add(modelDesc6); |
| |
| EcorePlatformUtil.saveNewModelResources(refWks.editingDomain10, modelResourceDescriptors_mix, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10 + 2); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10 + 1); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20 + 1); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath10_5.toString(), true), false); |
| Resource savedResource2 = refWks.editingDomain20.getResourceSet() |
| .getResource(URI.createPlatformResourceURI(newResourcePath20_1.toString(), true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Platform); |
| Platform retrievedSavedPlatform = (Platform) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedPlatform.getComponentTypes().size()); |
| assertEquals(1, retrievedSavedPlatform.getInterfaces().size()); |
| } |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveModel(Object, Map, boolean, org.eclipse.core.runtime.IProgressMonitor)} with |
| * contextObject is EObject |
| * |
| * @throws InterruptedException |
| */ |
| public void testSaveModel_Object_EObject_WithSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName = "newComponent"; |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| int numberOfComponentInFirstResource = testApplicationHB10_1.getComponents().size(); |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Add one more element to first resource |
| Component newComponent = Hummingbird10Factory.eINSTANCE.createComponent(); |
| newComponent.setName(newComponentName); |
| testApplicationHB10_1.getComponents().add(newComponent); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| assertEquals(numberOfComponentInFirstResource + 1, testApplicationHB10_1.getComponents().size()); |
| |
| // Save Model with SaveOptions |
| Map<Object, Object> options = new HashMap<Object, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| options.put(XMLResource.OPTION_SAVE_DOCTYPE, Boolean.TRUE); |
| |
| EcorePlatformUtil.saveModel(testApplicationHB10_1, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(2, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource to save was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource to save was not saved", newComponentName, retrievedSavedApp1.getComponents().get(1).getName()); |
| assertEquals("First resource to save was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource in the same model was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource in the same model was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| public void testSaveModel_Object_EObject_WithoutSaveOptions() throws Exception { |
| |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName = "newComponent"; |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| int numberOfComponentInFirstResource = testApplicationHB10_1.getComponents().size(); |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Add one more element to first resource |
| Component newComponent = Hummingbird10Factory.eINSTANCE.createComponent(); |
| newComponent.setName(newComponentName); |
| testApplicationHB10_1.getComponents().add(newComponent); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| assertEquals(numberOfComponentInFirstResource + 1, testApplicationHB10_1.getComponents().size()); |
| |
| EcorePlatformUtil.saveModel(testApplicationHB10_1, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(2, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource to save was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource to save was not saved", newComponentName, retrievedSavedApp1.getComponents().get(1).getName()); |
| assertEquals("First resource to save was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource in the same model was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource in the same model was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveModel(Object, java.util.Map, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * with contextObject is IProject |
| * |
| * @throws InterruptedException |
| * @throws OperationCanceledException |
| */ |
| public void testSaveModel_Object_IProject_WithSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| // Save project with SaveOptions |
| |
| Map<Object, Object> options = new HashMap<Object, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| options.put(XMLResource.OPTION_SAVE_DOCTYPE, Boolean.TRUE); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| EcorePlatformUtil.saveModel(refWks.hbProject10_A, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#saveModel(Object, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @throws InterruptedException |
| */ |
| public void testSaveModel_Object_IProject_WithoutSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| |
| EcorePlatformUtil.saveModel(refWks.hbProject10_A, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveProject(org.eclipse.core.resources.IProject, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| * |
| * @throws InterruptedException |
| */ |
| public void testSaveProject_WithoutSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| |
| EcorePlatformUtil.saveProject(refWks.hbProject10_A, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#saveProject(org.eclipse.core.resources.IProject, java.util.Map, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| */ |
| public void testSaveProject_WithSaveOptions() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| // First resource |
| assertFalse(hbResource10_1.getContents().isEmpty()); |
| assertTrue(hbResource10_1.getContents().get(0) instanceof Application); |
| final Application testApplicationHB10_1 = (Application) hbResource10_1.getContents().get(0); |
| assertEquals(1, testApplicationHB10_1.getComponents().size()); |
| assertEquals(1, testApplicationHB10_1.getInterfaces().size()); |
| final Component testComponent1 = testApplicationHB10_1.getComponents().get(0); |
| final Interface testInterface1 = testApplicationHB10_1.getInterfaces().get(0); |
| |
| assertFalse(hbResource10_2.getContents().isEmpty()); |
| assertTrue(hbResource10_2.getContents().get(0) instanceof Application); |
| Application testApplicationHB10_2 = (Application) hbResource10_2.getContents().get(0); |
| assertEquals(1, testApplicationHB10_2.getComponents().size()); |
| assertEquals(1, testApplicationHB10_2.getInterfaces().size()); |
| final Component testComponent2 = testApplicationHB10_2.getComponents().get(0); |
| final Interface testInterface2 = testApplicationHB10_2.getInterfaces().get(0); |
| |
| final String newComponentName1 = "newComponentName1"; |
| final String newComponentName2 = "newComponentName2"; |
| |
| final String newInterfaceName1 = "newInterface1"; |
| final String newInterfaceName2 = "newInterface2"; |
| |
| // Modify resource |
| try { |
| WorkspaceTransactionUtil.executeInWriteTransaction(refWks.editingDomain10, new Runnable() { |
| @Override |
| public void run() { |
| // Rename objects in first resource |
| testComponent1.setName(newComponentName1); |
| testInterface1.setName(newInterfaceName1); |
| // Modify second resource |
| testComponent2.setName(newComponentName2); |
| testInterface2.setName(newInterfaceName2); |
| |
| } |
| }, "Modify model"); |
| } catch (Exception e) { |
| fail(e.getLocalizedMessage()); |
| } |
| |
| assertEquals(newComponentName1, testComponent1.getName()); |
| assertEquals(newComponentName2, testComponent2.getName()); |
| assertEquals(newInterfaceName1, testInterface1.getName()); |
| assertEquals(newInterfaceName2, testInterface2.getName()); |
| // Save project with SaveOptions |
| |
| Map<Object, Object> options = new HashMap<Object, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| options.put(XMLResource.OPTION_SAVE_DOCTYPE, Boolean.TRUE); |
| // TODO if save with DocTypeInfo, these resource will be removed from the EditingDomain. Have not found the |
| // reason yet! |
| // ((XMLResource) hbResource10_1).setDoctypeInfo("SPHINX GROUP", "SPHINX"); |
| // ((XMLResource) hbResource10_2).setDoctypeInfo("SPHINX GROUP", "SPHINX"); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| EcorePlatformUtil.saveProject(refWks.hbProject10_A, options, true, new NullProgressMonitor()); |
| waitForModelSaving(); |
| |
| // Reload project |
| ModelLoadManager.INSTANCE.reloadProject(refWks.hbProject10_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| // Verify the saved resource |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| |
| Resource savedResource1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource savedResource2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| assertNotNull(savedResource1); |
| assertNotNull(savedResource2); |
| |
| // Verify the modification was saved in the first resource |
| assertEquals(1, savedResource1.getContents().size()); |
| assertTrue(savedResource1.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp1 = (Application) savedResource1.getContents().get(0); |
| assertEquals(1, retrievedSavedApp1.getComponents().size()); |
| assertEquals(1, retrievedSavedApp1.getInterfaces().size()); |
| assertEquals("First resource was not saved", newComponentName1, retrievedSavedApp1.getComponents().get(0).getName()); |
| assertEquals("First resource was not saved", newInterfaceName1, retrievedSavedApp1.getInterfaces().get(0).getName()); |
| |
| // Verify the modification was not saved in the second resource |
| assertEquals(1, savedResource2.getContents().size()); |
| assertTrue(savedResource2.getContents().get(0) instanceof Application); |
| Application retrievedSavedApp2 = (Application) savedResource2.getContents().get(0); |
| assertEquals(1, retrievedSavedApp2.getComponents().size()); |
| assertEquals(1, retrievedSavedApp2.getInterfaces().size()); |
| assertEquals("Second resource was not saved", newComponentName2, retrievedSavedApp2.getComponents().get(0).getName()); |
| assertEquals("Second resource was not saved", newInterfaceName2, retrievedSavedApp2.getInterfaces().get(0).getName()); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#unloadFile(IFile)} |
| * |
| * @throws Exception |
| * @throws OperationCanceledException |
| */ |
| public void testUnloadResource_File() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // Hummingbird10 files |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| // Hummingbird20 files |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| |
| Collection<IFile> unloadedResources3x = new ArrayList<IFile>(); |
| unloadedResources3x.add(hbFile20_1); |
| unloadedResources3x.add(hbFile20_2); |
| unloadedResources3x.add(hbFile20_4); |
| unloadedResources3x.add(hbFile20_5); |
| |
| // Uml File |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| // Unload Null File |
| IFile nullFile = null; |
| EcorePlatformUtil.unloadFile(nullFile); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // Unload Hummingbird20 File |
| EcorePlatformUtil.unloadFile(hbFile20_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile20_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile20_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile20_4); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile20_5); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile20_6); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Hummingbird10 File |
| EcorePlatformUtil.unloadFile(hbFile10_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile10_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(hbFile10_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Uml2File |
| EcorePlatformUtil.unloadFile(uml2File_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(uml2File_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(uml2File_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#unloadFile(org.eclipse.emf.transaction.TransactionalEditingDomain, IFile)} |
| */ |
| public void testUnloadResource_File_WithEditingDomain() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| TransactionalEditingDomain nullEditingDomain = null; |
| IFile nullFile = null; |
| // Unload with NullEditing Domain |
| EcorePlatformUtil.unloadFile(nullEditingDomain, hbFile10_1); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload with Null File |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, nullFile); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload with NullEditingDomain and NUlL file |
| |
| EcorePlatformUtil.unloadFile(nullEditingDomain, nullFile); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Files HB10 |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, hbFile10_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, hbFile10_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, hbFile10_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // ================================================= |
| // File HB20 |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| // Unload ResourceHB20 with EditingDomain10 |
| EcorePlatformUtil.unloadFile(refWks.editingDomain10, hbFile20_1); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload ResourceHB20 with EditingDomain20 |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_4); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_5); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, hbFile20_6); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // ============================================= |
| // Uml File |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| // Unload uml2Resource with EditingDomain20 |
| EcorePlatformUtil.unloadFile(refWks.editingDomain20, uml2File_1); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Uml2Resource with EditingDomainUml2 |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, uml2File_1); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, uml2File_2); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| EcorePlatformUtil.unloadFile(refWks.editingDomainUml2, uml2File_3); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2--; |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#unloadFiles(org.eclipse.emf.transaction.TransactionalEditingDomain, java.util.Collection, boolean, org.eclipse.core.runtime.IProgressMonitor)} |
| */ |
| public void testUnloadFiles_with_memoryOptimized() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // File HB10 |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| Collection<IFile> unloadedResources10 = new ArrayList<IFile>(); |
| unloadedResources10.add(hbFile10_1); |
| unloadedResources10.add(hbFile10_2); |
| // Verify tested resource are loaded |
| Resource resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot10_1); |
| assertFalse(modelRoot10_1.eIsProxy()); |
| assertTrue(modelRoot10_1.eContents().size() > 0); |
| |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_2 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot10_2); |
| assertFalse(modelRoot10_2.eIsProxy()); |
| assertTrue(modelRoot10_2.eContents().size() > 0); |
| // Unload Files HB10 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain10, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10 = resourcesInEditingDomain10 - unloadedResources10.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify that unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_1)); |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_2)); |
| assertTrue(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_3)); |
| |
| assertNotNull(modelRoot10_1); |
| assertTrue(modelRoot10_1.eIsProxy()); |
| |
| assertNotNull(modelRoot10_2); |
| assertTrue(modelRoot10_2.eIsProxy()); |
| |
| // =================================================== |
| // File HB20 |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| Collection<IFile> unloadedResources20 = new ArrayList<IFile>(); |
| unloadedResources20.add(hbFile20_1); |
| unloadedResources20.add(hbFile20_2); |
| unloadedResources20.add(hbFile20_4); |
| unloadedResources20.add(hbFile20_5); |
| // Verify tested resources are loaded |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_1); |
| assertFalse(modelRoot20_1.eIsProxy()); |
| assertTrue(modelRoot20_1.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_2 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_2); |
| assertFalse(modelRoot20_2.eIsProxy()); |
| assertTrue(modelRoot20_2.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_4.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_4 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_4); |
| assertFalse(modelRoot20_4.eIsProxy()); |
| assertTrue(modelRoot20_4.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_5.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_5 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_5); |
| assertFalse(modelRoot20_5.eIsProxy()); |
| assertTrue(modelRoot20_5.eContents().size() > 0); |
| // Unload Resource20 with EditingDomain10 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain10, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Resource20 with EditingDomain20 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20 = resourcesInEditingDomain20 - unloadedResources20.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_1)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_2)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_4)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_5)); |
| |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_3)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_6)); |
| |
| assertNotNull(modelRoot20_1); |
| assertTrue(modelRoot20_1.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_1).eProxyURI().isEmpty()); |
| assertEquals(3, modelRoot20_1.eContents().size()); |
| |
| assertNotNull(modelRoot20_2); |
| assertTrue(modelRoot20_2.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_2).eProxyURI().isEmpty()); |
| assertEquals(5, modelRoot20_2.eContents().size()); |
| |
| assertNotNull(modelRoot20_4); |
| assertTrue(modelRoot20_4.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_4).eProxyURI().isEmpty()); |
| assertEquals(2, modelRoot20_4.eContents().size()); |
| |
| assertNotNull(modelRoot20_5); |
| assertTrue(modelRoot20_5.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_5).eProxyURI().isEmpty()); |
| assertEquals(5, modelRoot20_5.eContents().size()); |
| |
| // =============================================== |
| // Uml File |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| Resource uml2Resource_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource uml2Resource_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource uml2Resource_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| ExtendedResource extendedUml2Resource_1 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_1); |
| ExtendedResource extendedUml2Resource_2 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_2); |
| ExtendedResource extendedUml2Resource_3 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_3); |
| assertTrue(extendedUml2Resource_1 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_2 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_3 instanceof ExtendedResourceAdapter); |
| Collection<IFile> unloadedUml2Resources = new ArrayList<IFile>(); |
| // Unload empty resource |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| unloadedUml2Resources.add(uml2File_1); |
| // Verify tested resource were loaded |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRootUml2_1); |
| assertFalse(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| // Unload uml2Resource with EditingDomain20 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload ResourceUml2 with EditingDomainUml2 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomainUml2, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2 = resourcesInEditingDomainUml2 - unloadedUml2Resources.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resources were removed from ResourceSet and not proxified |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_1)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_2)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_3)); |
| // Uml resource should be proxifed |
| assertNotNull(modelRootUml2_1); |
| assertTrue(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| } |
| |
| public void testUnloadFiles_without_memoryOptimized() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| // File HB10 |
| IFile hbFile10_1 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1); |
| IFile hbFile10_2 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2); |
| IFile hbFile10_3 = refWks.hbProject10_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3); |
| |
| assertNotNull(hbFile10_1); |
| assertNotNull(hbFile10_2); |
| assertNotNull(hbFile10_3); |
| assertTrue(hbFile10_1.exists()); |
| assertTrue(hbFile10_2.exists()); |
| assertTrue(hbFile10_3.exists()); |
| |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| Collection<IFile> unloadedResources10 = new ArrayList<IFile>(); |
| unloadedResources10.add(hbFile10_1); |
| unloadedResources10.add(hbFile10_2); |
| |
| // Verify tested resources are loaded |
| Resource resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot10_1); |
| assertFalse(modelRoot10_1.eIsProxy()); |
| assertTrue(modelRoot10_1.eContents().size() > 0); |
| |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_2 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot10_2); |
| assertFalse(modelRoot10_2.eIsProxy()); |
| assertTrue(modelRoot10_2.eContents().size() > 0); |
| |
| // Unload Files HB10 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain10, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10 = resourcesInEditingDomain10 - unloadedResources10.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify that unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_1)); |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_2)); |
| assertTrue(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_3)); |
| |
| assertNotNull(modelRoot10_1); |
| assertTrue(modelRoot10_1.eIsProxy()); |
| assertTrue(modelRoot10_1.eContents().size() > 0); |
| |
| assertNotNull(modelRoot10_2); |
| assertTrue(modelRoot10_2.eIsProxy()); |
| assertTrue(modelRoot10_2.eContents().size() > 0); |
| // ================================================ |
| // File HB20 |
| IFile hbFile20_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile hbFile20_2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile hbFile20_3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| IFile hbFile20_4 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile hbFile20_5 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile hbFile20_6 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(hbFile20_1); |
| assertNotNull(hbFile20_2); |
| assertNotNull(hbFile20_3); |
| assertNotNull(hbFile20_4); |
| assertNotNull(hbFile20_5); |
| assertNotNull(hbFile20_6); |
| assertTrue(hbFile20_1.exists()); |
| assertTrue(hbFile20_2.exists()); |
| assertTrue(hbFile20_3.exists()); |
| assertTrue(hbFile20_4.exists()); |
| assertTrue(hbFile20_5.exists()); |
| assertTrue(hbFile20_6.exists()); |
| |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| Collection<IFile> unloadedResources20 = new ArrayList<IFile>(); |
| unloadedResources20.add(hbFile20_1); |
| unloadedResources20.add(hbFile20_2); |
| unloadedResources20.add(hbFile20_4); |
| unloadedResources20.add(hbFile20_5); |
| |
| // Verify tested resources are loaded |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_1); |
| assertFalse(modelRoot20_1.eIsProxy()); |
| assertTrue(modelRoot20_1.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_2 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_2); |
| assertFalse(modelRoot20_2.eIsProxy()); |
| assertTrue(modelRoot20_2.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_4.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_4 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_4); |
| assertFalse(modelRoot20_4.eIsProxy()); |
| assertTrue(modelRoot20_4.eContents().size() > 0); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_5.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_5 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_5); |
| assertFalse(modelRoot20_5.eIsProxy()); |
| assertTrue(modelRoot20_5.eContents().size() > 0); |
| |
| // Unload Resource20 with EditingDomain10 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain10, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload Resource20 with EditingDomain20 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20 = resourcesInEditingDomain20 - unloadedResources20.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_1)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_2)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_4)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_5)); |
| |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_3)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_6)); |
| |
| assertNotNull(modelRoot20_1); |
| assertTrue(modelRoot20_1.eIsProxy()); |
| assertTrue(modelRoot20_1.eContents().size() > 0); |
| |
| assertNotNull(modelRoot20_2); |
| assertTrue(modelRoot20_2.eIsProxy()); |
| assertTrue(modelRoot20_2.eContents().size() > 0); |
| |
| assertNotNull(modelRoot20_4); |
| assertTrue(modelRoot20_4.eIsProxy()); |
| assertTrue(modelRoot20_4.eContents().size() > 0); |
| |
| assertNotNull(modelRoot20_5); |
| assertTrue(modelRoot20_5.eIsProxy()); |
| assertTrue(modelRoot20_5.eContents().size() > 0); |
| // ===================================================== |
| // Uml File |
| IFile uml2File_1 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1); |
| IFile uml2File_2 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2); |
| IFile uml2File_3 = refWks.hbProject20_D.getFile(DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3); |
| |
| assertNotNull(uml2File_1); |
| assertNotNull(uml2File_2); |
| assertNotNull(uml2File_3); |
| assertTrue(uml2File_1.exists()); |
| assertTrue(uml2File_2.exists()); |
| assertTrue(uml2File_3.exists()); |
| |
| Resource uml2Resource_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource uml2Resource_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource uml2Resource_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| ExtendedResource extendedUml2Resource_1 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_1); |
| ExtendedResource extendedUml2Resource_2 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_2); |
| ExtendedResource extendedUml2Resource_3 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_3); |
| assertTrue(extendedUml2Resource_1 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_2 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_3 instanceof ExtendedResourceAdapter); |
| |
| Collection<IFile> unloadedUml2Resources = new ArrayList<IFile>(); |
| // Unload empty resource |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| unloadedUml2Resources.add(uml2File_1); |
| // Verify tested resource were loaded |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRootUml2_1); |
| assertFalse(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| // Unload uml2Resource with EditingDomain20 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload ResourceUml2 with EditingDomainUml2 |
| EcorePlatformUtil.unloadFiles(refWks.editingDomainUml2, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2 = resourcesInEditingDomainUml2 - unloadedUml2Resources.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_1)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_2)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_3)); |
| |
| assertNotNull(modelRootUml2_1); |
| assertTrue(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#unloadResources(org.eclipse.emf.transaction.TransactionalEditingDomain, java.util.Collection)} |
| */ |
| public void testUnloadResources_without_memoryOptimized() throws Exception { |
| |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // Unload AllResource of EditingDomain20 |
| Collection<Resource> unloadedResources20 = new ArrayList<Resource>(); |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| unloadedResources20.add(hbResource20_1); |
| unloadedResources20.add(hbResource20_4); |
| unloadedResources20.add(hbResource20_5); |
| // Verify tested resources are loaded |
| Resource resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_1); |
| assertFalse(modelRoot20_1.eIsProxy()); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_4.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_4 = resource.getContents().get(0); |
| assertNotNull(modelRoot20_4); |
| assertFalse(modelRoot20_4.eIsProxy()); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_5.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_5 = resource.getContents().get(0); |
| assertNotNull(modelRoot20_5); |
| assertFalse(modelRoot20_5.eIsProxy()); |
| |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20 = resourcesInEditingDomain20 - unloadedResources20.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // Verify unloaded resource are removed from the resource set and proxified |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_1)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_4)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_5)); |
| |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_2)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_3)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_6)); |
| |
| assertNotNull(modelRoot20_1); |
| assertTrue(modelRoot20_1.eIsProxy()); |
| assertTrue(modelRoot20_1.eContents().size() > 0); |
| |
| assertNotNull(modelRoot20_4); |
| assertTrue(modelRoot20_4.eIsProxy()); |
| assertTrue(modelRoot20_4.eContents().size() > 0); |
| |
| assertNotNull(modelRoot20_5); |
| assertTrue(modelRoot20_5.eIsProxy()); |
| assertTrue(modelRoot20_5.eContents().size() > 0); |
| |
| // Unload AllResource of EditingDomain10 |
| Collection<Resource> unloadedResources10 = new ArrayList<Resource>(); |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| unloadedResources10.add(hbResource10_1); |
| unloadedResources10.add(hbResource10_2); |
| // Verify tested resource were loaded |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_1 = resource.getContents().get(0); |
| assertNotNull(modelRoot10_1); |
| assertFalse(modelRoot10_1.eIsProxy()); |
| |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_2 = resource.getContents().get(0); |
| assertNotNull(modelRoot10_2); |
| assertFalse(modelRoot10_2.eIsProxy()); |
| |
| // UnloadResources10 with EditingDomain20 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // UnloadResourc10 with EditingDomain10 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain10, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10 = resourcesInEditingDomain10 - unloadedResources10.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // Verify unloaded resource were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_1)); |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_1)); |
| assertTrue(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_3)); |
| |
| assertNotNull(modelRoot10_1); |
| assertTrue(modelRoot10_1.eIsProxy()); |
| assertTrue(modelRoot10_1.eContents().size() > 0); |
| |
| assertNotNull(modelRoot10_2); |
| assertTrue(modelRoot10_2.eIsProxy()); |
| assertTrue(modelRoot10_2.eContents().size() > 0); |
| |
| // Unload AllResource of uml2EditingDomain |
| Collection<Resource> unloadedUml2Resources = new ArrayList<Resource>(); |
| Resource uml2Resource_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource uml2Resource_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource uml2Resource_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| ExtendedResource extendedUml2Resource_1 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_1); |
| ExtendedResource extendedUml2Resource_2 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_2); |
| ExtendedResource extendedUml2Resource_3 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_3); |
| assertTrue(extendedUml2Resource_1 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_2 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_3 instanceof ExtendedResourceAdapter); |
| |
| unloadedUml2Resources.add(uml2Resource_1); |
| unloadedUml2Resources.add(uml2Resource_2); |
| |
| // Verify tested resource were loaded |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_1 = resource.getContents().get(0); |
| assertNotNull(modelRootUml2_1); |
| assertFalse(modelRootUml2_1.eIsProxy()); |
| |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_2 = resource.getContents().get(0); |
| assertNotNull(modelRootUml2_2); |
| assertFalse(modelRootUml2_2.eIsProxy()); |
| |
| // Unload uml2Resource with EditingDomain20 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload uml2Resource with uml2EditingDomain |
| EcorePlatformUtil.unloadResources(refWks.editingDomainUml2, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2 = resourcesInEditingDomainUml2 - unloadedUml2Resources.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resource were removed from the ResourceSet and proxified |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_1)); |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_2)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_3)); |
| |
| assertNotNull(modelRootUml2_1); |
| assertTrue(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| |
| assertNotNull(modelRootUml2_2); |
| assertTrue(modelRootUml2_2.eIsProxy()); |
| assertTrue(modelRootUml2_2.eContents().size() > 0); |
| } |
| |
| public void testUnloadResources_with_memoryOptimized() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // Unload AllResource of EditingDomain20 |
| Collection<Resource> unloadedResources20 = new ArrayList<Resource>(); |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| unloadedResources20.add(hbResource20_1); |
| unloadedResources20.add(hbResource20_4); |
| unloadedResources20.add(hbResource20_5); |
| |
| // Verify tested resources are loaded |
| Resource resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_1); |
| assertFalse(modelRoot20_1.eIsProxy()); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_4.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_4 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_4); |
| assertFalse(modelRoot20_4.eIsProxy()); |
| |
| resource = refWks.editingDomain20.getResourceSet().getResource(hbResource20_5.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot20_5 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot20_5); |
| assertFalse(modelRoot20_5.eIsProxy()); |
| |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedResources20, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain20 = resourcesInEditingDomain20 - unloadedResources20.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded Resource were removed from the ResourceSet and memory also |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_1)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_4)); |
| assertFalse(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_5)); |
| |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_2)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_3)); |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().contains(hbResource20_6)); |
| |
| assertNotNull(modelRoot20_1); |
| assertTrue(modelRoot20_1.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_1).eProxyURI().isEmpty()); |
| assertEquals(3, modelRoot20_1.eContents().size()); |
| |
| assertNotNull(modelRoot20_4); |
| assertTrue(modelRoot20_4.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_4).eProxyURI().isEmpty()); |
| assertEquals(2, modelRoot20_4.eContents().size()); |
| |
| assertNotNull(modelRoot20_5); |
| assertTrue(modelRoot20_5.eIsProxy()); |
| assertTrue(((InternalEObject) modelRoot20_5).eProxyURI().isEmpty()); |
| assertEquals(5, modelRoot20_5.eContents().size()); |
| |
| // Unload AllResource of EditingDomain21 |
| Collection<Resource> unloadedResources10 = new ArrayList<Resource>(); |
| Resource hbResource10_1 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_1, true), false); |
| Resource hbResource10_2 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_2, true), false); |
| Resource hbResource10_3 = refWks.editingDomain10.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_10_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_10_10A_3, true), false); |
| assertNotNull(hbResource10_1); |
| assertNotNull(hbResource10_2); |
| assertNotNull(hbResource10_3); |
| |
| unloadedResources10.add(hbResource10_1); |
| unloadedResources10.add(hbResource10_2); |
| |
| // Verify tested resource are loaded |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_1 = resource.getContents().get(0); |
| |
| assertNotNull(modelRoot10_1); |
| assertFalse(modelRoot10_1.eIsProxy()); |
| assertTrue(modelRoot10_1.eContents().size() > 0); |
| |
| resource = refWks.editingDomain10.getResourceSet().getResource(hbResource10_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRoot10_2 = resource.getContents().get(0); |
| assertNotNull(modelRoot10_2); |
| assertFalse(modelRoot10_2.eIsProxy()); |
| assertTrue(modelRoot10_2.eContents().size() > 0); |
| |
| // UnloadResources10 with EditingDomain20 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // UnloadResource10 with EditingDomain10 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain10, unloadedResources10, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomain10 = resourcesInEditingDomain10 - unloadedResources10.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify that unloaded resources were removed from ResourceSet and proxified |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_1)); |
| assertFalse(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_2)); |
| assertTrue(refWks.editingDomain10.getResourceSet().getResources().contains(hbResource10_3)); |
| |
| assertNotNull(modelRoot10_1); |
| assertTrue(modelRoot10_1.eIsProxy()); |
| |
| assertNotNull(modelRoot10_2); |
| assertTrue(modelRoot10_2.eIsProxy()); |
| |
| // Unload AllResource of uml2EditingDomain |
| Collection<Resource> unloadedUml2Resources = new ArrayList<Resource>(); |
| Resource uml2Resource_1 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_1, true), false); |
| Resource uml2Resource_2 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_2, true), false); |
| Resource uml2Resource_3 = refWks.editingDomainUml2.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.UML2_FILE_NAME_20D_3, true), false); |
| assertNotNull(uml2Resource_1); |
| assertNotNull(uml2Resource_2); |
| assertNotNull(uml2Resource_3); |
| ExtendedResource extendedUml2Resource_1 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_1); |
| ExtendedResource extendedUml2Resource_2 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_2); |
| ExtendedResource extendedUml2Resource_3 = ExtendedResourceAdapterFactory.INSTANCE.adapt(uml2Resource_3); |
| assertTrue(extendedUml2Resource_1 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_2 instanceof ExtendedResourceAdapter); |
| assertTrue(extendedUml2Resource_3 instanceof ExtendedResourceAdapter); |
| |
| unloadedUml2Resources.add(uml2Resource_1); |
| unloadedUml2Resources.add(uml2Resource_2); |
| // Verify tested resource were loaded |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_1.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_1 = resource.getContents().get(0); |
| assertNotNull(modelRootUml2_1); |
| assertFalse(modelRootUml2_1.eIsProxy()); |
| |
| resource = refWks.editingDomainUml2.getResourceSet().getResource(uml2Resource_2.getURI(), false); |
| assertFalse(resource.getContents().isEmpty()); |
| EObject modelRootUml2_2 = resource.getContents().get(0); |
| assertNotNull(modelRootUml2_2); |
| assertFalse(modelRootUml2_2.eIsProxy()); |
| |
| // Unload uml2Resource with EditingDomain20 |
| EcorePlatformUtil.unloadResources(refWks.editingDomain20, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload uml2Resource with uml2EditingDomain |
| EcorePlatformUtil.unloadResources(refWks.editingDomainUml2, unloadedUml2Resources, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| resourcesInEditingDomainUml2 = resourcesInEditingDomainUml2 - unloadedUml2Resources.size(); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Verify unloaded resource were removed from the ResourceSet and not proxified |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_1)); |
| assertFalse(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_2)); |
| assertTrue(refWks.editingDomainUml2.getResourceSet().getResources().contains(uml2Resource_3)); |
| // the Uml resource should be proxifed |
| assertNotNull(modelRootUml2_1); |
| assertTrue(modelRootUml2_1.eIsProxy()); |
| assertTrue(modelRootUml2_1.eContents().size() > 0); |
| |
| assertNotNull(modelRootUml2_2); |
| assertTrue(modelRootUml2_2.eIsProxy()); |
| assertTrue(modelRootUml2_2.eContents().size() > 0); |
| } |
| |
| /** |
| * Test method for |
| * {@link EcorePlatformUtil#unloadAllResources(org.eclipse.emf.transaction.TransactionalEditingDomain)} |
| */ |
| public void testUnloadAllResources() throws Exception { |
| int resourcesInEditingDomain10 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird10MMDescriptor.INSTANCE); |
| int resourcesInEditingDomain20 = refWks.getInitialResourcesInReferenceEditingDomainCount(Hummingbird20MMDescriptor.INSTANCE); |
| int resourcesInEditingDomainUml2 = refWks.getInitialResourcesInReferenceEditingDomainCount(UML2MMDescriptor.INSTANCE); |
| |
| // NULL editing domain |
| EcorePlatformUtil.unloadAllResources(null, null); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, resourcesInEditingDomain20); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| // Unload AllResource of EditingDomain20 |
| EcorePlatformUtil.unloadAllResources(refWks.editingDomain20, null); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, 0); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, resourcesInEditingDomain10); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload AllResource of EditingDomain10 |
| EcorePlatformUtil.unloadAllResources(refWks.editingDomain10, null); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, 0); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, 0); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, resourcesInEditingDomainUml2); |
| |
| // Unload AllResource of uml2EditingDomain |
| EcorePlatformUtil.unloadAllResources(refWks.editingDomainUml2, null); |
| waitForModelLoading(); |
| |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain20, 0); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomain10, 0); |
| assertEditingDomainResourcesSizeEquals(refWks.editingDomainUml2, 0); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createSaveNewSchedulingRule(Collection)} |
| */ |
| public void testCreateSaveNewSchedulingRule_Collection_ModelResourceDescriptors() throws Exception { |
| // Since Project is automatically loaded during import we need first to unload it. |
| ModelLoadManager.INSTANCE.unloadProject(refWks.hbProject20_A, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| ModelLoadManager.INSTANCE.unloadProject(refWks.hbProject20_D, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| ModelLoadManager.INSTANCE.unloadProject(refWks.hbProject20_E, false, true, new NullProgressMonitor()); |
| waitForModelLoading(); |
| |
| assertTrue(refWks.editingDomain20.getResourceSet().getResources().isEmpty()); |
| |
| String testFileName1 = "testsave3x_1.instancemodel"; |
| String testFileName2 = "testsave3x_2.instancemodel"; |
| |
| IPath path_1 = refWks.hbProject20_A.getFullPath().append(testFileName1); |
| IPath path_2 = refWks.hbProject20_A.getFullPath().append(testFileName2); |
| |
| ModelResourceDescriptor modelResDes1 = new ModelResourceDescriptor(path_1, Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), |
| createPlatform()); |
| ModelResourceDescriptor modelResDes2 = new ModelResourceDescriptor(path_2, Hummingbird20MMDescriptor.INSTANCE.getDefaultContentTypeId(), |
| createPlatform()); |
| |
| IFile file1 = refWks.hbProject20_A.getFile(path_1); |
| IFile file2 = refWks.hbProject20_A.getFile(path_2); |
| IResourceRuleFactory ruleFactory = ((IResource) file1).getWorkspace().getRuleFactory(); |
| |
| ISchedulingRule schedulingRule1 = ruleFactory.createRule(file1); |
| ISchedulingRule schedulingRule2 = ruleFactory.createRule(file2); |
| |
| // Create new scheduling rules for collection of model resource descriptors |
| Collection<ModelResourceDescriptor> modelDescriptors = new ArrayList<ModelResourceDescriptor>(); |
| modelDescriptors.add(modelResDes1); |
| modelDescriptors.add(modelResDes2); |
| |
| ISchedulingRule schedulingRules = EcorePlatformUtil.createSaveNewSchedulingRule(modelDescriptors); |
| assertNotNull(schedulingRules); |
| assertTrue(schedulingRules.contains(schedulingRule1)); |
| assertTrue(schedulingRules.contains(schedulingRule2)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createSaveSchedulingRule(Collection)} |
| */ |
| public void testCreateSaveSchedulingRule_CollectionOfResource() throws Exception { |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| Resource hbResource20_2 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2, true), false); |
| Resource hbResource20_3 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3, true), false); |
| Resource hbResource20_4 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1, true), false); |
| Resource hbResource20_5 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2, true), false); |
| Resource hbResource20_6 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_D + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3, true), false); |
| assertNotNull(hbResource20_1); |
| assertNotNull(hbResource20_2); |
| assertNotNull(hbResource20_3); |
| assertNotNull(hbResource20_4); |
| assertNotNull(hbResource20_5); |
| assertNotNull(hbResource20_6); |
| |
| IFile file1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| IFile file2 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_2); |
| IFile file3 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_3); |
| |
| IFile file4 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_1); |
| IFile file5 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_2); |
| IFile file6 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20D_3); |
| |
| assertNotNull(file1); |
| assertNotNull(file2); |
| assertNotNull(file3); |
| |
| assertNotNull(file4); |
| assertNotNull(file5); |
| assertNotNull(file6); |
| |
| IResourceRuleFactory ruleFactory = ((IResource) file1).getWorkspace().getRuleFactory(); |
| |
| ISchedulingRule schedulingRule1 = ruleFactory.createRule(file1); |
| ISchedulingRule schedulingRule2 = ruleFactory.createRule(file2); |
| ISchedulingRule schedulingRule3 = ruleFactory.createRule(file3); |
| |
| ISchedulingRule schedulingRule4 = ruleFactory.createRule(file4); |
| ISchedulingRule schedulingRule5 = ruleFactory.createRule(file5); |
| ISchedulingRule schedulingRule6 = ruleFactory.createRule(file6); |
| |
| // Create new scheduling rules for collection of model resource descriptors |
| Collection<Resource> resources = new ArrayList<Resource>(); |
| resources.add(hbResource20_1); |
| resources.add(hbResource20_2); |
| resources.add(hbResource20_3); |
| resources.add(hbResource20_4); |
| resources.add(hbResource20_5); |
| resources.add(hbResource20_6); |
| |
| ISchedulingRule schedulingRules = EcorePlatformUtil.createSaveSchedulingRule(resources); |
| assertNotNull(schedulingRules); |
| assertTrue(schedulingRules.contains(schedulingRule1)); |
| assertTrue(schedulingRules.contains(schedulingRule2)); |
| assertTrue(schedulingRules.contains(schedulingRule3)); |
| assertTrue(schedulingRules.contains(schedulingRule4)); |
| assertTrue(schedulingRules.contains(schedulingRule5)); |
| assertTrue(schedulingRules.contains(schedulingRule6)); |
| } |
| |
| /** |
| * Test method for {@link EcorePlatformUtil#createSaveSchedulingRule(Resource))} |
| */ |
| public void testCreateSaveSchedulingRule_Resource() throws Exception { |
| Resource hbResource20_1 = refWks.editingDomain20.getResourceSet().getResource(URI.createPlatformResourceURI( |
| DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1, true), false); |
| assertNotNull(hbResource20_1); |
| |
| IFile file1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| assertNotNull(file1); |
| IResourceRuleFactory ruleFactory = ((IResource) file1).getWorkspace().getRuleFactory(); |
| ISchedulingRule schedulingRule1 = ruleFactory.createRule(file1); |
| |
| // Create new scheduling rules for collection of model resource descriptors |
| ISchedulingRule schedulingRules = EcorePlatformUtil.createSaveSchedulingRule(hbResource20_1); |
| assertNotNull(schedulingRules); |
| assertTrue(schedulingRules.contains(schedulingRule1)); |
| } |
| |
| public void testReadComments() { |
| IFile referenceFile = refWks.getReferenceFile(DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A, |
| DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_1); |
| Collection<String> comments = EcorePlatformUtil.readRootElementComments(referenceFile); |
| assertNotNull(comments); |
| assertEquals(3, comments.size()); |
| for (String comment : comments) { |
| assertTrue(comment.length() > 0); |
| } |
| } |
| |
| } |