diff options
author | gkessler | 2010-05-10 21:46:55 +0000 |
---|---|---|
committer | gkessler | 2010-05-10 21:46:55 +0000 |
commit | 1f175e95026c9f679ec51ae1d624f36e3a20a9e5 (patch) | |
tree | fa50a4511e2dcbeb40f8b506bbbf4dcf27db7b2f /jsf | |
parent | 85ca6e111fc233c2442c9de6456726bf9492929b (diff) | |
download | webtools.jsf-1f175e95026c9f679ec51ae1d624f36e3a20a9e5.tar.gz webtools.jsf-1f175e95026c9f679ec51ae1d624f36e3a20a9e5.tar.xz webtools.jsf-1f175e95026c9f679ec51ae1d624f36e3a20a9e5.zip |
[288144] - No line number showed in Problems view for the errors/warnings from jsf validator
Diffstat (limited to 'jsf')
6 files changed, 134 insertions, 19 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java index 29bbe1280..ed025e344 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java +++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java @@ -11,6 +11,7 @@ ********************************************************************************/ package org.eclipse.jst.jsf.validation.internal.appconfig; +import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -39,6 +40,8 @@ import org.eclipse.jst.jsp.core.internal.Logger; import org.eclipse.wst.common.project.facet.core.IFacetedProject; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; +import org.eclipse.wst.sse.core.StructuredModelManager; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.validation.AbstractValidator; import org.eclipse.wst.validation.ValidationResult; import org.eclipse.wst.validation.ValidationState; @@ -301,14 +304,41 @@ public class AppConfigValidator extends AbstractValidator implements IValidator final List messages = new ArrayList(); validator.validate(facesConfigType, messages, file); + if (messages.size() > 0) { + IStructuredModel model = null; + try + { + model = StructuredModelManager.getModelManager().getModelForRead( + file); + reportProblems(reporter, messages, model); + } catch (IOException e) { + JSFCorePlugin.log("Error reporting FacesConfig validation problems", e); //$NON-NLS-1$ + } catch (CoreException e) { + JSFCorePlugin.log("Error reporting FacesConfig validation problems", e); //$NON-NLS-1$ + } finally { + if (model != null) { + model.releaseFromRead(); + } + } + } + } + + //sets line number and reports message + private void reportProblems(final IReporter reporter, final List messages, final IStructuredModel model) { for (final Iterator it = messages.iterator(); it.hasNext();) { final IMessage message = (IMessage) it.next(); + if (model != null) { + final int line = model.getStructuredDocument().getLineOfOffset(message.getOffset()); + if (line >= 0) + message.setLineNo(line + 1); + } reporter.addMessage(this, message); } } - /** + + /** * @param project * @return the version string for the JSF facet on project * or null if not found diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/HTMLValidator.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/HTMLValidator.java index 17785c1d1..01bf42833 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/HTMLValidator.java +++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/HTMLValidator.java @@ -146,11 +146,33 @@ public class HTMLValidator extends AbstractValidator implements IValidator JSFCorePlugin.getDefault().getPreferenceStore()); prefs.load(); - final ValidationReporter jsfReporter = new ValidationReporter(this, - reporter, file, prefs); - validator.validateView(file, jsfReporter); - // TODO: break off into composite strategies - validateFaceletHtml(file, jsfReporter); + IStructuredModel model = null; + try + { + model = StructuredModelManager.getModelManager().getModelForRead( + file); + + final ValidationReporter jsfReporter = new ValidationReporter(this, + reporter, file, prefs, model); + validator.validateView(file, jsfReporter); + // TODO: break off into composite strategies + validateFaceletHtml(file, jsfReporter); + } + catch (final CoreException e) + { + JSFCorePlugin.log("Error validating JSF", e); + } + catch (final IOException e) + { + JSFCorePlugin.log("Error validating JSF", e); + } + finally + { + if (null != model) + { + model.releaseFromRead(); + } + } } private void validateFaceletHtml(final IFile file, diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/ValidationReporter.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/ValidationReporter.java index cee0fc0e2..ab99923af 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/ValidationReporter.java +++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.ui/src/org/eclipse/jst/jsf/facelet/ui/internal/validation/ValidationReporter.java @@ -6,6 +6,7 @@ import org.eclipse.jst.jsf.ui.internal.validation.ValidationMessageFactory; import org.eclipse.jst.jsf.validation.internal.IJSFViewValidator; import org.eclipse.jst.jsf.validation.internal.ValidationPreferences; import org.eclipse.jst.jsf.validation.internal.strategy.DiagnosticFactory; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; import org.eclipse.wst.validation.internal.provisional.core.IValidator; @@ -21,12 +22,13 @@ import org.eclipse.wst.validation.internal.provisional.core.IValidator; public ValidationReporter(final IValidator validator, final IReporter reporter, final IFile file, - final ValidationPreferences prefs) + final ValidationPreferences prefs, + final IStructuredModel model) { _validator = validator; _reporter = reporter; _file = file; - _factory = new ValidationMessageFactory(prefs); + _factory = new ValidationMessageFactory(prefs, model); } public void report(final Diagnostic problem, final int start, diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidator.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidator.java index ebd74bbcc..2c5947379 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidator.java +++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/JSFValidator.java @@ -10,9 +10,12 @@ *******************************************************************************/ package org.eclipse.jst.jsf.ui.internal.validation; +import java.io.IOException; + import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.text.IDocument; @@ -24,6 +27,8 @@ import org.eclipse.jst.jsf.validation.internal.IJSFViewValidator; import org.eclipse.jst.jsf.validation.internal.JSFValidatorFactory; import org.eclipse.jst.jsf.validation.internal.ValidationPreferences; import org.eclipse.jst.jsp.core.internal.validation.JSPValidator; +import org.eclipse.wst.sse.core.StructuredModelManager; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator; @@ -99,9 +104,31 @@ public class JSFValidator extends JSPValidator implements ISourceValidator JSFCorePlugin.getDefault().getPreferenceStore()); prefs.load(); - final ValidationReporter jsfReporter = new ValidationReporter( - this, reporter, file, prefs); - validator.validateView(file, regions, jsfReporter); + IStructuredModel model = null; + try + { + model = StructuredModelManager.getModelManager().getModelForRead( + file); + + final ValidationReporter jsfReporter = new ValidationReporter( + this, reporter, file, prefs, model); + validator.validateView(file, regions, jsfReporter); + } + catch (final CoreException e) + { + JSFCorePlugin.log("Error validating JSF", e); //$NON-NLS-1$ + } + catch (final IOException e) + { + JSFCorePlugin.log("Error validating JSF", e); //$NON-NLS-1$ + } + finally + { + if (null != model) + { + model.releaseFromRead(); + } + } } } } @@ -134,9 +161,31 @@ public class JSFValidator extends JSPValidator implements ISourceValidator JSFCorePlugin.getDefault().getPreferenceStore()); prefs.load(); - final ValidationReporter jsfReporter = new ValidationReporter(this, - reporter, file, prefs); - validator.validateView(file, jsfReporter); + IStructuredModel model = null; + try + { + model = StructuredModelManager.getModelManager().getModelForRead( + file); + + final ValidationReporter jsfReporter = new ValidationReporter(this, + reporter, file, prefs, model); + validator.validateView(file, jsfReporter); + } + catch (final CoreException e) + { + JSFCorePlugin.log("Error validating JSF", e); //$NON-NLS-1$ + } + catch (final IOException e) + { + JSFCorePlugin.log("Error validating JSF", e); //$NON-NLS-1$ + } + finally + { + if (null != model) + { + model.releaseFromRead(); + } + } } } diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationMessageFactory.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationMessageFactory.java index 1d05ae855..08804abc7 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationMessageFactory.java +++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationMessageFactory.java @@ -22,6 +22,8 @@ import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences; import org.eclipse.jst.jsf.validation.internal.JSFTypeComparatorPreferences; import org.eclipse.jst.jsf.validation.internal.ValidationPreferences; import org.eclipse.jst.jsf.validation.internal.el.diagnostics.DiagnosticFactory; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; +import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; import org.eclipse.wst.validation.internal.core.Message; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -34,13 +36,14 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage; public final class ValidationMessageFactory { private final Map<String, SeverityOverrideStrategy> _strategies; - + private IStructuredModel _model = null; /** * @param prefs - * + * @param model */ - public ValidationMessageFactory(final ValidationPreferences prefs) + public ValidationMessageFactory(final ValidationPreferences prefs, final IStructuredModel model) { + _model = model; _strategies = new HashMap<String, SeverityOverrideStrategy>(); _strategies.put(DiagnosticFactory.SOURCE_ID, new ELSeverityOverrideStrategy(prefs)); @@ -78,6 +81,14 @@ public final class ValidationMessageFactory message.setOffset(offset); message.setLength(length); + if (this._model != null) { + IStructuredDocument flatModel = this._model.getStructuredDocument(); + if (flatModel != null) { + int line = flatModel.getLineOfOffset(message.getOffset()); + if (line >= 0) + message.setLineNo(line + 1); + } + } return message; } diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationReporter.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationReporter.java index e5f041189..3f4ecd220 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationReporter.java +++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/ValidationReporter.java @@ -14,6 +14,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.jst.jsf.validation.internal.IJSFViewValidator; import org.eclipse.jst.jsf.validation.internal.ValidationPreferences; +import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; import org.eclipse.wst.validation.internal.provisional.core.IValidator; @@ -28,12 +29,12 @@ import org.eclipse.wst.validation.internal.provisional.core.IValidator; public ValidationReporter(final IValidator validator, final IReporter reporter, final IFile file, - final ValidationPreferences prefs) + final ValidationPreferences prefs, final IStructuredModel model) { _validator = validator; _reporter = reporter; _file = file; - _factory = new ValidationMessageFactory(prefs); + _factory = new ValidationMessageFactory(prefs, model); } public void report(final Diagnostic problem, final int start, |