Author: jboynes Date: Fri Aug 9 06:21:56 2013 New Revision: 1512148 URL: http://svn.apache.org/r1512148 Log: Start adding model for loading complete TLDs using Digester. This will unify Jasper's model, which is mostly complete but uses a separate DOM model, and Catalina's, which is Digester based but only handles listener entries.
Basic top-level entries are handled but not child elements for tags etc Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java (with props) tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java (with props) tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/ tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java (with props) Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,249 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import java.util.List; + +/** + * + */ +public class Tag { + private String name; + private String tagClass; + private String teiClass; + private String bodyContent; + private String displayName; + private String smallIcon; + private String largeIcon; + private String info; + private boolean dynamicAttributes; + private List<Variable> variables; + private List<Attribute> attributes; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTagClass() { + return tagClass; + } + + public void setTagClass(String tagClass) { + this.tagClass = tagClass; + } + + public String getTeiClass() { + return teiClass; + } + + public void setTeiClass(String teiClass) { + this.teiClass = teiClass; + } + + public String getBodyContent() { + return bodyContent; + } + + public void setBodyContent(String bodyContent) { + this.bodyContent = bodyContent; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getSmallIcon() { + return smallIcon; + } + + public void setSmallIcon(String smallIcon) { + this.smallIcon = smallIcon; + } + + public String getLargeIcon() { + return largeIcon; + } + + public void setLargeIcon(String largeIcon) { + this.largeIcon = largeIcon; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public boolean hasDynamicAttributes() { + return dynamicAttributes; + } + + public void setDynamicAttributes(boolean dynamicAttributes) { + this.dynamicAttributes = dynamicAttributes; + } + + public static class Variable { + private String nameGiven; + private String nameFromAttribute; + private String className; + private boolean declare; + private int scope; + + public String getNameGiven() { + return nameGiven; + } + + public void setNameGiven(String nameGiven) { + this.nameGiven = nameGiven; + } + + public String getNameFromAttribute() { + return nameFromAttribute; + } + + public void setNameFromAttribute(String nameFromAttribute) { + this.nameFromAttribute = nameFromAttribute; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public boolean isDeclare() { + return declare; + } + + public void setDeclare(boolean declare) { + this.declare = declare; + } + + public int getScope() { + return scope; + } + + public void setScope(int scope) { + this.scope = scope; + } + } + + public static class Attribute { + private String name; + private boolean required; + private String type; + private boolean requestTime; + private boolean fragment; + private String description; + private boolean deferredValue; + private boolean deferredMethod; + private String expectedTypeName; + private String methodSignature; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isRequired() { + return required; + } + + public void setRequired(boolean required) { + this.required = required; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean isRequestTime() { + return requestTime; + } + + public void setRequestTime(boolean requestTime) { + this.requestTime = requestTime; + } + + public boolean isFragment() { + return fragment; + } + + public void setFragment(boolean fragment) { + this.fragment = fragment; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isDeferredValue() { + return deferredValue; + } + + public void setDeferredValue(boolean deferredValue) { + this.deferredValue = deferredValue; + } + + public boolean isDeferredMethod() { + return deferredMethod; + } + + public void setDeferredMethod(boolean deferredMethod) { + this.deferredMethod = deferredMethod; + } + + public String getExpectedTypeName() { + return expectedTypeName; + } + + public void setExpectedTypeName(String expectedTypeName) { + this.expectedTypeName = expectedTypeName; + } + + public String getMethodSignature() { + return methodSignature; + } + + public void setMethodSignature(String methodSignature) { + this.methodSignature = methodSignature; + } + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Tag.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,77 @@ +/* + * 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.tomcat.util.descriptor.tld; + +/** + * + */ +public class TagFile { + private String name; + private String path; + private String displayName; + private String smallIcon; + private String largeIcon; + private String info; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getSmallIcon() { + return smallIcon; + } + + public void setSmallIcon(String smallIcon) { + this.smallIcon = smallIcon; + } + + public String getLargeIcon() { + return largeIcon; + } + + public void setLargeIcon(String largeIcon) { + this.largeIcon = largeIcon; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TagFile.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,124 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.jsp.tagext.FunctionInfo; + +/** + * Common representation of a Tag Library Descriptor (TLD) XML file. + * <p/> + * This stores the raw result of parsing an TLD XML file, flattening different + * version of the descriptors to a common format. This is different to a + * TagLibraryInfo instance that would be passed to a tag validator in that it + * does not contain the uri and prefix values used by a JSP to reference this + * tag library. + */ +public class TaglibXml { + private String tlibVersion; + private String jspVersion; + private String shortName; + private String uri; + private String info; + private Validator validator; + private List<Tag> tags; + private List<String> listeners; + private List<FunctionInfo> functions; + + public String getTlibVersion() { + return tlibVersion; + } + + public void setTlibVersion(String tlibVersion) { + this.tlibVersion = tlibVersion; + } + + public String getJspVersion() { + return jspVersion; + } + + public void setJspVersion(String jspVersion) { + this.jspVersion = jspVersion; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public Validator getValidator() { + return validator; + } + + public void setValidator(Validator validator) { + this.validator = validator; + } + + public void addTag(Tag tag) { + if (tags == null) { + tags = new ArrayList<>(); + } + tags.add(tag); + } + + public List<Tag> getTags() { + return tags; + } + + public void addListener(String listener) { + if (listeners == null) { + listeners = new ArrayList<>(); + } + listeners.add(listener); + } + + public List<String> getListeners() { + return listeners; + } + + public void addFunction(FunctionInfo functionInfo) { + if (functions == null) { + functions = new ArrayList<>(); + } + functions.add(functionInfo); + } + + public List<FunctionInfo> getFunctions() { + return functions; + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,65 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import java.io.IOException; +import java.net.URL; + +import org.apache.juli.logging.Log; +import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.descriptor.DigesterFactory; +import org.apache.tomcat.util.descriptor.XmlErrorHandler; +import org.apache.tomcat.util.digester.Digester; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +/** + * Parses a Tag Library Descriptor. + */ +public class TldParser { + private static final Log LOG = LogFactory.getLog(TldParser.class); + + private final Digester digester; + + public TldParser(boolean namespaceAware, boolean validation) { + TldRuleSet ruleSet = new TldRuleSet(); + digester = DigesterFactory.newDigester(validation, namespaceAware, ruleSet); + } + + public TaglibXml parse(URL url) throws IOException, SAXException { + InputSource source = new InputSource(url.toExternalForm()); + source.setByteStream(url.openStream()); + return parse(source); + } + + public TaglibXml parse(InputSource source) throws IOException, SAXException { + try { + XmlErrorHandler handler = new XmlErrorHandler(); + digester.setErrorHandler(handler); + + TaglibXml taglibXml = new TaglibXml(); + digester.push(taglibXml); + digester.parse(source); + if (!handler.getWarnings().isEmpty() || !handler.getErrors().isEmpty()) { + handler.logFindings(LOG, source.getSystemId()); + } + return taglibXml; + } finally { + digester.reset(); + } + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldParser.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,66 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import org.apache.tomcat.util.digester.Digester; +import org.apache.tomcat.util.digester.Rule; +import org.apache.tomcat.util.digester.RuleSetBase; +import org.xml.sax.Attributes; + +/** + * RulesSet for digesting TLD files. + */ +public class TldRuleSet extends RuleSetBase { + private static final String PREFIX = "taglib"; + private static final String TAG_PREFIX = PREFIX + "/tag"; + + @Override + public void addRuleInstances(Digester digester) { + + digester.addCallMethod(PREFIX + "/tlibversion", "setTlibVersion", 0); + digester.addCallMethod(PREFIX + "/tlib-version", "setTlibVersion", 0); + digester.addCallMethod(PREFIX + "/jspversion", "setJspVersion", 0); + digester.addCallMethod(PREFIX + "/jsp-version", "setJspVersion", 0); + digester.addRule(PREFIX, new Rule() { + // for TLD 2.0 and later, jsp-version is set by version attribute + @Override + public void begin(String namespace, String name, Attributes attributes) { + TaglibXml taglibXml = (TaglibXml) digester.peek(); + taglibXml.setJspVersion(attributes.getValue("version")); + } + }); + digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0); + digester.addCallMethod(PREFIX + "/short-name", "setShortName", 0); + + // common rules + digester.addCallMethod(PREFIX + "/uri", "setUri", 0); + digester.addCallMethod(PREFIX + "/info", "setInfo", 0); + digester.addCallMethod(PREFIX + "/description", "setInfo", 0); + digester.addCallMethod(PREFIX + "/listener/listener-class", "addListener", 0); + + // tag + digester.addObjectCreate(TAG_PREFIX, Tag.class.getName()); + digester.addCallMethod(TAG_PREFIX + "/name", "setName", 0); + digester.addCallMethod(TAG_PREFIX + "/tagclass", "setTagClass", 0); + digester.addCallMethod(TAG_PREFIX + "/tag-class", "setTagClass", 0); + digester.addCallMethod(TAG_PREFIX + "/teiclass", "setTeiClass", 0); + digester.addCallMethod(TAG_PREFIX + "/tei-class", "setTeiClass", 0); + digester.addCallMethod(TAG_PREFIX + "/bodycontent", "setBodyContent", 0); + digester.addCallMethod(TAG_PREFIX + "/body-content", "setBodyContent", 0); + digester.addSetNext(TAG_PREFIX, "addTag", Tag.class.getName()); + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,47 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import java.util.HashMap; +import java.util.Map; + +/** + * Model of a Tag Library Validator from the XML descriptor. + */ +public class Validator { + private String validationClass; + private Map<String, String> initParams; + + public String getValidationClass() { + return validationClass; + } + + public void setValidationClass(String validationClass) { + this.validationClass = validationClass; + } + + public void addInitParam(String name, String value) { + if (initParams == null) { + initParams = new HashMap<>(); + } + initParams.put(name, value); + } + + public Map<String, String> getInitParams() { + return initParams; + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/Validator.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,21 @@ +/* + * 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 containing a Java model of the XML for a Tag Library Descriptor. + */ +package org.apache.tomcat.util.descriptor.tld; \ No newline at end of file Propchange: tomcat/trunk/java/org/apache/tomcat/util/descriptor/tld/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java?rev=1512148&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java (added) +++ tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java Fri Aug 9 06:21:56 2013 @@ -0,0 +1,110 @@ +/* + * 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.tomcat.util.descriptor.tld; + +import java.io.FileInputStream; +import java.util.List; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import org.xml.sax.InputSource; + +public class TestTldParser { + private static final String WEBAPP = "test/webapp-3.1/WEB-INF/"; + private TldParser parser; + + @Before + public void init() { + parser = new TldParser(true, true); + } + + @Test + public void testParseTld21() throws Exception { + try (FileInputStream is = new FileInputStream(WEBAPP + "tags21.tld")) { + InputSource source = new InputSource(is); + TaglibXml xml = parser.parse(source); + Assert.assertEquals("1.0", xml.getTlibVersion()); + Assert.assertEquals("2.1", xml.getJspVersion()); + Assert.assertEquals("Tags21", xml.getShortName()); + Assert.assertEquals("http://tomcat.apache.org/tags21", xml.getUri()); + verifyTags(xml.getTags()); + } + } + + @Test + public void testParseTld20() throws Exception { + try (FileInputStream is = new FileInputStream(WEBAPP + "tags20.tld")) { + InputSource source = new InputSource(is); + TaglibXml xml = parser.parse(source); + Assert.assertEquals("1.0", xml.getTlibVersion()); + Assert.assertEquals("2.0", xml.getJspVersion()); + Assert.assertEquals("Tags20", xml.getShortName()); + Assert.assertEquals("http://tomcat.apache.org/tags20", xml.getUri()); + verifyTags(xml.getTags()); + } + } + + @Test + public void testParseTld12() throws Exception { + try (FileInputStream is = new FileInputStream(WEBAPP + "tags12.tld")) { + InputSource source = new InputSource(is); + TaglibXml xml = parser.parse(source); + Assert.assertEquals("1.0", xml.getTlibVersion()); + Assert.assertEquals("1.2", xml.getJspVersion()); + Assert.assertEquals("Tags12", xml.getShortName()); + Assert.assertEquals("http://tomcat.apache.org/tags12", xml.getUri()); + verifyTags(xml.getTags()); + } + } + + @Test + public void testParseTld11() throws Exception { + try (FileInputStream is = new FileInputStream(WEBAPP + "tags11.tld")) { + InputSource source = new InputSource(is); + TaglibXml xml = parser.parse(source); + Assert.assertEquals("1.0", xml.getTlibVersion()); + Assert.assertEquals("1.1", xml.getJspVersion()); + Assert.assertEquals("Tags11", xml.getShortName()); + Assert.assertEquals("http://tomcat.apache.org/tags11", xml.getUri()); + verifyTags(xml.getTags()); + } + } + + private void verifyTags(List<Tag> tags) { + Assert.assertEquals(1, tags.size()); + Tag tag = tags.get(0); + Assert.assertEquals("Echo", tag.getName()); + Assert.assertEquals("org.apache.jasper.compiler.TestValidator$Echo", + tag.getTagClass()); + Assert.assertEquals("empty", tag.getBodyContent()); + } + + @Test + public void testListener() throws Exception { + try (FileInputStream is = new FileInputStream("test/webapp-3.0/WEB-INF/listener.tld")) { + InputSource source = new InputSource(is); + TaglibXml xml = parser.parse(source); + Assert.assertEquals("1.0", xml.getTlibVersion()); + List<String> listeners = xml.getListeners(); + Assert.assertEquals(1, listeners.size()); + Assert.assertEquals("org.apache.catalina.core.TesterTldListener", listeners.get(0)); + } + } + +} Propchange: tomcat/trunk/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org