[254647] [ui]Validation should be triggered when changing the setting of the "indicate if grammar is not specified" preference settings
diff --git a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
index 5ff3602..f3a4da8 100644
--- a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
+++ b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/core/AbstractNestedValidator.java
@@ -75,10 +75,13 @@
{
// validationstart was not called, so manually setup and tear down
nestedcontext = getNestedContext(state, true);
+ nestedcontext.setProject(file.getProject());
setupValidation(nestedcontext);
teardownRequired = true;
}
- nestedcontext.setProject(file.getProject());
+ else {
+ nestedcontext.setProject(file.getProject());
+ }
validate(file, null, result, reporter, nestedcontext);
if (teardownRequired)
diff --git a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/eclipse/Validator.java b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/eclipse/Validator.java
index 1824ab4..55e2ba0 100644
--- a/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/eclipse/Validator.java
+++ b/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/eclipse/Validator.java
@@ -38,6 +38,7 @@
{
private static final String XML_VALIDATOR_CONTEXT = "org.eclipse.wst.xml.core.validatorContext"; //$NON-NLS-1$
protected int indicateNoGrammar = 0;
+ private IScopeContext[] fPreferenceScopes = null;
/**
* Set any preferences for XML validation.
*
@@ -46,15 +47,18 @@
protected void setupValidation(NestedValidatorContext context)
{
super.setupValidation(context);
- //indicateNoGrammar = XMLCorePlugin.getDefault().getPluginPreferences().getInt();
+ fPreferenceScopes = createPreferenceScopes(context);
+ indicateNoGrammar = Platform.getPreferencesService().getInt(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.INDICATE_NO_GRAMMAR, 0, fPreferenceScopes);
}
protected IScopeContext[] createPreferenceScopes(NestedValidatorContext context) {
- final IProject project = context.getProject();
- if (project != null && project.isAccessible()) {
- final ProjectScope projectScope = new ProjectScope(project);
- if (projectScope.getNode(XMLCorePlugin.getDefault().getBundle().getSymbolicName()).getBoolean(XMLCorePreferenceNames.USE_PROJECT_SETTINGS, false))
- return new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
+ if (context != null) {
+ final IProject project = context.getProject();
+ if (project != null && project.isAccessible()) {
+ final ProjectScope projectScope = new ProjectScope(project);
+ if (projectScope.getNode(XMLCorePlugin.getDefault().getBundle().getSymbolicName()).getBoolean(XMLCorePreferenceNames.USE_PROJECT_SETTINGS, false))
+ return new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
+ }
}
return new IScopeContext[]{new InstanceScope(), new DefaultScope()};
}
@@ -72,16 +76,13 @@
XMLValidator validator = XMLValidator.getInstance();
XMLValidationConfiguration configuration = new XMLValidationConfiguration();
- final IScopeContext[] preferenceScopes = createPreferenceScopes(context);
- final IPreferencesService preferencesService = Platform.getPreferencesService();
- indicateNoGrammar = preferencesService.getInt(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.INDICATE_NO_GRAMMAR, 0, preferenceScopes);
-
try
{
//Preferences pluginPreferences = XMLCorePlugin.getDefault().getPluginPreferences();
configuration.setFeature(XMLValidationConfiguration.INDICATE_NO_GRAMMAR, indicateNoGrammar);
- configuration.setFeature(XMLValidationConfiguration.USE_XINCLUDE, preferencesService.getBoolean(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.USE_XINCLUDE, false, preferenceScopes));
- configuration.setFeature(XMLValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS, preferencesService.getBoolean(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.HONOUR_ALL_SCHEMA_LOCATIONS, true, preferenceScopes));
+ final IPreferencesService preferencesService = Platform.getPreferencesService();
+ configuration.setFeature(XMLValidationConfiguration.USE_XINCLUDE, preferencesService.getBoolean(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.USE_XINCLUDE, false, fPreferenceScopes));
+ configuration.setFeature(XMLValidationConfiguration.HONOUR_ALL_SCHEMA_LOCATIONS, preferencesService.getBoolean(XMLCorePlugin.getDefault().getBundle().getSymbolicName(), XMLCorePreferenceNames.HONOUR_ALL_SCHEMA_LOCATIONS, true, fPreferenceScopes));
}
catch(Exception e)
{