package org.jboss.tools.jsf.text.ext.test; import junit.framework.TestCase; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; 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.ITextSelection; 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.IWorkbench; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.jboss.tools.common.model.ui.editor.EditorPartWrapper; import org.jboss.tools.common.model.ui.editors.multipage.DefaultMultipageEditor; import org.jboss.tools.common.text.ext.hyperlink.HyperlinkDetector; import org.jboss.tools.jsf.jsf2.bean.model.JSF2ProjectFactory; import org.jboss.tools.jsf.text.ext.hyperlink.JsfJSPTagNameHyperlinkDetector; import org.jboss.tools.jsf.text.ext.hyperlink.TLDTagHyperlink; import org.jboss.tools.jst.web.ui.internal.editor.jspeditor.JSPMultiPageEditor; import org.jboss.tools.test.util.JobUtils; import org.jboss.tools.test.util.WorkbenchUtils; public class OpenOnsTest extends TestCase { public static final String OPENON_TEST_PROJECT = "HiperlinksTestProject"; public IProject project = null; protected void setUp() { project = ResourcesPlugin.getWorkspace().getRoot().getProject( OPENON_TEST_PROJECT); PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false); try { project.build(IncrementalProjectBuilder.FULL_BUILD, null); } catch (CoreException e) { throw new RuntimeException(e); } IWorkbench workbench = PlatformUI.getWorkbench(); } protected void tearDown() { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false); } public OpenOnsTest() { super("styleClass OpenOn tests"); } public static final String WEB_XML_FILE_PATH = OPENON_TEST_PROJECT+"/WebContent/WEB-INF/web.xml"; public void testFilterNameOpenOn() throws PartInitException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(WEB_XML_FILE_PATH); editor = ((EditorPartWrapper)editor).getEditor(); DefaultMultipageEditor xmlMultyPageEditor = (DefaultMultipageEditor) editor; xmlMultyPageEditor.selectPageByName("Source"); ISourceViewer viewer = xmlMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = viewer.getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "Filter1", true, true, false, false); reg = new FindReplaceDocumentAdapter(document).find(reg.getOffset()+reg.getLength()+1, "Filter1", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); ITextSelection selection = (ITextSelection)viewer.getSelectionProvider().getSelection(); assertEquals("<filter-name>", selection.getText()); } public void testRoleNameOpenOn() throws PartInitException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(WEB_XML_FILE_PATH); editor = ((EditorPartWrapper)editor).getEditor(); DefaultMultipageEditor xmlMultyPageEditor = (DefaultMultipageEditor) editor; xmlMultyPageEditor.selectPageByName("Source"); ISourceViewer viewer = xmlMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = viewer.getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "Designer", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); ITextSelection selection = (ITextSelection)viewer.getSelectionProvider().getSelection(); assertEquals("<role-name>", selection.getText()); } public void testServletNameOpenOn() throws PartInitException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(WEB_XML_FILE_PATH); editor = ((EditorPartWrapper)editor).getEditor(); DefaultMultipageEditor xmlMultyPageEditor = (DefaultMultipageEditor) editor; xmlMultyPageEditor.selectPageByName("Source"); ISourceViewer viewer = xmlMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = viewer.getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "Faces Servlet", true, true, false, false); reg = new FindReplaceDocumentAdapter(document).find(reg.getOffset()+reg.getLength()+1, "Faces Servlet", true, true, false, false); reg = new FindReplaceDocumentAdapter(document).find(reg.getOffset()+reg.getLength()+1, "Faces Servlet", true, true, false, false); reg = new FindReplaceDocumentAdapter(document).find(reg.getOffset()+reg.getLength()+1, "Faces Servlet", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); ITextSelection selection = (ITextSelection)viewer.getSelectionProvider().getSelection(); assertEquals("<servlet-name>", selection.getText()); } public static final String TAGLIB_URI_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/tldUriHyperlinkTests.jsp"; public void testTaglibUriFromJarOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_URI_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "jsf/core", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); System.out.println(fileName); assertTrue("jsf_core.tld".equals(fileName)); } public static final String TAGLIB_URI_JSP_ROOT_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/jspTagsHyperlinkTests.jsp"; public void testTaglibUriFromJarinJspRootOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_URI_JSP_ROOT_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "jsf/core", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); System.out.println(fileName); assertTrue("jsf_core.tld".equals(fileName)); } public static final String STYLE_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/styleHyperlinkTests.jsp"; public static final String CSS1_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/stylesheet/style1.css"; public static final String CSS2_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/stylesheet/style2.css"; public void testStylesheetOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(STYLE_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "stylesheet/style1.css", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("style1.css".equals(fileName)); } private static final int DELAY_FOR_LINK_OPEN = 750; public void testStyleClassOpenOns() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(STYLE_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "style-class9\"", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("styleHyperlinkTests.jsp".equals(fileName)); reg = new FindReplaceDocumentAdapter(document).find(0, "style-class3", true, true, false, false); links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); fileName = editor.getEditorInput().getName(); assertTrue("style1.css".equals(fileName)); reg = new FindReplaceDocumentAdapter(document).find(0, "style-class6", true, true, false, false); links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); fileName = editor.getEditorInput().getName(); assertTrue("style2.css".equals(fileName)); } public static final String CLASS_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/classHyperlinkTests.jsp"; public static final String CLASS1_TEST_FILE = OPENON_TEST_PROJECT + "/JavaSource/org/jboss/test/ChangeListenerInstance.java"; public void testClassNameOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(CLASS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "org.jboss.tools.test.ChangeListenerInstance", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("ChangeListenerInstance.java".equals(fileName)); } public void testTaglibTagNameOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(CLASS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "view", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); System.out.println(links[0].getClass().getName()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("jsf_core.tld".equals(fileName)); } public static final String USE_BEAN_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/beanHyperlinkTests.jsp"; public void testUseBeanClassOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(USE_BEAN_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "b1", true, true, false, false); reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(reg.getOffset()+reg.getLength(), "b1", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); ITextSelection selection = (ITextSelection)viewer.getSelectionProvider().getSelection(); assertEquals("<jsp:useBean id=\"b1\" class=\"org.jboss.tools.test.TestBean1\">", selection.getText()); reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "org.jboss.tools.test.TestBean1", true, true, false, false); links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("TestBean1.java".equals(fileName)); } public void testGetBeanPropertyOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(USE_BEAN_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "property1", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("TestBean1.java".equals(fileName)); } public void testSetBeanPropertyOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(USE_BEAN_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "property2", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("TestBean1.java".equals(fileName)); } public static final String FORWARD_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/forwardHiperlinkTests.jsp"; public void testJspForwardOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(FORWARD_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(viewer.getDocument()).find(0, "forward/forwardHiperlinkPage2Tests.jsp", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("forwardHiperlinkPage2Tests.jsp".equals(fileName)); reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "forwardHiperlinkPage1Tests.jsp", true, true, false, false); links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); fileName = editor.getEditorInput().getName(); assertTrue("forwardHiperlinkPage1Tests.jsp".equals(fileName)); } public static final String INCLUDE_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/includeHiperlinkTests.jsp"; public void testJspIncludeOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(INCLUDE_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "include/includeHiperlinkPage2Tests.jsp", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("includeHiperlinkPage2Tests.jsp".equals(fileName)); reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "includeHiperlinkPage1Tests.jsp", true, true, false, false); links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); fileName = editor.getEditorInput().getName(); assertTrue("includeHiperlinkPage1Tests.jsp".equals(fileName)); } public static final String FACELETS_XHTML_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/faceletsHiperlinkTests.xhtml"; public void testJspXmlElementNameOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(FACELETS_XHTML_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "message", true, true, false, false); IHyperlink[] links = new JsfJSPTagNameHyperlinkDetector().detectHyperlinks(viewer, reg, false); //IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("html_basic.tld".equals(fileName)); } public static final String JSP_XMLNS_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/jspXmlFormatTests.jsp"; public void testJspXmlnsNameOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(FACELETS_XHTML_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "http://java.sun.com/jsf/html", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("html_basic.tld".equals(fileName)); } public static final String TLD_ATTRIBUTE_NAME_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/WEB-INF/tldAttributeNameOpenOnTests.tld"; public void testTldAttributeNameOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TLD_ATTRIBUTE_NAME_TEST_FILE); assertTrue(editor instanceof DefaultMultipageEditor); DefaultMultipageEditor tldEditor = (DefaultMultipageEditor) editor; tldEditor.selectPageByName("Source"); ISourceViewer viewer = tldEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(tldEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "attr1", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); ITextSelection selection = (ITextSelection)viewer.getSelectionProvider().getSelection(); assertEquals("<name>", selection.getText()); } public static final String FACELET_TAGLIB_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/WEB-INF/faceletTaglibOpenOnTests.taglib.xml"; public void testFaceletTaglibTypeOpenOn() throws CoreException, BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(FACELET_TAGLIB_TEST_FILE); editor = ((EditorPartWrapper)editor).getEditor(); DefaultMultipageEditor faceletEditor = (DefaultMultipageEditor) editor; faceletEditor.selectPageByName("Source"); ISourceViewer viewer = faceletEditor.getSourceEditor().getTextViewer(); // find a region that matches <type>java.lang.String</type> IRegion reg = new FindReplaceDocumentAdapter(faceletEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "java.lang.String", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length != 0); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String title = editor.getTitle(); assertTrue("java.lang.String declaration should be opened, but \'" + title + "\' is actially openned in active editor", title.startsWith("String.")); } public static final String XHTML_STYLE_CLASS_NAME_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/xhtmlStyleClassHiperlinkTests.xhtml"; public void testFacletsStyleClassOpenOnJbide2890() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(XHTML_STYLE_CLASS_NAME_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IRegion reg = new FindReplaceDocumentAdapter(jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument()).find(0, "style-class1", true, true, false, false); IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, reg, false); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("style1.css".equals(fileName)); } public static final String TAGLIB_TAGS_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/tldTagsHyperlinkTests.jsp"; public void testTaglibAttributeFromJarOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_TAGS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "value", true, true, false, false); IHyperlink[] links = new JsfJSPTagNameHyperlinkDetector().detectHyperlinks(viewer, reg, true); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("html_basic.tld".equals(fileName)); assertModelObjectSelection(links[0], "value"); } public void testTaglibTagsFromJarOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_TAGS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "h:outputText", true, true, false, false); IHyperlink[] links = new JsfJSPTagNameHyperlinkDetector().detectHyperlinks(viewer, reg, true); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("html_basic.tld".equals(fileName)); try { assertModelObjectSelection(links[0], "outputText"); } finally { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeEditor(editor, false); } } public void testTaglibTagsInWebInfOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_TAGS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "m:myTag", true, true, false, false); IHyperlink[] links = new JsfJSPTagNameHyperlinkDetector().detectHyperlinks(viewer, reg, true); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("myLibrary.tld".equals(fileName)); assertModelObjectSelection(links[0], "myTag"); } public void testTaglibAttributeInWebInfOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(TAGLIB_TAGS_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "myattr", true, true, false, false); IHyperlink[] links = new JsfJSPTagNameHyperlinkDetector().detectHyperlinks(viewer, reg, true); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); String fileName = editor.getEditorInput().getName(); assertTrue("myLibrary.tld".equals(fileName)); assertModelObjectSelection(links[0], "myattr"); } public static final String CONVERTER_TEST_FILE = OPENON_TEST_PROJECT + "/WebContent/converterHiperlinkTest.jsp"; public void testConverterTagOpenOn() throws BadLocationException { IEditorPart editor = WorkbenchUtils.openEditor(CONVERTER_TEST_FILE); assertTrue(editor instanceof JSPMultiPageEditor); JSPMultiPageEditor jspMultyPageEditor = (JSPMultiPageEditor) editor; ISourceViewer viewer = jspMultyPageEditor.getSourceEditor().getTextViewer(); IDocument document = jspMultyPageEditor.getSourceEditor().getTextViewer().getDocument(); IRegion reg = new FindReplaceDocumentAdapter(document).find(0, "testConverter", true, true, false, false); JSF2ProjectFactory.getJSF2Project(ResourcesPlugin.getWorkspace().getRoot().getProject(OPENON_TEST_PROJECT),true); JobUtils.waitForIdle(); IHyperlink[] links = new HyperlinkDetector().detectHyperlinks(viewer, reg, true); assertNotNull(links); assertTrue(links.length!=0); //assertNotNull(links[0].getHyperlinkText()); assertNotNull(links[0].toString()); links[0].open(); editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); // TODO: add assert for opened faces-config.xml editor with converter selected } void assertModelObjectSelection(IHyperlink link, String name) { assertTrue(link instanceof TLDTagHyperlink); TLDTagHyperlink tagLink = (TLDTagHyperlink)link; String objectName = tagLink.getObjectName(); int i = objectName.lastIndexOf(":"); if(i > 0) objectName = objectName.substring(i + 1).trim(); assertEquals(name, objectName); } }