[jbosstools-commits] JBoss Tools SVN: r35850 - in trunk: jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930 and 2 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Thu Oct 20 11:44:12 EDT 2011
Author: vrubezhny
Date: 2011-10-20 11:44:11 -0400 (Thu, 20 Oct 2011)
New Revision: 35850
Added:
trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/
trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/elInTagBody.jsp
trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JSPELHyperlinkTestForELInTagBodyTest.java
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JsfTextExtAllTests.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
Log:
JBIDE-9930 OpenOns for ELs don't work in text nodes of JSP
Issue is fixed. JUnit test is created
Added: trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/elInTagBody.jsp
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/elInTagBody.jsp (rev 0)
+++ trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/elInTagBody.jsp 2011-10-20 15:44:11 UTC (rev 35850)
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<html>
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <f:view>
+ #{bean1.property1}
+ </f:view>
+ </body>
+</html>
Property changes on: trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/projects/jsfHyperlinkTests/WebContent/JBIDE-9930/elInTagBody.jsp
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JSPELHyperlinkTestForELInTagBodyTest.java
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JSPELHyperlinkTestForELInTagBodyTest.java (rev 0)
+++ trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JSPELHyperlinkTestForELInTagBodyTest.java 2011-10-20 15:44:11 UTC (rev 35850)
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.jsf.text.ext.test;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.FindReplaceDocumentAdapter;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.jst.jsp.jspeditor.JSPMultiPageEditor;
+import org.jboss.tools.jst.text.ext.hyperlink.ELHyperlinkDetector;
+import org.jboss.tools.test.util.WorkbenchUtils;
+
+/**
+ * The JUnit test cases for JBIDE-5385 issue
+ *
+ * @author Victor Rubezhny
+ */
+public class JSPELHyperlinkTestForELInTagBodyTest extends TestCase {
+ private static final String PROJECT_NAME = "jsfHyperlinkTests";
+ private static final String PAGE_NAME = PROJECT_NAME+"/WebContent/JBIDE-9930/elInTagBody.jsp";
+ private static final String[] TEXT_TO_FIND = new String [] {"bean1", "bean1.property1"};
+ private static final String[] RESULT_EDITORS = new String [] {"Bean1.java", "Bean1.java"};
+
+ public IProject project = null;
+ public String naturesCheckProperty;
+ private ELHyperlinkDetector elHyperlinkDetector = new ELHyperlinkDetector();
+
+
+ protected void setUp() {
+ naturesCheckProperty = System.getProperty("org.jboss.tools.vpe.ENABLE_PROJECT_NATURES_CHECKER"); //$NON-NLS-1$ //$NON-NLS-2$
+ System.setProperty("org.jboss.tools.vpe.ENABLE_PROJECT_NATURES_CHECKER", "false"); //$NON-NLS-1$ //$NON-NLS-2$
+ project = ResourcesPlugin.getWorkspace().getRoot().getProject(
+ PROJECT_NAME);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
+ }
+
+ protected void tearDown() {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
+ System.setProperty("org.jboss.tools.vpe.ENABLE_PROJECT_NATURES_CHECKER", naturesCheckProperty == null ? "null" : naturesCheckProperty); //$NON-NLS-1$
+ }
+
+ public JSPELHyperlinkTestForELInTagBodyTest() {
+ super("JSP EL In Tag Body OpenOn test");
+ }
+
+
+ public void testJSPELHyperlinkTestForELInTagBody() throws PartInitException, BadLocationException {
+ try {
+ for (int i = 0; i < TEXT_TO_FIND.length; i++) {
+ doJSPELHyperlinkTestForELInTagBodyTest(TEXT_TO_FIND[i], RESULT_EDITORS[i]);
+ }
+ } finally {
+ WorkbenchUtils.closeAllEditors();
+ }
+ }
+
+ private void doJSPELHyperlinkTestForELInTagBodyTest(String template, String editorName) throws BadLocationException {
+ IEditorPart editor = WorkbenchUtils.openEditor(PAGE_NAME);
+ assertTrue(editor instanceof JSPMultiPageEditor);
+ JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor;
+ ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer();
+ assertNotNull("Viewer couldn't be found for " + PAGE_NAME, viewer);
+ IDocument document = viewer.getDocument();
+ IRegion reg = new FindReplaceDocumentAdapter(document).find(0,
+ template, true, true, false, false);
+ assertNotNull("Text: "+ template +" not found",reg);
+
+ IHyperlink[] links = elHyperlinkDetector.detectHyperlinks(viewer, new Region(reg.getOffset() + reg.getLength() - 1, 0), true);
+
+ assertNotNull("Hyperlinks for EL:#{" + template + "} are not found",links);
+
+ assertTrue("Hyperlinks for EL: #{" + template + "} are not found",links.length!=0);
+
+ boolean found = false;
+ for(IHyperlink link : links){
+ assertNotNull(link.toString());
+
+ link.open();
+
+ IEditorPart resultEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ if(editorName.equals(resultEditor.getTitle())){
+ found = true;
+ return;
+ }
+ }
+ assertTrue("OpenOn have not opened "+editorName+" editor",found);
+ }
+}
\ No newline at end of file
Property changes on: trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JSPELHyperlinkTestForELInTagBodyTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JsfTextExtAllTests.java
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JsfTextExtAllTests.java 2011-10-20 15:23:49 UTC (rev 35849)
+++ trunk/jsf/tests/org.jboss.tools.jsf.text.ext.test/src/org/jboss/tools/jsf/text/ext/test/JsfTextExtAllTests.java 2011-10-20 15:44:11 UTC (rev 35850)
@@ -40,6 +40,12 @@
"org.jboss.tools.jsf.text.ext.test",
new String[]{"projects/jsfHyperlinkTests"},
new String[]{"jsfHyperlinkTests"}));
+
+ suite.addTest(new ProjectImportTestSetup(new TestSuite(
+ JSPELHyperlinkTestForELInTagBodyTest.class),
+ "org.jboss.tools.jsf.text.ext.test",
+ new String[]{"projects/jsfHyperlinkTests"},
+ new String[]{"jsfHyperlinkTests"}));
return suite;
}
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2011-10-20 15:23:49 UTC (rev 35849)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2011-10-20 15:44:11 UTC (rev 35850)
@@ -435,11 +435,6 @@
}
private void fillContextForNode(IDocument document, IDOMNode node, ELContext context, List<String> parents) {
- if (context instanceof JspContextImpl && !(context instanceof FaceletPageContextImpl) && !(node instanceof IDOMElement)) {
- // There is no any useful info for JSP in text nodes
- return;
- }
-
if (context instanceof XmlContextImpl) {
XmlContextImpl xmlContext = (XmlContextImpl)context;
fillElReferencesForNode(document, node, xmlContext);
@@ -487,39 +482,51 @@
}
private static void fillElReferencesForNode(IDocument document, IDOMNode node, XmlContextImpl context) {
- if(Node.ELEMENT_NODE == node.getNodeType() || Node.TEXT_NODE == node.getNodeType()) {
- IStructuredDocumentRegion regionNode = node.getFirstStructuredDocumentRegion();
- if (regionNode == null)
- return;
- ITextRegionList regions = regionNode.getRegions();
- for(int i=0; i<regions.size(); i++) {
- ITextRegion region = regions.get(i);
- if(region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE || region.getType() == DOMRegionContext.XML_CONTENT) {
- String text = regionNode.getFullText(region);
- if(text.indexOf('{')>-1 && (text.indexOf("#{") > -1 || text.indexOf("${") > -1)) { //$NON-NLS-1$
- int offset = regionNode.getStartOffset() + region.getStart();
- ELParser parser = ELParserUtil.getJbossFactory().createParser();
- ELModel model = parser.parse(text);
- List<ELInstance> is = model.getInstances();
- ELReference elReference = new ValidationELReference();
- elReference.setResource(context.getResource());
- elReference.setEl(is);
- elReference.setLength(text.length());
- elReference.setStartPosition(offset);
- try {
- if(Node.TEXT_NODE == node.getNodeType()) {
- if(is.size()==1) {
- elReference.setLineNumber(document.getLineOfOffset(elReference.getStartPossitionOfFirstEL()) + 1);
- }
- } else {
- elReference.setLineNumber(document.getLineOfOffset(offset) + 1);
+ if(Node.ELEMENT_NODE != node.getNodeType() && Node.TEXT_NODE != node.getNodeType())
+ return;
+
+ IStructuredDocumentRegion regionNode = node.getFirstStructuredDocumentRegion();
+ if (regionNode == null)
+ return;
+
+ IStructuredDocumentRegion lastRegionNode = node.getLastStructuredDocumentRegion();
+ for (; regionNode != null && regionNode != lastRegionNode; regionNode = regionNode.getNext()) {
+ fillElReferencesForRegionNode(document, node, regionNode, context);
+ }
+ if (lastRegionNode != null) {
+ fillElReferencesForRegionNode(document, node, lastRegionNode, context);
+ }
+ }
+
+ private static void fillElReferencesForRegionNode(IDocument document, IDOMNode node, IStructuredDocumentRegion regionNode, XmlContextImpl context) {
+ ITextRegionList regions = regionNode.getRegions();
+ for(int i=0; i<regions.size(); i++) {
+ ITextRegion region = regions.get(i);
+ if(region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE || region.getType() == DOMRegionContext.XML_CONTENT) {
+ String text = regionNode.getFullText(region);
+ if(text.indexOf('{')>-1 && (text.indexOf("#{") > -1 || text.indexOf("${") > -1)) { //$NON-NLS-1$
+ int offset = regionNode.getStartOffset() + region.getStart();
+ ELParser parser = ELParserUtil.getJbossFactory().createParser();
+ ELModel model = parser.parse(text);
+ List<ELInstance> is = model.getInstances();
+ ELReference elReference = new ValidationELReference();
+ elReference.setResource(context.getResource());
+ elReference.setEl(is);
+ elReference.setLength(text.length());
+ elReference.setStartPosition(offset);
+ try {
+ if(Node.TEXT_NODE == node.getNodeType()) {
+ if(is.size()==1) {
+ elReference.setLineNumber(document.getLineOfOffset(elReference.getStartPossitionOfFirstEL()) + 1);
}
- } catch (BadLocationException e) {
- WebKbPlugin.getDefault().logError(e);
+ } else {
+ elReference.setLineNumber(document.getLineOfOffset(offset) + 1);
}
- elReference.setSyntaxErrors(model.getSyntaxErrors());
- context.addELReference(elReference);
+ } catch (BadLocationException e) {
+ WebKbPlugin.getDefault().logError(e);
}
+ elReference.setSyntaxErrors(model.getSyntaxErrors());
+ context.addELReference(elReference);
}
}
}
More information about the jbosstools-commits
mailing list