Merge "[CDO] Various improvements to CDOAwareModelSet, CDOSashModelProvider, and CDOContextStorageProvider"
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
index 46e482c..ee66e25 100755
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
@@ -100,4 +100,11 @@
scheme="cdo.checkout">
</sashModelProvider>
</extension>
+ <extension
+ point="org.eclipse.papyrus.infra.internationalization.internationalizationPreferenceModelProvider">
+ <internationalizationPreferenceModelProvider
+ class="org.eclipse.papyrus.cdo.internal.core.resource.CDOInternationalizationPreferenceModelProvider"
+ scheme="cdo.checkout">
+ </internationalizationPreferenceModelProvider>
+ </extension>
</plugin>
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
index 7f26802..58ce298 100644
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
@@ -15,25 +15,26 @@
package org.eclipse.papyrus.cdo.internal.core.resource;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
-import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
-import org.eclipse.emf.cdo.util.CDOURIUtil;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.papyrus.cdo.internal.core.Activator;
-import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.internationalization.modelresource.AbstractInternationalizationPreferenceModelProvider;
import org.eclipse.papyrus.infra.internationalization.modelresource.InternationalizationPreferenceModel;
public class CDOInternationalizationPreferenceModelProvider extends AbstractInternationalizationPreferenceModelProvider {
+ public static final String CDO_LOCAL_PREFERENCEMODEL_URI_PREFIX = "/cdo.checkout/";//$NON-NLS-1$
public CDOInternationalizationPreferenceModelProvider() {
super();
}
/**
+ * This method is computing the URI for the case when the location of the internationalization
+ * preference information is located in a local "hidden" directory. (~/.metadata/etc...")
+ * In the case where the Papyrus model is an CDO resource, we provide a new mechanism to compute a local URI.
+ *
* @see org.eclipse.papyrus.infra.internationalization.modelresource.IInternationalizationPreferenceModelProvider#getInternationalizationPreferenceModelURI(org.eclipse.emf.common.util.URI)
*
* @param userModelURI
@@ -41,31 +42,16 @@
*/
@Override
public URI getInternationalizationPreferenceModelURI(URI userModelURI) {
- URI uriWithoutExtension = userModelURI.trimFileExtension();
- IPath stateLocation = indexFolder.append(CDOURIUtil.extractResourcePath(uriWithoutExtension));
- return URI.createFileURI(stateLocation.toString()).appendFileExtension(InternationalizationPreferenceModel.INTERNATIONALIZATION_PREFERENCE_FILE_EXTENSION);
+ Assert.isNotNull(userModelURI);
+ final IPath internationalizationWorkspaceLocation = org.eclipse.papyrus.infra.internationalization.Activator.getDefault().getStateLocation();
+ final URI modelURI = userModelURI.trimFileExtension();
+ URI internationalizationModelURI = null;
+ internationalizationModelURI = URI.createFileURI(internationalizationWorkspaceLocation.append(CDO_LOCAL_PREFERENCEMODEL_URI_PREFIX + modelURI.devicePath()).toPortableString());
+ internationalizationModelURI = internationalizationModelURI.appendFileExtension(InternationalizationPreferenceModel.INTERNATIONALIZATION_PREFERENCE_FILE_EXTENSION);
+
+ return internationalizationModelURI;
}
- private static final IPath INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT = Activator.getDefault().getStateLocation().append("internationalizationidx"); //$NON-NLS-1$
- private IPath indexFolder;
-
- @Override
- public void initialize(ModelSet modelSet) {
- super.initialize(modelSet);
-
- CDOCheckout checkout = CDOExplorerUtil.getCheckout(modelSet);
- if (checkout != null) {
- initialize(checkout);
- } else {
- // Model probably is in the workspace if null
- indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT;
- }
- }
-
- public CDOInternationalizationPreferenceModelProvider initialize(CDOCheckout checkout) {
- indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT.append(checkout.getView().getSession().getRepositoryInfo().getUUID());
- return this;
- }
}