Author: yzhishko
Date: 2010-01-14 11:59:09 -0500 (Thu, 14 Jan 2010)
New Revision: 19755
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/WEB-INF/lib/primefaces-2.0.0.RC.jar
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/TaglibXMLUnformatedDTD_JBIDE5642.java
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/facelet/model/FaceletTaglibEntityRecognizer.java
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5642 - fixed bad formated DTD
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/facelet/model/FaceletTaglibEntityRecognizer.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/facelet/model/FaceletTaglibEntityRecognizer.java 2010-01-14
16:31:11 UTC (rev 19754)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/facelet/model/FaceletTaglibEntityRecognizer.java 2010-01-14
16:59:09 UTC (rev 19755)
@@ -7,30 +7,103 @@
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
+ ******************************************************************************/
package org.jboss.tools.jsf.facelet.model;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import org.jboss.tools.common.model.loaders.EntityRecognizer;
+import org.w3c.dom.Document;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
/**
* @author Viacheslav Kabanovich
*/
-public class FaceletTaglibEntityRecognizer implements EntityRecognizer,
FaceletTaglibConstants {
+public class FaceletTaglibEntityRecognizer implements EntityRecognizer,
+ FaceletTaglibConstants {
- public String getEntityName(String ext, String body) {
- if (body == null) return null;
- if (body.indexOf(DOC_PUBLICID) > 0) return ENT_FACELET_TAGLIB;
- if(is20(body)) return ENT_FACELET_TAGLIB_20;
- return null;
- }
+ public String getEntityName(String ext, String body) {
+ if (body == null)
+ return null;
+ String doctype = getUnforamtedDoctypeFromBody(body);
+ if (doctype != null && !doctype.equals("")) { //$NON-NLS-1$
+ doctype = checkDocType(doctype);
+ if (doctype.indexOf(DOC_PUBLICID) > -1)
+ return ENT_FACELET_TAGLIB;
+ }
+ if (is20(body))
+ return ENT_FACELET_TAGLIB_20;
+ return null;
+ }
- private boolean is20(String body) {
- int i = body.indexOf("<facelet-taglib"); //$NON-NLS-1$
- if(i < 0) return false;
- int j = body.indexOf(">", i); //$NON-NLS-1$
- if(j < 0) return false;
- String s = body.substring(i, j);
- return s.indexOf("version=\"2.0\"") > 0 &&
//$NON-NLS-1$
-
s.indexOf("\"http://java.sun.com/xml/ns/javaee\"") > 0;
//$NON-NLS-1$
- }
+ private boolean is20(String body) {
+ int i = body.indexOf("<facelet-taglib"); //$NON-NLS-1$
+ if (i < 0)
+ return false;
+ int j = body.indexOf(">", i); //$NON-NLS-1$
+ if (j < 0)
+ return false;
+ String s = body.substring(i, j+1);
+ return s.indexOf("version=\"2.0\"") > 0 &&
//$NON-NLS-1$
+
s.indexOf("\"http://java.sun.com/xml/ns/javaee\"") > 0;
//$NON-NLS-1$
+ }
+
+ private String checkDocType(String docTypeString) {
+ final StringBuffer docTypeBuffer = new StringBuffer(""); //$NON-NLS-1$
+ Reader xml = new StringReader(docTypeString + "<root></root>");
//$NON-NLS-1$
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setNamespaceAware(true);
+ dbf.setValidating(true);
+ try {
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ db.setErrorHandler(new ErrorHandler() {
+ public void warning(SAXParseException exception)
+ throws SAXException {
+ }
+
+ public void fatalError(SAXParseException exception)
+ throws SAXException {
+ }
+
+ public void error(SAXParseException exception)
+ throws SAXException {
+ }
+ });
+ db.setEntityResolver(new EntityResolver() {
+ public InputSource resolveEntity(String publicId,
+ String systemId) throws SAXException, IOException {
+ docTypeBuffer.append(publicId);
+ return new InputSource(new StringReader("")); //$NON-NLS-1$
+ }
+ });
+ @SuppressWarnings("unused")
+ Document dom = db.parse(new InputSource(xml));
+ } catch (Exception e) {
+ return docTypeBuffer.toString();
+ } finally {
+ try {
+ xml.close();
+ } catch (IOException e) {
+ }
+ }
+ return docTypeBuffer.toString();
+ }
+
+ private String getUnforamtedDoctypeFromBody(String body) {
+ int i = body.indexOf("<!DOCTYPE"); //$NON-NLS-1$
+ if (i < 0)
+ return null;
+ int j = body.indexOf(">", i); //$NON-NLS-1$
+ if (j < 0)
+ return null;
+ return body.substring(i, j+1);
+ }
+
}
Modified: trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF
===================================================================
--- trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF 2010-01-14
16:31:11 UTC (rev 19754)
+++ trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/META-INF/MANIFEST.MF 2010-01-14
16:59:09 UTC (rev 19755)
@@ -28,7 +28,8 @@
org.jboss.tools.common.model.ui;bundle-version="2.0.0",
org.eclipse.wst.xml.ui;bundle-version="1.1.0",
org.eclipse.jdt.ui;bundle-version="3.5.0",
- org.jboss.tools.common.ui
+ org.jboss.tools.common.ui,
+ org.jboss.tools.jst.web.ui;bundle-version="2.0.0"
Bundle-ClassPath: jsf-test.jar
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/WEB-INF/lib/primefaces-2.0.0.RC.jar
===================================================================
(Binary files differ)
Property changes on:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/resources/jsfTest/WebContent/WEB-INF/lib/primefaces-2.0.0.RC.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java 2010-01-14
16:31:11 UTC (rev 19754)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/JsfAllTests.java 2010-01-14
16:59:09 UTC (rev 19755)
@@ -68,6 +68,7 @@
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE4510Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE4534Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.OpenOnJsf20Test_JBIDE5382;
+import org.jboss.tools.jsf.vpe.jsf.test.jbide.TaglibXMLUnformatedDTD_JBIDE5642;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.TestFViewLocaleAttribute_JBIDE5218;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE675Test;
import org.jboss.tools.jsf.vpe.jsf.test.jbide.JBIDE788Test;
@@ -186,7 +187,8 @@
suite.addTestSuite(NullPointerWithStyleProperty_JBIDE5193.class);
suite.addTestSuite(TestFViewLocaleAttribute_JBIDE5218.class);
suite.addTestSuite(TestOpenOnForXhtmlFiles_JBIDE5577.class);
-
+ suite.addTestSuite(TaglibXMLUnformatedDTD_JBIDE5642.class);
+
// $JUnit-END$
// added by Max Areshkau
// add here projects which should be imported for junit tests
Added:
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/TaglibXMLUnformatedDTD_JBIDE5642.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/TaglibXMLUnformatedDTD_JBIDE5642.java
(rev 0)
+++
trunk/jsf/tests/org.jboss.tools.jsf.vpe.jsf.test/src/org/jboss/tools/jsf/vpe/jsf/test/jbide/TaglibXMLUnformatedDTD_JBIDE5642.java 2010-01-14
16:59:09 UTC (rev 19755)
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2010 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.jsf.vpe.jsf.test.jbide;
+
+import java.util.StringTokenizer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.jst.web.ui.navigator.WebProjectsNavigator;
+import org.jboss.tools.vpe.ui.test.TestUtil;
+import org.jboss.tools.vpe.ui.test.VpeTest;
+
+/**
+ *
+ * @author yzhishko
+ *
+ */
+
+public class TaglibXMLUnformatedDTD_JBIDE5642 extends VpeTest {
+
+ private static final String WEB_PROJECTS_VIEW_ID =
"org.jboss.tools.jst.web.ui.navigator.WebProjectsView"; //$NON-NLS-1$
+ private static final String PACKAGE_EXPLORER_VIEW_ID =
"org.eclipse.jdt.ui.PackageExplorer"; //$NON-NLS-1$
+ private static final String LIB_PATH = "jsfTest/Tag Libraries/";
//$NON-NLS-1$
+ private static final String LIB_NAME_I = "primefaces-i.taglib.xml -
primefaces-2.0.0.RC.jar"; //$NON-NLS-1$
+ private static final String LIB_NAME_P = "primefaces-p.taglib.xml -
primefaces-2.0.0.RC.jar"; //$NON-NLS-1$
+
+ private IViewPart webProjectsView;
+
+ public TaglibXMLUnformatedDTD_JBIDE5642(String name) {
+ super(name);
+ }
+
+ public void testTaglibXMLUnformatedDTD() throws Throwable {
+ webProjectsView = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().showView(WEB_PROJECTS_VIEW_ID);
+ assertNotNull("Web Projects view is not available", webProjectsView);
//$NON-NLS-1$
+ TestUtil.delay(2000);
+ TestUtil.waitForJobs();
+
+ WebProjectsNavigator projectsNavigator = (WebProjectsNavigator) webProjectsView;
+ TreeViewer treeViewer = projectsNavigator.getViewer();
+ assertNotNull(treeViewer);
+
+ Object testLibI = findElementByPath(LIB_PATH + LIB_NAME_I, treeViewer);
+ assertNotNull("The tag library " + LIB_NAME_I + " was not found",
//$NON-NLS-1$ //$NON-NLS-2$
+ testLibI);
+
+ Object testLibP = findElementByPath(LIB_PATH + LIB_NAME_P, treeViewer);
+ assertNotNull("The tag library " + LIB_NAME_P + " was not found",
//$NON-NLS-1$ //$NON-NLS-2$
+ testLibP);
+ }
+
+ private Object findElementByPath(String path, final TreeViewer searchTreeViwer) {
+ Tree searchTree = searchTreeViwer.getTree();
+ if (searchTree == null || path == null) {
+ return null;
+ }
+ StringTokenizer tokenizer = new StringTokenizer(path, "/", false);
//$NON-NLS-1$
+ TreeItem childItem = getItemByName(tokenizer.nextToken(), searchTree);
+ if (childItem != null) {
+ searchTreeViwer.expandToLevel(childItem.getData(), 1);
+ } else {
+ return null;
+ }
+ while (tokenizer.hasMoreTokens()) {
+ childItem = getItemByName(tokenizer.nextToken(), childItem);
+ if (childItem != null) {
+ searchTreeViwer.expandToLevel(childItem.getData(), 1);
+ } else {
+ return null;
+ }
+ }
+ return childItem.getData();
+ }
+
+ private TreeItem getItemByName(String elementName, Widget rootItem) {
+ if (rootItem == null || elementName == null) {
+ return null;
+ }
+ TreeItem[] children = null;
+ if (rootItem instanceof Tree) {
+ children = ((Tree) rootItem).getItems();
+ } else if (rootItem instanceof TreeItem) {
+ children = ((TreeItem) rootItem).getItems();
+ }
+ if (children == null) {
+ return null;
+ }
+ for (int i = 0; i < children.length; i++) {
+ if (elementName.equals(children[i].getText())) {
+ return children[i];
+ }
+ }
+ return null;
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .hideView(webProjectsView);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .showView(PACKAGE_EXPLORER_VIEW_ID);
+ super.tearDown();
+ }
+
+}