Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2004-08-24 13:58:47 +0000
committerMichael Valenta2004-08-24 13:58:47 +0000
commit5756d260b9cc93da4ac4bbcebb4c34138a545880 (patch)
treee107bebdc93d7abc0fc9d89de4ba3c38bd1cb132 /bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java
parent42da08ebb65a175053c1f2b88d28ed6dcbcec33a (diff)
downloadeclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.tar.gz
eclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.tar.xz
eclipse.platform.team-5756d260b9cc93da4ac4bbcebb4c34138a545880.zip
Bug 28218 Default provider should prompt in validateEdit if UI context given
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java')
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java
index 7ad8a72c9..b211a8305 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java
@@ -18,13 +18,13 @@ import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFileModificationValidator;
+import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.team.core.RepositoryProvider;
public class FileModificationValidatorManager implements IFileModificationValidator {
- private static final IFileModificationValidator DEFAULT_VALIDATOR =
- new DefaultFileModificationValidator();
+ private IFileModificationValidator defaultValidator;
/*
* @see IFileModificationValidator#validateEdit(IFile[], Object)
@@ -59,7 +59,7 @@ public class FileModificationValidatorManager implements IFileModificationValida
RepositoryProvider provider = (RepositoryProvider)providersIterator.next();
ArrayList filesList = (ArrayList)providersToFiles.get(provider);
IFile[] filesArray = (IFile[])filesList.toArray(new IFile[filesList.size()]);
- IFileModificationValidator validator = DEFAULT_VALIDATOR;
+ IFileModificationValidator validator = getDefaultValidator();
//if no provider or no validator use the default validator
if (provider != null) {
@@ -93,7 +93,7 @@ public class FileModificationValidatorManager implements IFileModificationValida
*/
public IStatus validateSave(IFile file) {
RepositoryProvider provider = RepositoryProvider.getProvider(file.getProject());
- IFileModificationValidator validator = DEFAULT_VALIDATOR;
+ IFileModificationValidator validator = getDefaultValidator();
//if no provider or no validator use the default validator
if (provider != null) {
@@ -103,4 +103,32 @@ public class FileModificationValidatorManager implements IFileModificationValida
return validator.validateSave(file);
}
+
+ private synchronized IFileModificationValidator getDefaultValidator() {
+ if (defaultValidator == null) {
+ loadDefaultValidator();
+ }
+ return defaultValidator;
+ }
+
+ private void loadDefaultValidator() {
+ defaultValidator = new DefaultFileModificationValidator();
+ IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(TeamPlugin.ID, TeamPlugin.DEFAULT_FILE_MODIFICATION_VALIDATOR_EXTENSION);
+ if (extension != null) {
+ IExtension[] extensions = extension.getExtensions();
+ if (extensions.length > 0) {
+ IConfigurationElement[] configElements = extensions[0].getConfigurationElements();
+ if (configElements.length > 0) {
+ try {
+ Object o = configElements[0].createExecutableExtension("class"); //$NON-NLS-1$
+ if (o instanceof IFileModificationValidator) {
+ defaultValidator = (IFileModificationValidator)o;
+ }
+ } catch (CoreException e) {
+ TeamPlugin.log(e);
+ }
+ }
+ }
+ }
+ }
}

Back to the top