⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 markupparsertest.java

📁 Wicket一个开发Java Web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO data beans组件使得它可以与任何持久层技术相结合。
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.wicket.markup;import java.io.IOException;import java.text.ParseException;import java.util.Locale;import junit.framework.Assert;import org.apache.wicket.WicketTestCase;import org.apache.wicket.markup.html.pages.PageExpiredErrorPage;import org.apache.wicket.markup.parser.XmlTag;import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;import org.apache.wicket.util.resource.IResourceStream;import org.apache.wicket.util.resource.ResourceStreamNotFoundException;import org.apache.wicket.util.resource.locator.IResourceStreamLocator;import org.apache.wicket.util.resource.locator.ResourceStreamLocator;import org.apache.wicket.util.string.StringValueConversionException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * Test cases for markup parser. *  * @author Jonathan Locke */public final class MarkupParserTest extends WicketTestCase{	private static final Logger log = LoggerFactory.getLogger(MarkupParserTest.class);	/**	 * Construct.	 * 	 * @param name	 */	public MarkupParserTest(String name)	{		super(name);	}	/**	 * 	 * @throws StringValueConversionException	 * @throws Exception	 */	public final void testTagParsing() throws Exception	{		final MarkupParser parser = new MarkupParser(			"This is a test <a componentName:id=\"a\" href=\"foo.html\"> <b componentName:id=\"b\">Bold!</b> "				+ "<img componentName:id=\"img\" width=9 height=10 src=\"foo\"> <marker componentName:id=\"marker\"/> </a>");		parser.setWicketNamespace("componentName");		final Markup markup = parser.parse();		final MarkupStream markupStream = new MarkupStream(markup);		final ComponentTag aOpen = (ComponentTag)markupStream.next();		log.info("", aOpen);		Assert.assertTrue(aOpen.getName().equals("a"));		Assert.assertEquals("foo.html", aOpen.getAttributes().getString("href"));		markupStream.next();		final ComponentTag boldOpen = (ComponentTag)markupStream.next();		log.info("", boldOpen);		Assert.assertTrue(boldOpen.getName().equals("b"));		Assert.assertEquals(XmlTag.OPEN, boldOpen.getType());		markupStream.next();		final ComponentTag boldClose = (ComponentTag)markupStream.next();		log.info("", boldClose);		Assert.assertTrue(boldClose.getName().equals("b"));		Assert.assertEquals(XmlTag.CLOSE, boldClose.getType());		markupStream.next();		final ComponentTag img = (ComponentTag)markupStream.next();		log.info("", img);		Assert.assertTrue(img.getName().equals("img"));		Assert.assertEquals(9, img.getAttributes().getInt("width"));		Assert.assertEquals(10, img.getAttributes().getInt("height"));		Assert.assertEquals(XmlTag.OPEN, img.getType());		markupStream.next();		final ComponentTag marker = (ComponentTag)markupStream.next();		log.info("", marker);		Assert.assertTrue(marker.getName().equals("marker"));		Assert.assertEquals(XmlTag.OPEN_CLOSE, marker.getType());		markupStream.next();		final ComponentTag aClose = (ComponentTag)markupStream.next();		log.info("", aClose);		Assert.assertTrue(aClose.getName().equals("a"));		Assert.assertNull(markupStream.next());	}	/**	 * 	 * @throws Exception	 */	public final void test() throws Exception	{		final MarkupParser parser = new MarkupParser(			"This is a test <a componentName:id=9> <b>bold</b> <b componentName:id=10></b></a> of the emergency broadcasting system");		parser.setWicketNamespace("componentName");		final Markup tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		log.info("tok(1)=" + tokens.get(1));		log.info("tok(2)=" + tokens.get(2));		log.info("tok(3)=" + tokens.get(3));		log.info("tok(4)=" + tokens.get(4));		log.info("tok(5)=" + tokens.get(5));		Assert.assertTrue(tokens.get(0).equals("This is a test "));		final ComponentTag a = (ComponentTag)tokens.get(1);		Assert.assertEquals(9, a.getAttributes().getInt("componentName:id"));		Assert.assertTrue(tokens.get(2).equals(" <b>bold</b> "));		final ComponentTag b = (ComponentTag)tokens.get(3);		Assert.assertEquals(10, b.getAttributes().getInt("componentName:id"));		final ComponentTag closeA = (ComponentTag)tokens.get(5);		Assert.assertEquals("a", closeA.getName());		Assert.assertTrue(tokens.get(6).equals(" of the emergency broadcasting system"));	}	/**	 * 	 * @throws Exception	 */	public final void testXhtmlDocument() throws Exception	{		final String docText = ""			+ "<?xml version='1.0' encoding='iso-8859-1' ?>"			+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"			+ "<html>" + "<head><title>Some Page</title></head>"			+ "<body><h1>XHTML Test</h1></body>" + "</html>";		final MarkupParser parser = new MarkupParser(docText);		parser.setWicketNamespace("componentName");		final Markup tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// without HtmlHeaderSectionHandler		Assert.assertEquals(docText.substring(44), tokens.get(0).toString());		// with HtmlHeaderSectionHandler		// Assert.assertEquals(docText.substring(44, 147),		// tokens.get(0).toString());	}	private MarkupResourceStream newMarkupResourceStream(final IResourceStreamLocator locator,		final Class c, final String style, final Locale locale, final String extension)	{		IResourceStream resource = locator.locate(c, c.getName().replace('.', '/'), style, locale,			extension);		MarkupResourceStream res = new MarkupResourceStream(resource, null, null);		return res;	}	/**	 * 	 * @throws ParseException	 * @throws ResourceStreamNotFoundException	 * @throws IOException	 */	public final void testFileDocument() throws ParseException, ResourceStreamNotFoundException,		IOException	{		IResourceStreamLocator locator = new ResourceStreamLocator();		MarkupResourceStream resource = newMarkupResourceStream(locator, getClass(), "1", null,			"html");		MarkupParser parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		Markup tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "2", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "3", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "4", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		// File from jar (URL resource)		resource = newMarkupResourceStream(locator, PageExpiredErrorPage.class, null, null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "5", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "6", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "7", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "8", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());		resource = newMarkupResourceStream(locator, getClass(), "9", null, "html");		parser = new MarkupParser(resource);		parser.setWicketNamespace("wcn");		tokens = parser.parse();		log.info("tok(0)=" + tokens.get(0));		// Assert.assertEquals(docText, tokens.get(0).toString());	}	/**	 * Test &lt;wicket: .	 * 	 * @throws ParseException	 * @throws ResourceStreamNotFoundException	 * @throws IOException	 */	public final void testWicketTag() throws ParseException, ResourceStreamNotFoundException,		IOException	{		WicketTagIdentifier.registerWellKnownTagName("body");		WicketTagIdentifier.registerWellKnownTagName("border");		WicketTagIdentifier.registerWellKnownTagName("panel");		new MarkupParser("<span wicket:id=\"test\"/>").parse();		new MarkupParser("<span wicket:id=\"test\">Body</span>").parse();		new MarkupParser("This is a test <span wicket:id=\"test\"/>").parse();		new MarkupParser("This is a test <span wicket:id=\"test\">Body</span>").parse();		new MarkupParser("<a wicket:id=\"[autolink]\" href=\"test.html\">Home</a>").parse();		new MarkupParser("<wicket:body/>").parse();		new MarkupParser("<wicket:border/>").parse();		new MarkupParser("<wicket:panel/>").parse();		try		{			new MarkupParser("<wicket:remove/>").parse();			assertTrue("Should have thrown an exception", false);		}		catch (MarkupException ex)		{			// ignore		}		Markup markup = new MarkupParser("<wicket:remove>  </wicket:remove>").parse();		assertEquals(0, markup.size());		markup = new MarkupParser("<wicket:remove> <span id=\"test\"/> </wicket:remove>").parse();		assertEquals(0, markup.size());		markup = new MarkupParser("<div><wicket:remove> <span id=\"test\"/> </wicket:remove></div>")			.parse();		assertEquals(2, markup.size());		assertEquals("<div>", ((RawMarkup)markup.get(0)).toString());		assertEquals("</div>", ((RawMarkup)markup.get(1)).toString());		try		{			new MarkupParser("<wicket:remove> <wicket:remove> </wicket:remove> </wicket:remove>")				.parse();			assertTrue(				"Should have thrown an exception: remove regions must not contain wicket-components",				false);		}		catch (MarkupException ex)		{			// ignore		}		new MarkupParser(			"<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"/>")			.parse();		new MarkupParser(			"<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\">    </wicket:component>")			.parse();		new MarkupParser(			"<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\">  <span wicket:id=\"msg\">hello world!</span></wicket:component>")			.parse();		new MarkupParser(			"<wicket:panel><div id=\"definitionsContentBox\"><span wicket:id=\"contentPanel\"/></div></wicket:panel>")			.parse();	}	/**	 * Test &lt;wicket: .	 * 	 * @throws ParseException	 * @throws ResourceStreamNotFoundException	 * @throws IOException	 */	public final void testDefaultWicketTag() throws ParseException,		ResourceStreamNotFoundException, IOException	{		MarkupParser parser = new MarkupParser("<image wcn:id=\"test\"/>");		parser.setWicketNamespace("wcn");		Markup markup = parser.parse();		assertEquals(1, markup.size());		markup = new MarkupParser("<image wicket:id=\"test\"/>").parse();		assertEquals(1, markup.size());		WicketTagIdentifier.registerWellKnownTagName("xxx");		parser = new MarkupParser("<wcn:xxx>  </wcn:xxx>");		parser.setWicketNamespace("wcn");		markup = parser.parse();		assertEquals(3, markup.size());	}	/**	 * Test &lt;wicket: .	 * 	 * @throws ParseException	 * @throws ResourceStreamNotFoundException	 * @throws IOException	 */	public final void testScript() throws ParseException, ResourceStreamNotFoundException,		IOException	{		final MarkupParser parser = new MarkupParser(			"<html wicket:id=\"test\"><script language=\"JavaScript\">... <x a> ...</script></html>");		Markup markup = parser.parse();		assertEquals(3, markup.size());		assertEquals("html", ((ComponentTag)markup.get(0)).getName());		assertEquals("html", ((ComponentTag)markup.get(2)).getName());		assertEquals(true, markup.get(1) instanceof RawMarkup);		assertEquals("<script language=\"JavaScript\">... <x a> ...</script>", ((RawMarkup)markup			.get(1)).toString());	}	/**	 * 	 * @throws IOException	 * @throws ResourceStreamNotFoundException	 */	public final void testBalancing() throws IOException, ResourceStreamNotFoundException	{		final MarkupParser parser = new MarkupParser(			"<span wicket:id=\"span\"><img wicket:id=\"img\"><span wicket:id=\"span2\"></span></span>");		// Note: <img> is one of these none-balanced HTML tags		Markup markup = parser.parse();		ComponentTag t = (ComponentTag)markup.get(0);		assertEquals(t.getId(), "span");		assertEquals(t.getPath(), null);		t = (ComponentTag)markup.get(1);		assertEquals(t.getId(), "img");		assertEquals(t.getPath(), "span");		t = (ComponentTag)markup.get(2);		assertEquals(t.getId(), "span2");		assertEquals(t.getPath(), "span");	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -