diff options
Diffstat (limited to 'bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java')
-rw-r--r-- | bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java deleted file mode 100644 index c004f93a87..0000000000 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.eclipse.jst.jsp.core.internal.validation; - -import java.io.IOException; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.compiler.IProblem; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jst.jsp.core.internal.Logger; -import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslation; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory; -import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension; -import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts; -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.core.internal.provisional.text.ITextRegion; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; -import org.eclipse.wst.validation.internal.provisional.core.IReporter; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; - -public class JSPJavaValidator extends JSPValidator { - - /** - * Validate one file. It's assumed that the file has JSP content type. - * - * @param f - * @param reporter - */ - protected void validateFile(IFile f, IReporter reporter) { - IStructuredModel model = null; - try { - // get jsp model, get tranlsation - model = StructuredModelManager.getModelManager().getModelForRead(f); - if (!reporter.isCancelled()) { - if (model instanceof IDOMModel) { - IDOMModel domModel = (IDOMModel) model; - - setupAdapterFactory(domModel); - IDOMDocument xmlDoc = domModel.getDocument(); - JSPTranslationAdapter translationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class); - JSPTranslation translation = translationAdapter.getJSPTranslation(); - - if (!reporter.isCancelled()) { - translation.setProblemCollectingActive(true); - translation.reconcileCompilationUnit(); - List problems = translation.getProblems(); - // remove old messages - reporter.removeAllMessages(this, f); - // add new messages - for (int i = 0; i < problems.size() && !reporter.isCancelled(); i++) { - IMessage m = createMessageFromProblem((IProblem) problems.get(i), f, translation, domModel.getStructuredDocument()); - if (m != null) - reporter.addMessage(this, m); - } - } - } - } - } - catch (IOException e) { - Logger.logException(e); - } - catch (CoreException e) { - Logger.logException(e); - } - finally { - if (model != null) - model.releaseFromRead(); - } - } - - /** - * When loading model from a file, you need to explicitly add adapter - * factory. - * - * @param sm - */ - private void setupAdapterFactory(IStructuredModel sm) { - if (sm.getFactoryRegistry().getFactoryFor(IJSPTranslation.class) == null) { - JSPTranslationAdapterFactory factory = new JSPTranslationAdapterFactory(); - sm.getFactoryRegistry().addFactory(factory); - } - } - - /** - * Creates an IMessage from an IProblem - * - * @param problem - * @param f - * @param translation - * @param structuredDoc - * @return message representation of the problem, or null if it could not - * create one - */ - private IMessage createMessageFromProblem(IProblem problem, IFile f, JSPTranslation translation, IStructuredDocument structuredDoc) { - - int sourceStart = translation.getJspOffset(problem.getSourceStart()); - int sourceEnd = translation.getJspOffset(problem.getSourceEnd()); - if (sourceStart == -1) - return null; - - // line number for marker starts @ 1 - // line number from document starts @ 0 - int lineNo = structuredDoc.getLineOfOffset(sourceStart) + 1; - - int sev = problem.isError() ? IMessage.HIGH_SEVERITY : IMessage.NORMAL_SEVERITY; - - IMessage m = new LocalizedMessage(sev, problem.getMessage(), f); - - m.setLineNo(lineNo); - m.setOffset(sourceStart); - m.setLength(sourceEnd - sourceStart + 1); - - // need additional adjustment for problems from - // indirect (included) files - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=119633 - if(translation.isIndirect(problem.getSourceStart())) { - adjustIndirectPosition(m, translation); - } - - return m; - } - - /** - * Assumed the message offset is an indirect position. - * In other words, an error from an included file. - * - * @param m - * @param translation - */ - private void adjustIndirectPosition(IMessage m, JSPTranslation translation) { - - if(!(translation instanceof JSPTranslationExtension)) - return; - - IDocument jspDoc = ((JSPTranslationExtension)translation).getJspDocument(); - if(!(jspDoc instanceof IStructuredDocument)) - return; - - IStructuredDocument sDoc = (IStructuredDocument)jspDoc; - IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(0, m.getOffset() + m.getLength()); - // iterate backwards until you hit the include directive - for(int i=regions.length-1; i>=0; i--) { - - IStructuredDocumentRegion region = regions[i]; - if(region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { - if(getDirectiveName(region).equals("include")) { //$NON-NLS-1$ - ITextRegion fileValueRegion = getAttributeValueRegion(region, "file"); //$NON-NLS-1$ - m.setOffset(region.getStartOffset(fileValueRegion)); - m.setLength(fileValueRegion.getTextLength()); - break; - } - } - } - } -} |