Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas FAUVERGUE2017-05-11 12:07:21 +0000
committervincent lorenzo2017-05-12 18:46:14 +0000
commitb800f342de4af3d59196427ad0f8b44f8b1a0349 (patch)
tree047755fa16c2d1183f0f943035645fd825d359b0 /plugins/infra
parent3dab9aaaa059edb969def64c919f43db36b1f5ec (diff)
downloadorg.eclipse.papyrus-b800f342de4af3d59196427ad0f8b44f8b1a0349.tar.gz
org.eclipse.papyrus-b800f342de4af3d59196427ad0f8b44f8b1a0349.tar.xz
org.eclipse.papyrus-b800f342de4af3d59196427ad0f8b44f8b1a0349.zip
Bug 510951: [Internationalization] Elements from profile does not have
label displayed https://bugs.eclipse.org/bugs/show_bug.cgi?id=510951 Bug 516166: [infra-sashwindows] IPageLifeCycleEventsListener - An undesired pageActivated() events is sent when a page is closed https://bugs.eclipse.org/bugs/show_bug.cgi?id=516166 - Add some test condition for internationalization - Modify the resource management in the internationalization model resource - Manage the unload of internationalization like the load - Modify the JUnit test corresponding to the editor reload after the fix of bug 516166 Change-Id: I565ac0c88387dbe907b6c027efac9cd412e13af1 Signed-off-by: Nicolas FAUVERGUE <nicolas.fauvergue@cea.fr>
Diffstat (limited to 'plugins/infra')
-rw-r--r--plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization.common/src/org/eclipse/papyrus/infra/internationalization/common/utils/InternationalizationPreferencesUtils.java10
-rw-r--r--plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/modelresource/InternationalizationModelResource.java32
-rw-r--r--plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/resource/InternationalizationResource.java65
3 files changed, 92 insertions, 15 deletions
diff --git a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization.common/src/org/eclipse/papyrus/infra/internationalization/common/utils/InternationalizationPreferencesUtils.java b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization.common/src/org/eclipse/papyrus/infra/internationalization/common/utils/InternationalizationPreferencesUtils.java
index 3cd39072b9e..5d3157c71b8 100644
--- a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization.common/src/org/eclipse/papyrus/infra/internationalization/common/utils/InternationalizationPreferencesUtils.java
+++ b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization.common/src/org/eclipse/papyrus/infra/internationalization/common/utils/InternationalizationPreferencesUtils.java
@@ -46,7 +46,7 @@ public class InternationalizationPreferencesUtils {
public static IPreferenceStore getPreferenceStore(final EObject eObject) {
URI resourceURI = eObject.eResource().getURI();
final ResourceSet resourceSet = eObject.eResource().getResourceSet();
- if (resourceSet instanceof ModelSet) {
+ if (resourceSet instanceof ModelSet && null != ((ModelSet) resourceSet).getURIWithoutExtension()) {
resourceURI = ((ModelSet) resourceSet).getURIWithoutExtension().appendFileExtension(DiModel.DI_FILE_EXTENSION);
}
return getPreferenceStore(resourceURI);
@@ -114,7 +114,7 @@ public class InternationalizationPreferencesUtils {
public static void setInternationalizationPreference(final EObject eObject, final boolean value) {
URI resourceURI = eObject.eResource().getURI();
final ResourceSet resourceSet = eObject.eResource().getResourceSet();
- if (resourceSet instanceof ModelSet) {
+ if (resourceSet instanceof ModelSet && null != ((ModelSet) resourceSet).getURIWithoutExtension()) {
resourceURI = ((ModelSet) resourceSet).getURIWithoutExtension().appendFileExtension(DiModel.DI_FILE_EXTENSION);
}
setInternationalizationPreference(resourceURI, value);
@@ -162,7 +162,7 @@ public class InternationalizationPreferencesUtils {
if (null != eObject && null != eObject.eResource()) {
URI resourceURI = eObject.eResource().getURI();
final ResourceSet resourceSet = eObject.eResource().getResourceSet();
- if (resourceSet instanceof ModelSet) {
+ if (resourceSet instanceof ModelSet && null != ((ModelSet) resourceSet).getURIWithoutExtension()) {
resourceURI = ((ModelSet) resourceSet).getURIWithoutExtension().appendFileExtension(DiModel.DI_FILE_EXTENSION);
}
result = getInternationalizationPreference(resourceURI);
@@ -236,7 +236,7 @@ public class InternationalizationPreferencesUtils {
if (null != eObject && null != eObject.eResource()) {
URI resourceURI = eObject.eResource().getURI();
final ResourceSet resourceSet = eObject.eResource().getResourceSet();
- if (resourceSet instanceof ModelSet) {
+ if (resourceSet instanceof ModelSet && null != ((ModelSet) resourceSet).getURIWithoutExtension()) {
resourceURI = ((ModelSet) resourceSet).getURIWithoutExtension().appendFileExtension(DiModel.DI_FILE_EXTENSION);
}
result = getLocalePreference(resourceURI);
@@ -276,7 +276,7 @@ public class InternationalizationPreferencesUtils {
public static void setLanguagePreference(final EObject eObject, final String language) {
URI resourceURI = eObject.eResource().getURI();
final ResourceSet resourceSet = eObject.eResource().getResourceSet();
- if (resourceSet instanceof ModelSet) {
+ if (resourceSet instanceof ModelSet && null != ((ModelSet) resourceSet).getURIWithoutExtension()) {
resourceURI = ((ModelSet) resourceSet).getURIWithoutExtension().appendFileExtension(DiModel.DI_FILE_EXTENSION);
}
setLanguagePreference(resourceURI, language);
diff --git a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/modelresource/InternationalizationModelResource.java b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/modelresource/InternationalizationModelResource.java
index 0ed7d29e859..02bb1510370 100644
--- a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/modelresource/InternationalizationModelResource.java
+++ b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/modelresource/InternationalizationModelResource.java
@@ -380,6 +380,11 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
if (!resource.isLoaded()) {
// If this is a read-only resource, create a fake resource to get the internationalization content and read the needed entries
if(modelSet.getTransactionalEditingDomain().isReadOnly(resource)) {
+
+ // Unload the resource and remove the created resource from the map
+ unload(resource);
+ getResources().remove(resource);
+
final URI initialResourceURI = resource.getURI();
final String lastSegment = initialResourceURI.lastSegment();
URI newResourceURI = modelSet.getURIWithoutExtension();
@@ -387,7 +392,13 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
newResourceURI = newResourceURI.appendSegment(lastSegment);
// Create the resource with the ResourceSet but this one need to be removed from the ResourceSet
- resource = modelSet.createResource(newResourceURI);
+ // Look for the resource
+ resource = getResourceSet().getResource(newResourceURI, false);
+
+ // Check if model is loaded.
+ if (null == resource) {
+ resource = modelSet.createResource(newResourceURI);
+ }
configureResource(initialResourceURI, resource, locale);
if (resource instanceof InternationalizationResource) {
@@ -402,9 +413,6 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
Activator.log.error("Error during load resource.", e); //$NON-NLS-1$
}
- // Remove the resource from the ResourceSet because this is only needed to read and not save the resource
- modelSet.getResources().remove(resource);
-
// And add the temporary resource to the list of resources to not save
resourcesToNotSave.add(resource);
}else {
@@ -439,10 +447,7 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
final Resource resource = this.resource;
// Fill the properties by locale map
- if (null == propertiesByLocale.get(resourceURI)) {
- propertiesByLocale.put(resourceURI, new HashMap<Locale, Resource>());
- }
- propertiesByLocale.get(resourceURI).put(locale, resource);
+ configureResource(resourceURI, resource, locale);
// Calculate the internationalization content
loadInternationalizationContent(uri, locale);
@@ -1282,7 +1287,7 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
if (null != initialUri) {
unload(initialUri);
}
- resource.unload();
+ unload(resource);
}
// Remove adapters
@@ -1320,6 +1325,9 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
preferencePartLabelSynchronizers.clear();
preferencePartLabelSynchronizers = null;
}
+
+ resourcesToNotSave.clear();
+ resourcesToNotSave = null;
resource = null;
super.unload();
@@ -1357,7 +1365,13 @@ public class InternationalizationModelResource extends AbstractModelWithSharedRe
entriesIterator.remove();
}
}
+
+ if(propertiesByLocale.get(initialUri).isEmpty()) {
+ propertiesByLocale.remove(initialUri);
+ }
}
+
+ resource.unload();
}
/**
diff --git a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/resource/InternationalizationResource.java b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/resource/InternationalizationResource.java
index 0c67969ed02..9258a7d6cde 100644
--- a/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/resource/InternationalizationResource.java
+++ b/plugins/infra/internationalization/org.eclipse.papyrus.infra.internationalization/src/org/eclipse/papyrus/infra/internationalization/resource/InternationalizationResource.java
@@ -16,6 +16,7 @@ package org.eclipse.papyrus.infra.internationalization.resource;
import java.io.IOException;
import java.util.Collections;
import java.util.Enumeration;
+import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
@@ -24,6 +25,7 @@ import java.util.Vector;
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.ResourceSet;
import org.eclipse.emf.ecore.resource.URIConverter;
import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl;
@@ -140,7 +142,7 @@ public class InternationalizationResource extends XMIResourceImpl {
} catch (InterruptedException | RollbackException e) {
Activator.log.error(e);
}
- }else {
+ } else {
final GMFtoEMFCommandWrapper command = new GMFtoEMFCommandWrapper(new AddToResourceCommand(
((ModelSet) getResourceSet()).getTransactionalEditingDomain(), this, library));
command.execute();
@@ -227,6 +229,67 @@ public class InternationalizationResource extends XMIResourceImpl {
}
/**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doUnload()
+ */
+ @Override
+ protected void doUnload() {
+
+ Iterator<EObject> allContents = getAllProperContents(unloadingContents);
+
+ // This guard is needed to ensure that clear doesn't make the resource become loaded.
+ //
+ if (!getContents().isEmpty()) {
+ // Load the locale save option if exist
+ final Object needUnsafe = getDefaultLoadOptions() != null
+ && getDefaultLoadOptions().containsKey(InternationalizationResourceOptionsConstants.LOAD_OPTION_UNSAFE_ADD_CONTENT)
+ ? getDefaultLoadOptions().get(InternationalizationResourceOptionsConstants.LOAD_OPTION_UNSAFE_ADD_CONTENT)
+ : defaultLoadOptions != null
+ ? defaultLoadOptions
+ .get(InternationalizationResourceOptionsConstants.LOAD_OPTION_UNSAFE_ADD_CONTENT)
+ : null;
+
+ // Add the library to the resource
+ if (needUnsafe instanceof Boolean && (Boolean) needUnsafe) {
+ try {
+ // We need to do this by unsafe for the fake resources
+ GMFUnsafe.write(((ModelSet) getResourceSet()).getTransactionalEditingDomain(), new Runnable() {
+
+ @Override
+ public void run() {
+ getContents().clear();
+
+ }
+ });
+ } catch (InterruptedException | RollbackException e) {
+ Activator.log.error(e);
+ }
+ } else {
+ getContents().clear();
+ }
+ }
+ getErrors().clear();
+ getWarnings().clear();
+
+ while (allContents.hasNext()) {
+ unloaded((InternalEObject) allContents.next());
+ }
+
+ if (idToEObjectMap != null) {
+ idToEObjectMap.clear();
+ }
+
+ if (eObjectToIDMap != null) {
+ eObjectToIDMap.clear();
+ }
+
+ if (eObjectToExtensionMap != null) {
+ eObjectToExtensionMap.clear();
+ }
+ }
+
+ /**
* This allows to load the key resolver option.
*
* @param options

Back to the top