Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 37363 invoked from network); 9 Dec 2010 01:12:12 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 9 Dec 2010 01:12:12 -0000 Received: (qmail 85397 invoked by uid 500); 9 Dec 2010 01:12:12 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 85328 invoked by uid 500); 9 Dec 2010 01:12:12 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 85321 invoked by uid 99); 9 Dec 2010 01:12:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Dec 2010 01:12:12 +0000 X-ASF-Spam-Status: No, hits=1.5 required=10.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of xhhsld@gmail.com designates 209.85.213.182 as permitted sender) Received: from [209.85.213.182] (HELO mail-yx0-f182.google.com) (209.85.213.182) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Dec 2010 01:11:56 +0000 Received: by yxh35 with SMTP id 35so1118138yxh.13 for ; Wed, 08 Dec 2010 17:11:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=4qHa9gNZm8zxca6ZgyK/NLbAflBTGa1H7/9zTz51vgE=; b=SgZ75zBBPp/GE2+jT/WRB6fXG73ixBHyghke9KId6x1/mPX2izsmtmvVM8kAITrAR8 GhxVgIa384bfoqmkMHnEVVY0RsjtrZJgrapAq1Isu1N2yv8eEm7VDCPwU+cewHgySmu+ SRchlogPfhSzFprzKHblHtZ4HxBJJMjoIwJsY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=peuGPIkjhcXqAdnW35GUp8oJbjdpNGV2PnRtLW/oBp87FUJIbvYuizT6pg1HIU271r jncfeDknwRRkxvKa3mqI9biDQ9P2eVDg7nQG2IDbYjgkmBZ7WrD3LCb82M1NPKa+ZRLj cxof/i0xDxYDatV0ohkBhJeZj0+XkJ3h6xX34= MIME-Version: 1.0 Received: by 10.42.164.136 with SMTP id g8mr476727icy.102.1291857094700; Wed, 08 Dec 2010 17:11:34 -0800 (PST) Received: by 10.231.155.146 with HTTP; Wed, 8 Dec 2010 17:11:34 -0800 (PST) Date: Thu, 9 Dec 2010 09:11:34 +0800 Message-ID: Subject: Re: svn commit: r1043341 - in /geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src: main/java/org/apache/geronimo/jasper/deployment/ test/java/org/apache/geronimo/jasper/deployment/ test/resources/1_1_dtd/ test/resources/1_2_dtd/ test/re From: Ivan To: dev@geronimo.apache.org Content-Type: multipart/alternative; boundary=90e6ba6e8e7e3aef4d0496efeb41 X-Virus-Checked: Checked by ClamAV on apache.org --90e6ba6e8e7e3aef4d0496efeb41 Content-Type: text/plain; charset=ISO-8859-1 I did not see a way from openejb side, the tld schema is not compatible between the dtd and xsd, some element names are changed, e.g. tag-class vs tagclass. 2010/12/9 David Jencks > I'm ___extremely___ reluctant to bring back any use of xmlbeans if there is > any alternative. Can't we fix up openejb tld processing to work? > > thanks > david jencks > > On Dec 8, 2010, at 1:40 AM, xuhaihong@apache.org wrote: > > > Author: xuhaihong > > Date: Wed Dec 8 09:40:24 2010 > > New Revision: 1043341 > > > > URL: http://svn.apache.org/viewvc?rev=1043341&view=rev > > Log: > > GERONIMO-5726 There is no need for jasper builder to parse the whole tld > files, it only needs the tag classes and listener classes for naming > builder. Turn to use xmlbeans to find the interested elements. But > currently, we have no way to do the tld validation. > > > > Added: > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > (with props) > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_1_dtd/taglib-tag-listener.tld > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_2_dtd/taglib-tag-listener.tld > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_0_xsd/taglib-tag-listener.tld > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_1_xsd/taglib-tag-listener.tld > > Modified: > > > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java > > > > Modified: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java?rev=1043341&r1=1043340&r2=1043341&view=diff > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java > (original) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java > Wed Dec 8 09:40:24 2010 > > @@ -17,6 +17,7 @@ > > > > package org.apache.geronimo.jasper.deployment; > > > > +import java.io.IOException; > > import java.io.InputStream; > > import java.net.URI; > > import java.net.URISyntaxException; > > @@ -38,6 +39,7 @@ import org.apache.geronimo.deployment.De > > import org.apache.geronimo.deployment.DeployableJarFile; > > import org.apache.geronimo.deployment.ModuleIDBuilder; > > import org.apache.geronimo.deployment.service.EnvironmentBuilder; > > +import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil; > > import org.apache.geronimo.gbean.AbstractName; > > import org.apache.geronimo.gbean.GBeanData; > > import org.apache.geronimo.gbean.GBeanInfo; > > @@ -58,19 +60,18 @@ import org.apache.geronimo.kernel.GBeanA > > import org.apache.geronimo.kernel.Naming; > > import org.apache.geronimo.kernel.config.ConfigurationStore; > > import org.apache.geronimo.kernel.repository.Environment; > > +import org.apache.geronimo.kernel.util.IOUtils; > > import org.apache.geronimo.web.info.ServletInfo; > > import org.apache.geronimo.web.info.WebAppInfo; > > import org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder; > > import org.apache.geronimo.web25.deployment.WebAppInfoBuilder; > > -import org.apache.openejb.jee.JaxbJavaee; > > import org.apache.openejb.jee.JspConfig; > > import org.apache.openejb.jee.JspPropertyGroup; > > -import org.apache.openejb.jee.Listener; > > -import org.apache.openejb.jee.Tag; > > import org.apache.openejb.jee.Taglib; > > -import org.apache.openejb.jee.TldTaglib; > > import org.apache.openejb.jee.WebApp; > > import org.apache.xbean.finder.ClassFinder; > > +import org.apache.xmlbeans.XmlCursor; > > +import org.apache.xmlbeans.XmlException; > > import org.apache.xmlbeans.XmlObject; > > import org.osgi.framework.Bundle; > > import org.osgi.framework.BundleContext; > > @@ -154,7 +155,7 @@ public class JspModuleBuilderExtension i > > Set listenerNames = new HashSet(); > > > > Collection urls = getTldFiles(webApp, webModule); > > - LinkedHashSet classes = getListenerClasses(webApp, > webModule, urls, listenerNames); > > + LinkedHashSet> classes = getListenerClasses(webApp, > webModule, urls, listenerNames); > > ClassFinder classFinder = new ClassFinder(new > ArrayList(classes)); > > webModule.setClassFinder(classFinder); > > > > @@ -269,7 +270,9 @@ public class JspModuleBuilderExtension i > > > > // 4. All TLD files in all META-INF(s) > > > tldURLs.addAll(scanGlobalTlds(webModule.getEarContext().getDeploymentBundle())); > > - log.debug("getTldFiles() Exit: URL[" + tldURLs.size() + "]: " + > tldURLs.toString()); > > + if (log.isDebugEnabled()) { > > + log.debug("getTldFiles() Exit: URL[" + tldURLs.size() + "]: > " + tldURLs.toString()); > > + } > > return tldURLs; > > } > > > > @@ -299,7 +302,7 @@ public class JspModuleBuilderExtension i > > try { > > references = > bundleContext.getServiceReferences(TldProvider.class.getName(), null); > > } catch (InvalidSyntaxException e) { > > - // this should not happen > > + // this should not happen > > throw new DeploymentException("Invalid filter expression", > e); > > } > > List tldURLs = new ArrayList(); > > @@ -312,11 +315,11 @@ public class JspModuleBuilderExtension i > > } > > bundleContext.ungetService(reference); > > } > > - } > > + } > > return tldURLs; > > } > > - > > - private LinkedHashSet getListenerClasses(WebApp webApp, > WebModule webModule, Collection urls, Set listenerNames) throws > DeploymentException { > > + > > + private LinkedHashSet> getListenerClasses(WebApp webApp, > WebModule webModule, Collection urls, Set listenerNames) throws > DeploymentException { > > if (log.isDebugEnabled()) { > > log.debug("getListenerClasses( " + webApp.toString() + "," + > '\n' + > > webModule.getName() + " ): Entry"); > > @@ -324,7 +327,7 @@ public class JspModuleBuilderExtension i > > > > // Get the classloader from the module's EARContext > > Bundle bundle = webModule.getEarContext().getDeploymentBundle(); > > - LinkedHashSet classes = new LinkedHashSet(); > > + LinkedHashSet> classes = new LinkedHashSet>(); > > > > for (URL url : urls) { > > parseTldFile(url, bundle, classes, listenerNames); > > @@ -336,62 +339,91 @@ public class JspModuleBuilderExtension i > > return classes; > > } > > > > - private void parseTldFile(URL url, Bundle bundle, > LinkedHashSet classes, Set listenerNames) throws > DeploymentException { > > - log.debug("parseTLDFile( " + url.toString() + " ): Entry"); > > - > > - try { > > - InputStream in = url.openStream(); > > - TldTaglib tl; > > - try { > > - tl = (TldTaglib) > JaxbJavaee.unmarshalTaglib(TldTaglib.class, in); > > - } finally { > > - in.close(); > > - } > > - > > - // Get all the listeners from the TLD file > > - List listeners = tl.getListener(); > > - for (Listener listener : listeners) { > > - String className = listener.getListenerClass(); > > - if (!excludedListenerNames.contains(className)) { > > - try { > > - Class clas = bundle.loadClass(className); > > - while (clas != null) { > > - classes.add(clas); > > - clas = clas.getSuperclass(); > > - } > > - listenerNames.add(className); > > - } > > - catch (ClassNotFoundException e) { > > - log.warn("JspModuleBuilderExtension: Could not > load listener class: " + className + " mentioned in TLD file at " + > url.toString()); > > - } > > - } > > - } > > - > > - // Get all the tags from the TLD file > > - List tags = tl.getTag(); > > - for (Tag tag : tags) { > > - String className = tag.getTagClass(); > > + protected void parseTldFile(URL url, Bundle bundle, > LinkedHashSet> classes, Set listenerNames) throws > DeploymentException { > > + if (log.isDebugEnabled()) { > > + log.debug("parseTLDFile( " + url.toString() + " ): Entry"); > > + } > > + System.out.println("Test--------------------------" + url); > > + List listenerClassNames = new ArrayList(); > > + List tagClassNames = new ArrayList(); > > + parseTldFile(url, listenerClassNames, tagClassNames); > > + > > + // Get all the listeners from the TLD file > > + for (String className : listenerClassNames) { > > + if (!excludedListenerNames.contains(className)) { > > try { > > - Class clas = bundle.loadClass(className); > > + Class clas = bundle.loadClass(className); > > while (clas != null) { > > classes.add(clas); > > clas = clas.getSuperclass(); > > } > > + listenerNames.add(className); > > + } catch (ClassNotFoundException e) { > > + log.warn("JspModuleBuilderExtension: Could not load > listener class: " + className + " mentioned in TLD file at " + > url.toString()); > > } > > - catch (ClassNotFoundException e) { > > - log.warn("JspModuleBuilderExtension: Could not load > tag class: " + className + " mentioned in TLD file at " + url.toString()); > > + } > > + } > > + > > + // Get all the tags from the TLD file > > + for (String className : tagClassNames) { > > + try { > > + Class clas = bundle.loadClass(className); > > + while (clas != null) { > > + classes.add(clas); > > + clas = clas.getSuperclass(); > > } > > + } catch (ClassNotFoundException e) { > > + log.warn("JspModuleBuilderExtension: Could not load tag > class: " + className + " mentioned in TLD file at " + url.toString()); > > } > > - } catch (Exception ioe) { > > - throw new DeploymentException("Could not find TLD file at " > + url.toString(), ioe); > > } > > + if (log.isDebugEnabled()) { > > + log.debug("parseTLDFile(): Exit"); > > + } > > + } > > > > - log.debug("parseTLDFile(): Exit"); > > + protected void parseTldFile(URL url, List > listenerClassNames, List tagClassNames) > > + throws DeploymentException { > > + InputStream in = null; > > + XmlCursor cursor = null; > > + try { > > + in = url.openStream(); > > + XmlObject xmlObject = XmlBeansUtil.parse(in); > > + cursor = xmlObject.newCursor(); > > + cursor.toStartDoc(); > > + cursor.toFirstChild(); > > + String namespaceURI = cursor.getName().getNamespaceURI(); > > + cursor.toStartDoc(); > > + cursor.toChild(namespaceURI, "taglib"); > > + if (!cursor.toFirstChild()) { > > + return; > > + } > > + do { > > + String name = cursor.getName().getLocalPart(); > > + if ("tag".equals(name)) { > > + cursor.push(); > > + if (cursor.toChild(namespaceURI, "tag-class") || > cursor.toChild(namespaceURI, "tagclass")) { > > + tagClassNames.add(cursor.getTextValue()); > > + } > > + cursor.pop(); > > + } else if ("listener".equals(name)) { > > + cursor.push(); > > + if (cursor.toChild(namespaceURI, "listener-class")) > { > > + listenerClassNames.add(cursor.getTextValue()); > > + } > > + cursor.pop(); > > + } > > + } while (cursor.toNextSibling()); > > + } catch (IOException e) { > > + throw new DeploymentException("JspModuleBuilderExtension: > Could not parse tld file " + url, e); > > + } catch (XmlException e) { > > + throw new DeploymentException("JspModuleBuilderExtension: > Could not parse tld file " + url, e); > > + } finally { > > + IOUtils.close(in); > > + } > > } > > > > private URI createURI(String path) throws URISyntaxException { > > path = path.replaceAll(" ", "%20"); > > return new URI(path); > > } > > - > > } > > > > Added: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java?rev=1043341&view=auto > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > (added) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > Wed Dec 8 09:40:24 2010 > > @@ -0,0 +1,134 @@ > > +/** > > + * 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.geronimo.jasper.deployment; > > + > > +import java.net.URL; > > +import java.util.ArrayList; > > +import java.util.Arrays; > > +import java.util.Collection; > > +import java.util.Collections; > > +import java.util.List; > > + > > +import junit.framework.TestCase; > > + > > +import org.apache.geronimo.common.DeploymentException; > > +import org.apache.geronimo.j2ee.deployment.NamingBuilder; > > +import org.apache.geronimo.kernel.repository.Environment; > > +import org.apache.geronimo.web.info.ServletInfo; > > +import org.apache.geronimo.web.info.WebAppInfo; > > +import org.junit.Assert; > > + > > +/** > > + * @version $Rev$ $Date$ > > + */ > > +public class SchemaParseTest extends TestCase { > > + > > + private TestJspModuleBuilderExtension jspModuleBuilderExtension; > > + > > + private ClassLoader classLoader = > SchemaParseTest.class.getClassLoader(); > > + > > + @Override > > + public void setUp() { > > + //webAppInfo is used to prevent the NPE in > JspModuleBuilderExtension constructor > > + WebAppInfo webAppInfo = new WebAppInfo(); > > + webAppInfo.servlets.add(new ServletInfo()); > > + jspModuleBuilderExtension = new > TestJspModuleBuilderExtension(null, null, webAppInfo, null); > > + } > > + > > + public void testParse11DTD() throws Exception { > > + URL url = > classLoader.getResource("1_1_dtd/taglib-tag-listener.tld"); > > + List expectedTagClassNames = > Arrays.asList("org.apache.struts.taglib.nested.NestedPropertyTag", > > + "org.apache.struts.taglib.nested.NestedWriteNestingTag", > > + "org.apache.struts.taglib.nested.NestedRootTag", > > + "org.apache.struts.taglib.nested.bean.NestedDefineTag", > > + "org.apache.struts.taglib.nested.bean.NestedMessageTag", > > + "org.apache.struts.taglib.nested.bean.NestedSizeTag", > > + "org.apache.struts.taglib.nested.bean.NestedWriteTag", > > + > "org.apache.struts.taglib.nested.html.NestedCheckboxTag", > > + "org.apache.struts.taglib.nested.html.NestedErrorsTag", > > + "org.apache.struts.taglib.nested.html.NestedFileTag"); > > + List expectedListenerClassNames = Collections. > emptyList(); > > + jspModuleBuilderExtension.testParse(url, > expectedListenerClassNames, expectedTagClassNames); > > + } > > + > > + public void testParse12DTD() throws Exception { > > + URL url = > classLoader.getResource("1_2_dtd/taglib-tag-listener.tld"); > > + List expectedTagClassNames = > Arrays.asList("examples.LogTag"); > > + List expectedListenerClassNames = > Arrays.asList("TestListenerClassName"); > > + jspModuleBuilderExtension.testParse(url, > expectedListenerClassNames, expectedTagClassNames); > > + } > > + > > + public void testParse20XSD() throws Exception { > > + URL url = > classLoader.getResource("2_0_xsd/taglib-tag-listener.tld"); > > + List expectedTagClassNames = > Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.BundleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", > "org.apache.taglibs.standard.tag.rt.fmt.ParamTag", > > + > "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag"); > > + List expectedListenerClassNames = > Arrays.asList("TestListenerA", "TestListenerB"); > > + jspModuleBuilderExtension.testParse(url, > expectedListenerClassNames, expectedTagClassNames); > > + } > > + > > + public void testParse21XSD() throws Exception { > > + URL url = > classLoader.getResource("2_1_xsd/taglib-tag-listener.tld"); > > + List expectedTagClassNames = > Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.BundleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", > "org.apache.taglibs.standard.tag.rt.fmt.ParamTag", > > + > "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag", > > + "org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag"); > > + List expectedListenerClassNames = > Arrays.asList("TestListenerA", "TestListenerB"); > > + jspModuleBuilderExtension.testParse(url, > expectedListenerClassNames, expectedTagClassNames); > > + } > > + > > + static class TestJspModuleBuilderExtension extends > JspModuleBuilderExtension { > > + > > + public TestJspModuleBuilderExtension(Environment > defaultEnvironment, Collection excludedListenerNames, > > + WebAppInfo defaultJspServlet, NamingBuilder > namingBuilders) { > > + super(defaultEnvironment, excludedListenerNames, > defaultJspServlet, namingBuilders); > > + } > > + > > + public void testParse(URL url, List > expectedListenerClassNames, List expectedTagClassNames) > > + throws DeploymentException { > > + List listenerClassNames = new ArrayList(); > > + List tagClassNames = new ArrayList(); > > + parseTldFile(url, listenerClassNames, tagClassNames); > > + Assert.assertEquals(expectedListenerClassNames.size(), > listenerClassNames.size()); > > + for (String expectedListenerClassName : > expectedListenerClassNames) { > > + Assert.assertTrue("expected class name " + > expectedListenerClassName + "is not found in the result" > > + + listenerClassNames, > listenerClassNames.contains(expectedListenerClassName)); > > + } > > + Assert.assertEquals(expectedTagClassNames.size(), > tagClassNames.size()); > > + for (String expectedTagClassName : expectedTagClassNames) { > > + Assert.assertTrue("expected class name " + > expectedTagClassName + "is not found in the result" > > + + listenerClassNames, > tagClassNames.contains(expectedTagClassName)); > > + } > > + } > > + } > > +} > > > > Propchange: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > > > ------------------------------------------------------------------------------ > > svn:eol-style = native > > > > Propchange: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > > > ------------------------------------------------------------------------------ > > svn:keywords = Date Revision > > > > Propchange: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java > > > ------------------------------------------------------------------------------ > > svn:mime-type = text/plain > > > > Added: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_1_dtd/taglib-tag-listener.tld > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_1_dtd/taglib-tag-listener.tld?rev=1043341&view=auto > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_1_dtd/taglib-tag-listener.tld > (added) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_1_dtd/taglib-tag-listener.tld > Wed Dec 8 09:40:24 2010 > > @@ -0,0 +1,565 @@ > > + > > + > > + 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> > > + > > + 1.2 > > + 1.1 > > + nested > > + http://struts.apache.org/tags-nested > > + > > + nest > > + > org.apache.struts.taglib.nested.NestedPropertyTag > > + JSP > > + > > + property > > + false > > + true > > + > > + > > + > > + writeNesting > > + > org.apache.struts.taglib.nested.NestedWriteNestingTag > > + > org.apache.struts.taglib.nested.NestedWriteNestingTei > > + JSP > > + > > + property > > + false > > + true > > + > > + > > + id > > + false > > + true > > + > > + > > + filter > > + false > > + true > > + > > + > > + > > + root > > + > org.apache.struts.taglib.nested.NestedRootTag > > + JSP > > + > > + name > > + false > > + true > > + > > + > > + > > + define > > + > org.apache.struts.taglib.nested.bean.NestedDefineTag > > + > org.apache.struts.taglib.nested.bean.NestedDefineTei > > + empty > > + > > + id > > + true > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + property > > + false > > + true > > + > > + > > + scope > > + false > > + true > > + > > + > > + toScope > > + false > > + true > > + > > + > > + type > > + false > > + true > > + > > + > > + value > > + false > > + true > > + > > + > > + > > + message > > + > org.apache.struts.taglib.nested.bean.NestedMessageTag > > + empty > > + > > + arg0 > > + false > > + true > > + > > + > > + arg1 > > + false > > + true > > + > > + > > + arg2 > > + false > > + true > > + > > + > > + arg3 > > + false > > + true > > + > > + > > + arg4 > > + false > > + true > > + > > + > > + bundle > > + false > > + true > > + > > + > > + key > > + false > > + true > > + > > + > > + locale > > + false > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + property > > + false > > + true > > + > > + > > + scope > > + false > > + true > > + > > + > > + > > + size > > + > org.apache.struts.taglib.nested.bean.NestedSizeTag > > + org.apache.struts.taglib.bean.SizeTei > > + empty > > + > > + collection > > + false > > + true > > + > > + > > + id > > + true > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + property > > + false > > + true > > + > > + > > + scope > > + false > > + true > > + > > + > > + > > + write > > + > org.apache.struts.taglib.nested.bean.NestedWriteTag > > + empty > > + > > + bundle > > + false > > + true > > + > > + > > + filter > > + false > > + true > > + > > + > > + format > > + false > > + true > > + > > + > > + formatKey > > + false > > + true > > + > > + > > + ignore > > + false > > + true > > + > > + > > + locale > > + false > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + property > > + false > > + true > > + > > + > > + scope > > + false > > + true > > + > > + > > + > > + checkbox > > + > org.apache.struts.taglib.nested.html.NestedCheckboxTag > > + > > + accesskey > > + false > > + true > > + > > + > > + alt > > + false > > + true > > + > > + > > + altKey > > + false > > + true > > + > > + > > + disabled > > + false > > + true > > + > > + > > + indexed > > + false > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + onblur > > + false > > + true > > + > > + > > + onchange > > + false > > + true > > + > > + > > + onclick > > + false > > + true > > + > > + > > + ondblclick > > + false > > + true > > + > > + > > + onfocus > > + false > > + true > > + > > + > > + onkeydown > > + false > > + true > > + > > + > > + onkeypress > > + false > > + true > > + > > + > > + onkeyup > > + false > > + true > > + > > + > > + onmousedown > > + false > > + true > > + > > + > > + onmousemove > > + false > > + true > > + > > + > > + onmouseout > > + false > > + true > > + > > + > > + onmouseover > > + false > > + true > > + > > + > > + onmouseup > > + false > > + true > > + > > + > > + property > > + true > > + true > > + > > + > > + style > > + false > > + true > > + > > + > > + styleClass > > + false > > + true > > + > > + > > + styleId > > + false > > + true > > + > > + > > + tabindex > > + false > > + true > > + > > + > > + title > > + false > > + true > > + > > + > > + titleKey > > + false > > + true > > + > > + > > + value > > + false > > + true > > + > > + > > + > > + errors > > + > org.apache.struts.taglib.nested.html.NestedErrorsTag > > + empty > > + > > + bundle > > + false > > + true > > + > > + > > + locale > > + false > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + property > > + false > > + true > > + > > + > > + > > + file > > + > org.apache.struts.taglib.nested.html.NestedFileTag > > + > > + accesskey > > + false > > + true > > + > > + > > + accept > > + false > > + true > > + > > + > > + alt > > + false > > + true > > + > > + > > + altKey > > + false > > + true > > + > > + > > + disabled > > + false > > + true > > + > > + > > + indexed > > + false > > + true > > + > > + > > + maxlength > > + false > > + true > > + > > + > > + name > > + false > > + true > > + > > + > > + onblur > > + false > > + true > > + > > + > > + onchange > > + false > > + true > > + > > + > > + onclick > > + false > > + true > > + > > + > > + ondblclick > > + false > > + true > > + > > + > > + onfocus > > + false > > + true > > + > > + > > + onkeydown > > + false > > + true > > + > > + > > + onkeypress > > + false > > + true > > + > > + > > + onkeyup > > + false > > + true > > + > > + > > + onmousedown > > + false > > + true > > + > > + > > + onmousemove > > + false > > + true > > + > > + > > + onmouseout > > + false > > + true > > + > > + > > + onmouseover > > + false > > + true > > + > > + > > + onmouseup > > + false > > + true > > + > > + > > + property > > + true > > + true > > + > > + > > + size > > + false > > + true > > + > > + > > + style > > + false > > + true > > + > > + > > + styleClass > > + false > > + true > > + > > + > > + styleId > > + false > > + true > > + > > + > > + tabindex > > + false > > + true > > + > > + > > + title > > + false > > + true > > + > > + > > + titleKey > > + false > > + true > > + > > + > > + value > > + false > > + true > > + > > + > > + > > > > Added: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_2_dtd/taglib-tag-listener.tld > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_2_dtd/taglib-tag-listener.tld?rev=1043341&view=auto > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_2_dtd/taglib-tag-listener.tld > (added) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/1_2_dtd/taglib-tag-listener.tld > Wed Dec 8 09:40:24 2010 > > @@ -0,0 +1,53 @@ > > + > > + > > + > + PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" > > + "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"> > > + > > + 1.0 > > + 1.2 > > + debug > > + http://jakarta.apache.org/tomcat/debug-taglib > > + > > + This tag library defines no tags. Instead, its purpose is > encapsulated > > + in the TagLibraryValidator implementation that simply outputs the > XML > > + version of a JSP page to standard output, whenever this tag library > is > > + referenced in a "taglib" directive in a JSP page. > > + > > + > > + validators.DebugValidator > > + > > + info > > + > > + log > > + examples.LogTag > > + examples.LogTei > > + tagdependent > > + > > + Perform a server side action; Log the message. > > + > > + > > + toBrowser > > + false > > + true > > + > > + > > + > > + TestListenerClassName > > + > > + > > > > Added: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_0_xsd/taglib-tag-listener.tld > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_0_xsd/taglib-tag-listener.tld?rev=1043341&view=auto > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_0_xsd/taglib-tag-listener.tld > (added) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_0_xsd/taglib-tag-listener.tld > Wed Dec 8 09:40:24 2010 > > @@ -0,0 +1,688 @@ > > + > > + > > + > + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee > http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" > > + version="2.0"> > > + JSTL 1.1 i18n-capable formatting library > > + JSTL fmt > > + 1.1 > > + fmt > > + http://java.sun.com/jsp/jstl/fmt > > + > > + > > + Provides core validation features for JSTL tags. > > + > > + > > + org.apache.taglibs.standard.tlv.JstlFmtTLV > > + > > + > > + > > + TestListenerA > > + > > + > > + TestListenerB > > + > > + > > + > > + Sets the request character encoding > > + > > + requestEncoding > > + > org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag > > + empty > > + > > + > > +Name of character encoding to be applied when > > +decoding request parameters. > > + > > + value > > + false > > + true > > + > > + > > + > > + > > + > > + Stores the given locale in the locale configuration variable > > + > > + setLocale > > + > org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag > > + empty > > + > > + > > +A String value is interpreted as the > > +printable representation of a locale, which > > +must contain a two-letter (lower-case) > > +language code (as defined by ISO-639), > > +and may contain a two-letter (upper-case) > > +country code (as defined by ISO-3166). > > +Language and country codes must be > > +separated by hyphen (-) or underscore > > +(_). > > + > > + value > > + true > > + true > > + > > + > > + > > +Vendor- or browser-specific variant. > > +See the java.util.Locale javadocs for > > +more information on variants. > > + > > + variant > > + false > > + true > > + > > + > > + > > +Scope of the locale configuration variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Specifies the time zone for any time formatting or parsing > actions > > + nested in its body > > + > > + timeZone > > + > org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag > > + JSP > > + > > + > > +The time zone. A String value is interpreted as > > +a time zone ID. This may be one of the time zone > > +IDs supported by the Java platform (such as > > +"America/Los_Angeles") or a custom time zone > > +ID (such as "GMT-8"). See > > +java.util.TimeZone for more information on > > +supported time zone formats. > > + > > + value > > + true > > + true > > + > > + > > + > > + > > + > > + Stores the given time zone in the time zone configuration > variable > > + > > + setTimeZone > > + > org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag > > + empty > > + > > + > > +The time zone. A String value is interpreted as > > +a time zone ID. This may be one of the time zone > > +IDs supported by the Java platform (such as > > +"America/Los_Angeles") or a custom time zone > > +ID (such as "GMT-8"). See java.util.TimeZone for > > +more information on supported time zone > > +formats. > > + > > + value > > + true > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the time zone of type > > +java.util.TimeZone. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var or the time zone configuration > > +variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Loads a resource bundle to be used by its tag body > > + > > + bundle > > + > org.apache.taglibs.standard.tag.rt.fmt.BundleTag > > + JSP > > + > > + > > +Resource bundle base name. This is the bundle's > > +fully-qualified resource name, which has the same > > +form as a fully-qualified class name, that is, it uses > > +"." as the package component separator and does not > > +have any file type (such as ".class" or ".properties") > > +suffix. > > + > > + basename > > + true > > + true > > + > > + > > + > > +Prefix to be prepended to the value of the message > > +key of any nested action. > > + > > + prefix > > + false > > + true > > + > > + > > + > > + > > + > > + Loads a resource bundle and stores it in the named scoped > variable or > > + the bundle configuration variable > > + > > + setBundle > > + > org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag > > + empty > > + > > + > > +Resource bundle base name. This is the bundle's > > +fully-qualified resource name, which has the same > > +form as a fully-qualified class name, that is, it uses > > +"." as the package component separator and does not > > +have any file type (such as ".class" or ".properties") > > +suffix. > > + > > + basename > > + true > > + true > > + > > + > > + > > +Name of the exported scoped variable which stores > > +the i18n localization context of type > > +javax.servlet.jsp.jstl.fmt.LocalizationC > > +ontext. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var or the localization context > > +configuration variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Maps key to localized message and performs parametric > replacement > > + > > + message > > + > org.apache.taglibs.standard.tag.rt.fmt.MessageTag > > + JSP > > + > > + > > +Message key to be looked up. > > + > > + key > > + false > > + true > > + > > + > > + > > +Localization context in whose resource > > +bundle the message key is looked up. > > + > > + bundle > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable > > +which stores the localized message. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Supplies an argument for parametric replacement to a containing > > + tag > > + > > + param > > + > org.apache.taglibs.standard.tag.rt.fmt.ParamTag > > + JSP > > + > > + > > +Argument used for parametric replacement. > > + > > + value > > + false > > + true > > + > > + > > + > > + > > + > > + Formats a numeric value as a number, currency, or percentage > > + > > + formatNumber > > + > org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag > > + JSP > > + > > + > > +Numeric value to be formatted. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the value is to be > > +formatted as number, currency, or > > +percentage. > > + > > + type > > + false > > + true > > + > > + > > + > > +Custom formatting pattern. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +ISO 4217 currency code. Applied only > > +when formatting currencies (i.e. if type is > > +equal to "currency"); ignored otherwise. > > + > > + currencyCode > > + false > > + true > > + > > + > > + > > +Currency symbol. Applied only when > > +formatting currencies (i.e. if type is equal > > +to "currency"); ignored otherwise. > > + > > + currencySymbol > > + false > > + true > > + > > + > > + > > +Specifies whether the formatted output > > +will contain any grouping separators. > > + > > + groupingUsed > > + false > > + true > > + > > + > > + > > +Maximum number of digits in the integer > > +portion of the formatted output. > > + > > + maxIntegerDigits > > + false > > + true > > + > > + > > + > > +Minimum number of digits in the integer > > +portion of the formatted output. > > + > > + minIntegerDigits > > + false > > + true > > + > > + > > + > > +Maximum number of digits in the > > +fractional portion of the formatted output. > > + > > + maxFractionDigits > > + false > > + true > > + > > + > > + > > +Minimum number of digits in the > > +fractional portion of the formatted output. > > + > > + minFractionDigits > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable > > +which stores the formatted result as a > > +String. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Parses the string representation of a number, currency, or > percentage > > + > > + parseNumber > > + > org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag > > + JSP > > + > > + > > +String to be parsed. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the string in the value > > +attribute should be parsed as a number, > > +currency, or percentage. > > + > > + type > > + false > > + true > > + > > + > > + > > +Custom formatting pattern that determines > > +how the string in the value attribute is to be > > +parsed. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Locale whose default formatting pattern (for > > +numbers, currencies, or percentages, > > +respectively) is to be used during the parse > > +operation, or to which the pattern specified > > +via the pattern attribute (if present) is > > +applied. > > + > > + parseLocale > > + false > > + true > > + > > + > > + > > +Specifies whether just the integer portion of > > +the given value should be parsed. > > + > > + integerOnly > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the parsed result (of type > > +java.lang.Number). > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Formats a date and/or time using the supplied styles and pattern > > + > > + formatDate > > + > org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag > > + empty > > + > > + > > +Date and/or time to be formatted. > > + > > + value > > + true > > + true > > + > > + > > + > > +Specifies whether the time, the date, or both > > +the time and date components of the given > > +date are to be formatted. > > + > > + type > > + false > > + true > > + > > + > > + > > +Predefined formatting style for dates. Follows > > +the semantics defined in class > > +java.text.DateFormat. Applied only > > +when formatting a date or both a date and > > +time (i.e. if type is missing or is equal to > > +"date" or "both"); ignored otherwise. > > + > > + dateStyle > > + false > > + true > > + > > + > > + > > +Predefined formatting style for times. Follows > > +the semantics defined in class > > +java.text.DateFormat. Applied only > > +when formatting a time or both a date and > > +time (i.e. if type is equal to "time" or "both"); > > +ignored otherwise. > > + > > + timeStyle > > + false > > + true > > + > > + > > + > > +Custom formatting style for dates and times. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Time zone in which to represent the formatted > > +time. > > + > > + timeZone > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the formatted result as a String. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Parses the string representation of a date and/or time > > + > > + parseDate > > + > org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag > > + JSP > > + > > + > > +Date string to be parsed. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the date string in the > > +value attribute is supposed to contain a > > +time, a date, or both. > > + > > + type > > + false > > + true > > + > > + > > + > > +Predefined formatting style for days > > +which determines how the date > > +component of the date string is to be > > +parsed. Applied only when formatting a > > +date or both a date and time (i.e. if type > > +is missing or is equal to "date" or "both"); > > +ignored otherwise. > > + > > + dateStyle > > + false > > + true > > + > > + > > + > > +Predefined formatting styles for times > > +which determines how the time > > +component in the date string is to be > > +parsed. Applied only when formatting a > > +time or both a date and time (i.e. if type > > +is equal to "time" or "both"); ignored > > +otherwise. > > + > > + timeStyle > > + false > > + true > > + > > + > > + > > +Custom formatting pattern which > > +determines how the date string is to be > > +parsed. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Time zone in which to interpret any time > > +information in the date string. > > + > > + timeZone > > + false > > + true > > + > > + > > + > > +Locale whose predefined formatting styles > > +for dates and times are to be used during > > +the parse operation, or to which the > > +pattern specified via the pattern > > +attribute (if present) is applied. > > + > > + parseLocale > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable in > > +which the parsing result (of type > > +java.util.Date) is stored. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > > > Added: > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_1_xsd/taglib-tag-listener.tld > > URL: > http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_1_xsd/taglib-tag-listener.tld?rev=1043341&view=auto > > > ============================================================================== > > --- > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_1_xsd/taglib-tag-listener.tld > (added) > > +++ > geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/resources/2_1_xsd/taglib-tag-listener.tld > Wed Dec 8 09:40:24 2010 > > @@ -0,0 +1,688 @@ > > + > > + > > + > + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee > http://java.sun.com/xml/ns/javeee/web-jsptaglibrary_2_1.xsd" > > + version="2.1"> > > + JSTL 1.1 i18n-capable formatting library > > + JSTL fmt > > + 1.1 > > + fmt > > + http://java.sun.com/jsp/jstl/fmt > > + > > + > > + Provides core validation features for JSTL tags. > > + > > + > > + org.apache.taglibs.standard.tlv.JstlFmtTLV > > + > > + > > + > > + > > + Sets the request character encoding > > + > > + requestEncoding > > + > org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag > > + empty > > + > > + > > +Name of character encoding to be applied when > > +decoding request parameters. > > + > > + value > > + false > > + true > > + > > + > > + > > + > > + > > + Stores the given locale in the locale configuration variable > > + > > + setLocale > > + > org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag > > + empty > > + > > + > > +A String value is interpreted as the > > +printable representation of a locale, which > > +must contain a two-letter (lower-case) > > +language code (as defined by ISO-639), > > +and may contain a two-letter (upper-case) > > +country code (as defined by ISO-3166). > > +Language and country codes must be > > +separated by hyphen (-) or underscore > > +(_). > > + > > + value > > + true > > + true > > + > > + > > + > > +Vendor- or browser-specific variant. > > +See the java.util.Locale javadocs for > > +more information on variants. > > + > > + variant > > + false > > + true > > + > > + > > + > > +Scope of the locale configuration variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Specifies the time zone for any time formatting or parsing > actions > > + nested in its body > > + > > + timeZone > > + > org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag > > + JSP > > + > > + > > +The time zone. A String value is interpreted as > > +a time zone ID. This may be one of the time zone > > +IDs supported by the Java platform (such as > > +"America/Los_Angeles") or a custom time zone > > +ID (such as "GMT-8"). See > > +java.util.TimeZone for more information on > > +supported time zone formats. > > + > > + value > > + true > > + true > > + > > + > > + > > + > > + > > + Stores the given time zone in the time zone configuration > variable > > + > > + setTimeZone > > + > org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag > > + empty > > + > > + > > +The time zone. A String value is interpreted as > > +a time zone ID. This may be one of the time zone > > +IDs supported by the Java platform (such as > > +"America/Los_Angeles") or a custom time zone > > +ID (such as "GMT-8"). See java.util.TimeZone for > > +more information on supported time zone > > +formats. > > + > > + value > > + true > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the time zone of type > > +java.util.TimeZone. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var or the time zone configuration > > +variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Loads a resource bundle to be used by its tag body > > + > > + bundle > > + > org.apache.taglibs.standard.tag.rt.fmt.BundleTag > > + JSP > > + > > + > > +Resource bundle base name. This is the bundle's > > +fully-qualified resource name, which has the same > > +form as a fully-qualified class name, that is, it uses > > +"." as the package component separator and does not > > +have any file type (such as ".class" or ".properties") > > +suffix. > > + > > + basename > > + true > > + true > > + > > + > > + > > +Prefix to be prepended to the value of the message > > +key of any nested action. > > + > > + prefix > > + false > > + true > > + > > + > > + > > + > > + > > + Loads a resource bundle and stores it in the named scoped > variable or > > + the bundle configuration variable > > + > > + setBundle > > + > org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag > > + empty > > + > > + > > +Resource bundle base name. This is the bundle's > > +fully-qualified resource name, which has the same > > +form as a fully-qualified class name, that is, it uses > > +"." as the package component separator and does not > > +have any file type (such as ".class" or ".properties") > > +suffix. > > + > > + basename > > + true > > + true > > + > > + > > + > > +Name of the exported scoped variable which stores > > +the i18n localization context of type > > +javax.servlet.jsp.jstl.fmt.LocalizationC > > +ontext. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var or the localization context > > +configuration variable. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Maps key to localized message and performs parametric > replacement > > + > > + message > > + > org.apache.taglibs.standard.tag.rt.fmt.MessageTag > > + JSP > > + > > + > > +Message key to be looked up. > > + > > + key > > + false > > + true > > + > > + > > + > > +Localization context in whose resource > > +bundle the message key is looked up. > > + > > + bundle > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable > > +which stores the localized message. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Supplies an argument for parametric replacement to a containing > > + tag > > + > > + param > > + > org.apache.taglibs.standard.tag.rt.fmt.ParamTag > > + JSP > > + > > + > > +Argument used for parametric replacement. > > + > > + value > > + false > > + true > > + > > + > > + > > + > > + > > + Formats a numeric value as a number, currency, or percentage > > + > > + formatNumber > > + > org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag > > + JSP > > + > > + > > +Numeric value to be formatted. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the value is to be > > +formatted as number, currency, or > > +percentage. > > + > > + type > > + false > > + true > > + > > + > > + > > +Custom formatting pattern. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +ISO 4217 currency code. Applied only > > +when formatting currencies (i.e. if type is > > +equal to "currency"); ignored otherwise. > > + > > + currencyCode > > + false > > + true > > + > > + > > + > > +Currency symbol. Applied only when > > +formatting currencies (i.e. if type is equal > > +to "currency"); ignored otherwise. > > + > > + currencySymbol > > + false > > + true > > + > > + > > + > > +Specifies whether the formatted output > > +will contain any grouping separators. > > + > > + groupingUsed > > + false > > + true > > + > > + > > + > > +Maximum number of digits in the integer > > +portion of the formatted output. > > + > > + maxIntegerDigits > > + false > > + true > > + > > + > > + > > +Minimum number of digits in the integer > > +portion of the formatted output. > > + > > + minIntegerDigits > > + false > > + true > > + > > + > > + > > +Maximum number of digits in the > > +fractional portion of the formatted output. > > + > > + maxFractionDigits > > + false > > + true > > + > > + > > + > > +Minimum number of digits in the > > +fractional portion of the formatted output. > > + > > + minFractionDigits > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable > > +which stores the formatted result as a > > +String. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Parses the string representation of a number, currency, or > percentage > > + > > + parseNumber > > + > org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag > > + JSP > > + > > + > > +String to be parsed. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the string in the value > > +attribute should be parsed as a number, > > +currency, or percentage. > > + > > + type > > + false > > + true > > + > > + > > + > > +Custom formatting pattern that determines > > +how the string in the value attribute is to be > > +parsed. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Locale whose default formatting pattern (for > > +numbers, currencies, or percentages, > > +respectively) is to be used during the parse > > +operation, or to which the pattern specified > > +via the pattern attribute (if present) is > > +applied. > > + > > + parseLocale > > + false > > + true > > + > > + > > + > > +Specifies whether just the integer portion of > > +the given value should be parsed. > > + > > + integerOnly > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the parsed result (of type > > +java.lang.Number). > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Formats a date and/or time using the supplied styles and pattern > > + > > + formatDate > > + > org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag > > + empty > > + > > + > > +Date and/or time to be formatted. > > + > > + value > > + true > > + true > > + > > + > > + > > +Specifies whether the time, the date, or both > > +the time and date components of the given > > +date are to be formatted. > > + > > + type > > + false > > + true > > + > > + > > + > > +Predefined formatting style for dates. Follows > > +the semantics defined in class > > +java.text.DateFormat. Applied only > > +when formatting a date or both a date and > > +time (i.e. if type is missing or is equal to > > +"date" or "both"); ignored otherwise. > > + > > + dateStyle > > + false > > + true > > + > > + > > + > > +Predefined formatting style for times. Follows > > +the semantics defined in class > > +java.text.DateFormat. Applied only > > +when formatting a time or both a date and > > +time (i.e. if type is equal to "time" or "both"); > > +ignored otherwise. > > + > > + timeStyle > > + false > > + true > > + > > + > > + > > +Custom formatting style for dates and times. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Time zone in which to represent the formatted > > +time. > > + > > + timeZone > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable which > > +stores the formatted result as a String. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + > > + > > + Parses the string representation of a date and/or time > > + > > + parseDate > > + > org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag > > + JSP > > + > > + > > +Date string to be parsed. > > + > > + value > > + false > > + true > > + > > + > > + > > +Specifies whether the date string in the > > +value attribute is supposed to contain a > > +time, a date, or both. > > + > > + type > > + false > > + true > > + > > + > > + > > +Predefined formatting style for days > > +which determines how the date > > +component of the date string is to be > > +parsed. Applied only when formatting a > > +date or both a date and time (i.e. if type > > +is missing or is equal to "date" or "both"); > > +ignored otherwise. > > + > > + dateStyle > > + false > > + true > > + > > + > > + > > +Predefined formatting styles for times > > +which determines how the time > > +component in the date string is to be > > +parsed. Applied only when formatting a > > +time or both a date and time (i.e. if type > > +is equal to "time" or "both"); ignored > > +otherwise. > > + > > + timeStyle > > + false > > + true > > + > > + > > + > > +Custom formatting pattern which > > +determines how the date string is to be > > +parsed. > > + > > + pattern > > + false > > + true > > + > > + > > + > > +Time zone in which to interpret any time > > +information in the date string. > > + > > + timeZone > > + false > > + true > > + > > + > > + > > +Locale whose predefined formatting styles > > +for dates and times are to be used during > > +the parse operation, or to which the > > +pattern specified via the pattern > > +attribute (if present) is applied. > > + > > + parseLocale > > + false > > + true > > + > > + > > + > > +Name of the exported scoped variable in > > +which the parsing result (of type > > +java.util.Date) is stored. > > + > > + var > > + false > > + false > > + > > + > > + > > +Scope of var. > > + > > + scope > > + false > > + false > > + > > + > > + > > + TestListenerA > > + > > + > > + TestListenerB > > + > > + > > > > > > -- Ivan --90e6ba6e8e7e3aef4d0496efeb41 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I did not see a way from openejb side, the tld schema is not compatible bet= ween the dtd and xsd, some element names are changed, e.g. tag-class vs tag= class.

2010/12/9 David Jencks <david_jencks@yahoo.c= om>
I'm ___extrem= ely___ reluctant to bring back any use of xmlbeans if there is any alternat= ive. =A0Can't we fix up openejb tld processing to work?

thanks
david jencks

On Dec 8, 2010, at 1:40 AM, xuhaiho= ng@apache.org wrote:

> Author: xuhaihong
> Date: Wed Dec =A08 09:40:24 2010
> New Revision: 1043341
>
> URL: http://svn.apache.org/viewvc?rev=3D1043341&view= =3Drev
> Log:
> GERONIMO-5726 There is no need for jasper builder to parse the whole t= ld files, it only needs the tag classes and listener classes for naming bui= lder. Turn to use xmlbeans to find the interested elements. But currently, = we have no way to do the tld validation.
>
> Added:
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java =A0 = (with props)
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/1_1_dtd/taglib-tag-listener.tld
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/1_2_dtd/taglib-tag-listener.tld
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/2_0_xsd/taglib-tag-listener.tld
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/2_1_xsd/taglib-tag-listener.tld
> Modified:
> =A0 =A0geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension= .java
>
> Modified: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder= /src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtens= ion.java
> URL: http://svn.apache.org/v= iewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main= /java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java?= rev=3D1043341&r1=3D1043340&r2=3D1043341&view=3Ddiff
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/m= ain/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.ja= va (original)
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/m= ain/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.ja= va Wed Dec =A08 09:40:24 2010
> @@ -17,6 +17,7 @@
>
> package org.apache.geronimo.jasper.deployment;
>
> +import java.io.IOException;
> import java.io.InputStream;
> import java.net.URI;
> import java.net.URISyntaxException;
> @@ -38,6 +39,7 @@ import org.apache.geronimo.deployment.De
> import org.apache.geronimo.deployment.DeployableJarFile;
> import org.apache.geronimo.deployment.ModuleIDBuilder;
> import org.apache.geronimo.deployment.service.EnvironmentBuilder;
> +import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
> import org.apache.geronimo.gbean.AbstractName;
> import org.apache.geronimo.gbean.GBeanData;
> import org.apache.geronimo.gbean.GBeanInfo;
> @@ -58,19 +60,18 @@ import org.apache.geronimo.kernel.GBeanA
> import org.apache.geronimo.kernel.Naming;
> import org.apache.geronimo.kernel.config.ConfigurationStore;
> import org.apache.geronimo.kernel.repository.Environment;
> +import org.apache.geronimo.kernel.util.IOUtils;
> import org.apache.geronimo.web.info.ServletInfo;
> import org.apache.geronimo.web.info.WebAppInfo;
> import org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder;<= br> > import org.apache.geronimo.web25.deployment.WebAppInfoBuilder;
> -import org.apache.openejb.jee.JaxbJavaee;
> import org.apache.openejb.jee.JspConfig;
> import org.apache.openejb.jee.JspPropertyGroup;
> -import org.apache.openejb.jee.Listener;
> -import org.apache.openejb.jee.Tag;
> import org.apache.openejb.jee.Taglib;
> -import org.apache.openejb.jee.TldTaglib;
> import org.apache.openejb.jee.WebApp;
> import org.apache.xbean.finder.ClassFinder;
> +import org.apache.xmlbeans.XmlCursor;
> +import org.apache.xmlbeans.XmlException;
> import org.apache.xmlbeans.XmlObject;
> import org.osgi.framework.Bundle;
> import org.osgi.framework.BundleContext;
> @@ -154,7 +155,7 @@ public class JspModuleBuilderExtension i
> =A0 =A0 =A0 =A0 Set<String> listenerNames =3D new HashSet<Str= ing>();
>
> =A0 =A0 =A0 =A0 Collection<URL> urls =3D getTldFiles(webApp, web= Module);
> - =A0 =A0 =A0 =A0LinkedHashSet<Class> classes =3D getListenerCla= sses(webApp, webModule, urls, listenerNames);
> + =A0 =A0 =A0 =A0LinkedHashSet<Class<?>> classes =3D getLi= stenerClasses(webApp, webModule, urls, listenerNames);
> =A0 =A0 =A0 =A0 ClassFinder classFinder =3D new ClassFinder(new ArrayL= ist<Class>(classes));
> =A0 =A0 =A0 =A0 webModule.setClassFinder(classFinder);
>
> @@ -269,7 +270,9 @@ public class JspModuleBuilderExtension i
>
> =A0 =A0 =A0 =A0 // 4. All TLD files in all META-INF(s)
> =A0 =A0 =A0 =A0 tldURLs.addAll(scanGlobalTlds(webModule.getEarContext(= ).getDeploymentBundle()));
> - =A0 =A0 =A0 =A0log.debug("getTldFiles() Exit: URL[" + tldU= RLs.size() + "]: " + tldURLs.toString());
> + =A0 =A0 =A0 =A0if (log.isDebugEnabled()) {
> + =A0 =A0 =A0 =A0 =A0 =A0log.debug("getTldFiles() Exit: URL["= ; + tldURLs.size() + "]: " + tldURLs.toString());
> + =A0 =A0 =A0 =A0}
> =A0 =A0 =A0 =A0 return tldURLs;
> =A0 =A0 }
>
> @@ -299,7 +302,7 @@ public class JspModuleBuilderExtension i
> =A0 =A0 =A0 =A0 try {
> =A0 =A0 =A0 =A0 =A0 =A0 references =3D bundleContext.getServiceReferen= ces(TldProvider.class.getName(), null);
> =A0 =A0 =A0 =A0 } catch (InvalidSyntaxException e) {
> - =A0 =A0 =A0 =A0 =A0 =A0// this should not happen
> + =A0 =A0 =A0 =A0 =A0 =A0// this should not happen
> =A0 =A0 =A0 =A0 =A0 =A0 throw new DeploymentException("Invalid fi= lter expression", e);
> =A0 =A0 =A0 =A0 }
> =A0 =A0 =A0 =A0 List<URL> tldURLs =3D new ArrayList<URL>()= ;
> @@ -312,11 +315,11 @@ public class JspModuleBuilderExtension i
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bundleContext.ungetService(reference);=
> =A0 =A0 =A0 =A0 =A0 =A0 }
> - =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0}
> =A0 =A0 =A0 =A0 return tldURLs;
> =A0 =A0 }
> -
> - =A0 =A0private LinkedHashSet<Class> getListenerClasses(WebApp = webApp, WebModule webModule, Collection<URL> urls, Set<String> = listenerNames) throws DeploymentException {
> +
> + =A0 =A0private LinkedHashSet<Class<?>> getListenerClasse= s(WebApp webApp, WebModule webModule, Collection<URL> urls, Set<St= ring> listenerNames) throws DeploymentException {
> =A0 =A0 =A0 =A0 if (log.isDebugEnabled()) {
> =A0 =A0 =A0 =A0 =A0 =A0 log.debug("getListenerClasses( " + w= ebApp.toString() + "," + '\n' +
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 webModule.getName() + " )= : Entry");
> @@ -324,7 +327,7 @@ public class JspModuleBuilderExtension i
>
> =A0 =A0 =A0 =A0 // Get the classloader from the module's EARContex= t
> =A0 =A0 =A0 =A0 Bundle bundle =3D webModule.getEarContext().getDeploym= entBundle();
> - =A0 =A0 =A0 =A0LinkedHashSet<Class> classes =3D new LinkedHash= Set<Class>();
> + =A0 =A0 =A0 =A0LinkedHashSet<Class<?>> classes =3D new L= inkedHashSet<Class<?>>();
>
> =A0 =A0 =A0 =A0 for (URL url : urls) {
> =A0 =A0 =A0 =A0 =A0 =A0 parseTldFile(url, bundle, classes, listenerNam= es);
> @@ -336,62 +339,91 @@ public class JspModuleBuilderExtension i
> =A0 =A0 =A0 =A0 return classes;
> =A0 =A0 }
>
> - =A0 =A0private void parseTldFile(URL url, Bundle bundle, LinkedHashS= et<Class> classes, Set<String> listenerNames) throws Deployment= Exception {
> - =A0 =A0 =A0 =A0log.debug("parseTLDFile( " + url.toString()= + " ): Entry");
> -
> - =A0 =A0 =A0 =A0try {
> - =A0 =A0 =A0 =A0 =A0 =A0InputStream in =3D url.openStream();
> - =A0 =A0 =A0 =A0 =A0 =A0TldTaglib tl;
> - =A0 =A0 =A0 =A0 =A0 =A0try {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tl =3D (TldTaglib) JaxbJavaee.unmarsh= alTaglib(TldTaglib.class, in);
> - =A0 =A0 =A0 =A0 =A0 =A0} finally {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0in.close();
> - =A0 =A0 =A0 =A0 =A0 =A0}
> -
> - =A0 =A0 =A0 =A0 =A0 =A0// Get all the listeners from the TLD file > - =A0 =A0 =A0 =A0 =A0 =A0List<Listener> listeners =3D tl.getList= ener();
> - =A0 =A0 =A0 =A0 =A0 =A0for (Listener listener : listeners) {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String className =3D listener.getList= enerClass();
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (!excludedListenerNames.contains(c= lassName)) {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0try {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Class clas =3D bundle= .loadClass(className);
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0while (clas !=3D null= ) {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0classes.add(c= las);
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0clas =3D clas= .getSuperclass();
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0listenerNames.add(cla= ssName);
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0catch (ClassNotFoundException= e) {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0log.warn("JspMod= uleBuilderExtension: Could not load listener class: " + className + &q= uot; mentioned in TLD file at " + url.toString());
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> - =A0 =A0 =A0 =A0 =A0 =A0}
> -
> - =A0 =A0 =A0 =A0 =A0 =A0// Get all the tags from the TLD file
> - =A0 =A0 =A0 =A0 =A0 =A0List<Tag> tags =3D tl.getTag();
> - =A0 =A0 =A0 =A0 =A0 =A0for (Tag tag : tags) {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String className =3D tag.getTagClass(= );
> + =A0 =A0protected void parseTldFile(URL url, Bundle bundle, LinkedHas= hSet<Class<?>> classes, Set<String> listenerNames) throws= DeploymentException {
> + =A0 =A0 =A0 =A0if (log.isDebugEnabled()) {
> + =A0 =A0 =A0 =A0 =A0 =A0log.debug("parseTLDFile( " + url.to= String() + " ): Entry");
> + =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0System.out.println("Test------------------------= --" + url);
> + =A0 =A0 =A0 =A0List<String> listenerClassNames =3D new ArrayLi= st<String>();
> + =A0 =A0 =A0 =A0List<String> tagClassNames =3D new ArrayList<= ;String>();
> + =A0 =A0 =A0 =A0parseTldFile(url, listenerClassNames, tagClassNames);=
> +
> + =A0 =A0 =A0 =A0// Get all the listeners from the TLD file
> + =A0 =A0 =A0 =A0for (String className : listenerClassNames) {
> + =A0 =A0 =A0 =A0 =A0 =A0if (!excludedListenerNames.contains(className= )) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 try {
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Class clas =3D bundle.loadCla= ss(className);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Class<?> clas =3D bundl= e.loadClass(className);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 while (clas !=3D null) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 classes.add(clas);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 clas =3D clas.getSuper= class();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0listenerNames.add(className);=
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} catch (ClassNotFoundException e) {<= br> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0log.warn("JspModuleBuild= erExtension: Could not load listener class: " + className + " men= tioned in TLD file at " + url.toString());
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0catch (ClassNotFoundException e) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0log.warn("JspModuleBuild= erExtension: Could not load tag class: " + className + " mentione= d in TLD file at " + url.toString());
> + =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0}
> +
> + =A0 =A0 =A0 =A0// Get all the tags from the TLD file
> + =A0 =A0 =A0 =A0for (String className : tagClassNames) {
> + =A0 =A0 =A0 =A0 =A0 =A0try {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Class<?> clas =3D bundle.loadCl= ass(className);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0while (clas !=3D null) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0classes.add(clas);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0clas =3D clas.getSuperclass()= ;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> + =A0 =A0 =A0 =A0 =A0 =A0} catch (ClassNotFoundException e) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0log.warn("JspModuleBuilderExtens= ion: Could not load tag class: " + className + " mentioned in TLD= file at " + url.toString());
> =A0 =A0 =A0 =A0 =A0 =A0 }
> - =A0 =A0 =A0 =A0} catch (Exception ioe) {
> - =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("Could not= find TLD file at " + url.toString(), ioe);
> =A0 =A0 =A0 =A0 }
> + =A0 =A0 =A0 =A0if (log.isDebugEnabled()) {
> + =A0 =A0 =A0 =A0 =A0 =A0log.debug("parseTLDFile(): Exit");<= br> > + =A0 =A0 =A0 =A0}
> + =A0 =A0}
>
> - =A0 =A0 =A0 =A0log.debug("parseTLDFile(): Exit");
> + =A0 =A0protected void parseTldFile(URL url, List<String> liste= nerClassNames, List<String> tagClassNames)
> + =A0 =A0 =A0 =A0 =A0 =A0throws DeploymentException {
> + =A0 =A0 =A0 =A0InputStream in =3D null;
> + =A0 =A0 =A0 =A0XmlCursor cursor =3D null;
> + =A0 =A0 =A0 =A0try {
> + =A0 =A0 =A0 =A0 =A0 =A0in =3D url.openStream();
> + =A0 =A0 =A0 =A0 =A0 =A0XmlObject xmlObject =3D XmlBeansUtil.parse(in= );
> + =A0 =A0 =A0 =A0 =A0 =A0cursor =3D xmlObject.newCursor();
> + =A0 =A0 =A0 =A0 =A0 =A0cursor.toStartDoc();
> + =A0 =A0 =A0 =A0 =A0 =A0cursor.toFirstChild();
> + =A0 =A0 =A0 =A0 =A0 =A0String namespaceURI =3D cursor.getName().getN= amespaceURI();
> + =A0 =A0 =A0 =A0 =A0 =A0cursor.toStartDoc();
> + =A0 =A0 =A0 =A0 =A0 =A0cursor.toChild(namespaceURI, "taglib&quo= t;);
> + =A0 =A0 =A0 =A0 =A0 =A0if (!cursor.toFirstChild()) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return;
> + =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0 =A0 =A0do {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0String name =3D cursor.getName().getL= ocalPart();
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if ("tag".equals(name)) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cursor.push();
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (cursor.toChild(namespaceU= RI, "tag-class") || cursor.toChild(namespaceURI, "tagclass&q= uot;)) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tagClassNames.add(cur= sor.getTextValue());
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cursor.pop();
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} else if ("listener".equal= s(name)) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cursor.push();
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (cursor.toChild(namespaceU= RI, "listener-class")) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0listenerClassNames.ad= d(cursor.getTextValue());
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cursor.pop();
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0 =A0 =A0} while (cursor.toNextSibling());
> + =A0 =A0 =A0 =A0} catch (IOException e) {
> + =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("JspModule= BuilderExtension: Could not parse tld file " + url, e);
> + =A0 =A0 =A0 =A0} catch (XmlException e) {
> + =A0 =A0 =A0 =A0 =A0 =A0throw new DeploymentException("JspModule= BuilderExtension: Could not parse tld file " + url, e);
> + =A0 =A0 =A0 =A0} finally {
> + =A0 =A0 =A0 =A0 =A0 =A0IOUtils.close(in);
> + =A0 =A0 =A0 =A0}
> =A0 =A0 }
>
> =A0 =A0 private URI createURI(String path) throws URISyntaxException {=
> =A0 =A0 =A0 =A0 path =3D path.replaceAll(" ", "%20"= ;);
> =A0 =A0 =A0 =A0 return new URI(path);
> =A0 =A0 }
> -
> }
>
> Added: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/g= eronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/= SchemaParseTest.java?rev=3D1043341&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java (added)=
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java Wed Dec= =A08 09:40:24 2010
> @@ -0,0 +1,134 @@
> +/**
> + * =A0Licensed to the Apache Software Foundation (ASF) under one or m= ore
> + * =A0contributor license agreements. =A0See the NOTICE file distribu= ted with
> + * =A0this work for additional information regarding copyright owners= hip.
> + * =A0The ASF licenses this file to You under the Apache License, Ver= sion 2.0
> + * =A0(the "License"); you may not use this file except in = compliance with
> + * =A0the License. =A0You may obtain a copy of the License at
> + *
> + * =A0 =A0 http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * =A0Unless required by applicable law or agreed to in writing, soft= ware
> + * =A0distributed under the License is distributed on an "AS IS&= quot; BASIS,
> + * =A0WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or= implied.
> + * =A0See the License for the specific language governing permissions= and
> + * =A0limitations under the License.
> + */
> +
> +package org.apache.geronimo.jasper.deployment;
> +
> +import java.net.URL;
> +import java.util.ArrayList;
> +import java.util.Arrays;
> +import java.util.Collection;
> +import java.util.Collections;
> +import java.util.List;
> +
> +import junit.framework.TestCase;
> +
> +import org.apache.geronimo.common.DeploymentException;
> +import org.apache.geronimo.j2ee.deployment.NamingBuilder;
> +import org.apache.geronimo.kernel.repository.Environment;
> +import org.apache.geronimo.web.info.ServletInfo;
> +import org.apache.geronimo.web.info.WebAppInfo;
> +import org.junit.Assert;
> +
> +/**
> + * @version $Rev$ $Date$
> + */
> +public class SchemaParseTest extends TestCase {
> +
> + =A0 =A0private TestJspModuleBuilderExtension jspModuleBuilderExtensi= on;
> +
> + =A0 =A0private ClassLoader classLoader =3D SchemaParseTest.class.get= ClassLoader();
> +
> + =A0 =A0@Override
> + =A0 =A0public void setUp() {
> + =A0 =A0 =A0 =A0//webAppInfo is used to prevent the NPE in JspModuleB= uilderExtension constructor
> + =A0 =A0 =A0 =A0WebAppInfo webAppInfo =3D new WebAppInfo();
> + =A0 =A0 =A0 =A0webAppInfo.servlets.add(new ServletInfo());
> + =A0 =A0 =A0 =A0jspModuleBuilderExtension =3D new TestJspModuleBuilde= rExtension(null, null, webAppInfo, null);
> + =A0 =A0}
> +
> + =A0 =A0public void testParse11DTD() throws Exception {
> + =A0 =A0 =A0 =A0URL url =3D classLoader.getResource("1_1_dtd/tag= lib-tag-listener.tld");
> + =A0 =A0 =A0 =A0List<String> expectedTagClassNames =3D Arrays.a= sList("org.apache.struts.taglib.nested.NestedPropertyTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .NestedWriteNestingTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .NestedRootTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .bean.NestedDefineTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .bean.NestedMessageTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .bean.NestedSizeTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .bean.NestedWriteTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .html.NestedCheckboxTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .html.NestedErrorsTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.struts.taglib.nested= .html.NestedFileTag");
> + =A0 =A0 =A0 =A0List<String> expectedListenerClassNames =3D Col= lections.<String> emptyList();
> + =A0 =A0 =A0 =A0jspModuleBuilderExtension.testParse(url, expectedList= enerClassNames, expectedTagClassNames);
> + =A0 =A0}
> +
> + =A0 =A0public void testParse12DTD() throws Exception {
> + =A0 =A0 =A0 =A0URL url =3D classLoader.getResource("1_2_dtd/tag= lib-tag-listener.tld");
> + =A0 =A0 =A0 =A0List<String> expectedTagClassNames =3D Arrays.a= sList("examples.LogTag");
> + =A0 =A0 =A0 =A0List<String> expectedListenerClassNames =3D Arr= ays.asList("TestListenerClassName");
> + =A0 =A0 =A0 =A0jspModuleBuilderExtension.testParse(url, expectedList= enerClassNames, expectedTagClassNames);
> + =A0 =A0}
> +
> + =A0 =A0public void testParse20XSD() throws Exception {
> + =A0 =A0 =A0 =A0URL url =3D classLoader.getResource("2_0_xsd/tag= lib-tag-listener.tld");
> + =A0 =A0 =A0 =A0List<String> expectedTagClassNames =3D Arrays.a= sList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag"= ,
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetLocaleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.TimeZoneTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetTimeZoneTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.BundleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetBundleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.Para= mTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.FormatNumberTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.ParseNumberTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.FormatDateTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.ParseDateTag");
> + =A0 =A0 =A0 =A0List<String> expectedListenerClassNames =3D Arr= ays.asList("TestListenerA", "TestListenerB");
> + =A0 =A0 =A0 =A0jspModuleBuilderExtension.testParse(url, expectedList= enerClassNames, expectedTagClassNames);
> + =A0 =A0}
> +
> + =A0 =A0public void testParse21XSD() throws Exception {
> + =A0 =A0 =A0 =A0URL url =3D classLoader.getResource("2_1_xsd/tag= lib-tag-listener.tld");
> + =A0 =A0 =A0 =A0List<String> expectedTagClassNames =3D Arrays.a= sList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag"= ,
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetLocaleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.TimeZoneTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetTimeZoneTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.BundleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.SetBundleTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.Para= mTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.FormatNumberTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.ParseNumberTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.FormatDateTag",
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"org.apache.taglibs.standard.tag= .rt.fmt.ParseDateTag");
> + =A0 =A0 =A0 =A0List<String> expectedListenerClassNames =3D Arr= ays.asList("TestListenerA", "TestListenerB");
> + =A0 =A0 =A0 =A0jspModuleBuilderExtension.testParse(url, expectedList= enerClassNames, expectedTagClassNames);
> + =A0 =A0}
> +
> + =A0 =A0static class TestJspModuleBuilderExtension extends JspModuleB= uilderExtension {
> +
> + =A0 =A0 =A0 =A0public TestJspModuleBuilderExtension(Environment defa= ultEnvironment, Collection<String> excludedListenerNames,
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0WebAppInfo defaultJspServlet, NamingB= uilder namingBuilders) {
> + =A0 =A0 =A0 =A0 =A0 =A0super(defaultEnvironment, excludedListenerNam= es, defaultJspServlet, namingBuilders);
> + =A0 =A0 =A0 =A0}
> +
> + =A0 =A0 =A0 =A0public void testParse(URL url, List<String> exp= ectedListenerClassNames, List<String> expectedTagClassNames)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0throws DeploymentException {
> + =A0 =A0 =A0 =A0 =A0 =A0List<String> listenerClassNames =3D new= ArrayList<String>();
> + =A0 =A0 =A0 =A0 =A0 =A0List<String> tagClassNames =3D new Arra= yList<String>();
> + =A0 =A0 =A0 =A0 =A0 =A0parseTldFile(url, listenerClassNames, tagClas= sNames);
> + =A0 =A0 =A0 =A0 =A0 =A0Assert.assertEquals(expectedListenerClassName= s.size(), listenerClassNames.size());
> + =A0 =A0 =A0 =A0 =A0 =A0for (String expectedListenerClassName : expec= tedListenerClassNames) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Assert.assertTrue("expected clas= s name " + expectedListenerClassName + "is not found in the resul= t"
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0+ listenerClassNames,= listenerClassNames.contains(expectedListenerClassName));
> + =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0 =A0 =A0Assert.assertEquals(expectedTagClassNames.siz= e(), tagClassNames.size());
> + =A0 =A0 =A0 =A0 =A0 =A0for (String expectedTagClassName : expectedTa= gClassNames) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Assert.assertTrue("expected clas= s name " + expectedTagClassName + "is not found in the result&quo= t;
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0+ listenerClassNames,= tagClassNames.contains(expectedTagClassName));
> + =A0 =A0 =A0 =A0 =A0 =A0}
> + =A0 =A0 =A0 =A0}
> + =A0 =A0}
> +}
>
> Propchange: geronimo/server/trunk/plugins/jasper/geronimo-jasper-build= er/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java=
> ----------------------------------------------------------------------= --------
> =A0 =A0svn:eol-style =3D native
>
> Propchange: geronimo/server/trunk/plugins/jasper/geronimo-jasper-build= er/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java=
> ----------------------------------------------------------------------= --------
> =A0 =A0svn:keywords =3D Date Revision
>
> Propchange: geronimo/server/trunk/plugins/jasper/geronimo-jasper-build= er/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java=
> ----------------------------------------------------------------------= --------
> =A0 =A0svn:mime-type =3D text/plain
>
> Added: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/1_1_dtd/taglib-tag-listener.tld
> URL: http://svn.apa= che.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder= /src/test/resources/1_1_dtd/taglib-tag-listener.tld?rev=3D1043341&view= =3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/1_1_dtd/taglib-tag-listener.tld (added)
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/1_1_dtd/taglib-tag-listener.tld Wed Dec =A08 09:40:24 2010 > @@ -0,0 +1,565 @@
> +<?xml version=3D"1.0" ?>
> +<!--
> + =A0Licensed to the Apache Software Foundation (ASF) under one or mor= e
> + =A0contributor license agreements. =A0See the NOTICE file distribute= d with
> + =A0this work for additional information regarding copyright ownershi= p.
> + =A0The ASF licenses this file to You under the Apache License, Versi= on 2.0
> + =A0(the "License"); you may not use this file except in co= mpliance with
> + =A0the License. =A0You may obtain a copy of the License at
> +
> + =A0 =A0 =A0http://www.apache.org/licenses/LICENSE-2.0
> +
> + =A0Unless required by applicable law or agreed to in writing, softwa= re
> + =A0distributed under the License is distributed on an "AS IS&qu= ot; BASIS,
> + =A0WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i= mplied.
> + =A0See the License for the specific language governing permissions a= nd
> + =A0limitations under the License.
> +-->
> +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP T= ag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web= -jsptaglibrary_1_1.dtd">
> +<taglib>
> + =A0 =A0<tlibversion>1.2</tlibversion>
> + =A0 =A0<jspversion>1.1</jspversion>
> + =A0 =A0<shortname>nested</shortname>
> + =A0 =A0<uri>http://struts.apache.org/tags-nested</uri>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>nest</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.Neste= dPropertyTag</tagclass>
> + =A0 =A0 =A0 =A0<bodycontent>JSP</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>writeNesting</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.Neste= dWriteNestingTag</tagclass>
> + =A0 =A0 =A0 =A0<teiclass>org.apache.struts.taglib.nested.Neste= dWriteNestingTei</teiclass>
> + =A0 =A0 =A0 =A0<bodycontent>JSP</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>id</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>filter</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>root</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.Neste= dRootTag</tagclass>
> + =A0 =A0 =A0 =A0<bodycontent>JSP</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>define</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.bean.= NestedDefineTag</tagclass>
> + =A0 =A0 =A0 =A0<teiclass>org.apache.struts.taglib.nested.bean.= NestedDefineTei</teiclass>
> + =A0 =A0 =A0 =A0<bodycontent>empty</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>id</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>toScope</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>message</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.bean.= NestedMessageTag</tagclass>
> + =A0 =A0 =A0 =A0<bodycontent>empty</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>arg0</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>arg1</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>arg2</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>arg3</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>arg4</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>bundle</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>key</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>locale</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>size</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.bean.= NestedSizeTag</tagclass>
> + =A0 =A0 =A0 =A0<teiclass>org.apache.struts.taglib.bean.SizeTei= </teiclass>
> + =A0 =A0 =A0 =A0<bodycontent>empty</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>collection</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>id</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>write</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.bean.= NestedWriteTag</tagclass>
> + =A0 =A0 =A0 =A0<bodycontent>empty</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>bundle</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>filter</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>format</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>formatKey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>ignore</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>locale</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>checkbox</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.html.= NestedCheckboxTag</tagclass>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>accesskey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>alt</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>altKey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>disabled</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>indexed</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onblur</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onchange</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onclick</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>ondblclick</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onfocus</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeydown</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeypress</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeyup</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmousedown</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmousemove</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseout</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseover</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseup</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>style</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>styleClass</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>styleId</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>tabindex</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>title</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>titleKey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>errors</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.html.= NestedErrorsTag</tagclass>
> + =A0 =A0 =A0 =A0<bodycontent>empty</bodycontent>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>bundle</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>locale</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>file</name>
> + =A0 =A0 =A0 =A0<tagclass>org.apache.struts.taglib.nested.html.= NestedFileTag</tagclass>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>accesskey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>accept</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>alt</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>altKey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>disabled</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>indexed</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>maxlength</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>name</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onblur</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onchange</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onclick</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>ondblclick</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onfocus</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeydown</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeypress</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onkeyup</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmousedown</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmousemove</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseout</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseover</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>onmouseup</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>property</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>size</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>style</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>styleClass</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>styleId</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>tabindex</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>title</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>titleKey</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> +</taglib>
>
> Added: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/1_2_dtd/taglib-tag-listener.tld
> URL: http://svn.apa= che.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder= /src/test/resources/1_2_dtd/taglib-tag-listener.tld?rev=3D1043341&view= =3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/1_2_dtd/taglib-tag-listener.tld (added)
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/1_2_dtd/taglib-tag-listener.tld Wed Dec =A08 09:40:24 2010 > @@ -0,0 +1,53 @@
> +<?xml version=3D"1.0"?>
> +<!--
> + =A0Licensed to the Apache Software Foundation (ASF) under one or mor= e
> + =A0contributor license agreements. =A0See the NOTICE file distribute= d with
> + =A0this work for additional information regarding copyright ownershi= p.
> + =A0The ASF licenses this file to You under the Apache License, Versi= on 2.0
> + =A0(the "License"); you may not use this file except in co= mpliance with
> + =A0the License. =A0You may obtain a copy of the License at
> +
> + =A0 =A0 =A0http://www.apache.org/licenses/LICENSE-2.0
> +
> + =A0Unless required by applicable law or agreed to in writing, softwa= re
> + =A0distributed under the License is distributed on an "AS IS&qu= ot; BASIS,
> + =A0WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i= mplied.
> + =A0See the License for the specific language governing permissions a= nd
> + =A0limitations under the License.
> +-->
> +<!DOCTYPE taglib
> + =A0 =A0 =A0 =A0PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag L= ibrary 1.2//EN"
> + =A0 =A0"http://java.sun.com/j2ee/dtd/web-jsptaglibrar= y_1_2.dtd">
> +<taglib>
> + =A0 =A0<tlib-version>1.0</tlib-version>
> + =A0 =A0<jsp-version>1.2</jsp-version>
> + =A0 =A0<short-name>debug</short-name>
> + =A0 =A0<uri>http://jakarta.apache.org/tomcat/debug-taglib= </uri>
> + =A0 =A0<description>
> + =A0 =A0This tag library defines no tags. =A0Instead, its purpose is = encapsulated
> + =A0 =A0in the TagLibraryValidator implementation that simply outputs= the XML
> + =A0 =A0version of a JSP page to standard output, whenever this tag l= ibrary is
> + =A0 =A0referenced in a "taglib" directive in a JSP page. > + =A0 =A0</description>
> + =A0 =A0<validator>
> + =A0 =A0 =A0 =A0<validator-class>validators.DebugValidator</= validator-class>
> + =A0 =A0</validator>
> + =A0 =A0<info>info</info>
> + =A0 =A0<tag>
> + =A0 =A0 =A0 =A0<name>log</name>
> + =A0 =A0 =A0 =A0<tag-class>examples.LogTag</tag-class> > + =A0 =A0 =A0 =A0<tei-class>examples.LogTei</tei-class> > + =A0 =A0 =A0 =A0<body-content>tagdependent</body-content>=
> + =A0 =A0 =A0 =A0<description>
> + =A0 =A0Perform a server side action; Log the message.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0 =A0 =A0<name>toBrowser</name>
> + =A0 =A0 =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue> > + =A0 =A0 =A0 =A0</attribute>
> + =A0 =A0</tag>
> + =A0 =A0<listener>
> + =A0 =A0 =A0 =A0<listener-class>TestListenerClassName</liste= ner-class>
> + =A0 =A0</listener>
> +</taglib>
>
> Added: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/2_0_xsd/taglib-tag-listener.tld
> URL: http://svn.apa= che.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder= /src/test/resources/2_0_xsd/taglib-tag-listener.tld?rev=3D1043341&view= =3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/2_0_xsd/taglib-tag-listener.tld (added)
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/2_0_xsd/taglib-tag-listener.tld Wed Dec =A08 09:40:24 2010 > @@ -0,0 +1,688 @@
> +<?xml version=3D"1.0"?>
> +<!--
> + =A0Licensed to the Apache Software Foundation (ASF) under one or mor= e
> + =A0contributor license agreements. =A0See the NOTICE file distribute= d with
> + =A0this work for additional information regarding copyright ownershi= p.
> + =A0The ASF licenses this file to You under the Apache License, Versi= on 2.0
> + =A0(the "License"); you may not use this file except in co= mpliance with
> + =A0the License. =A0You may obtain a copy of the License at
> +
> + =A0 =A0 =A0http://www.apache.org/licenses/LICENSE-2.0
> +
> + =A0Unless required by applicable law or agreed to in writing, softwa= re
> + =A0distributed under the License is distributed on an "AS IS&qu= ot; BASIS,
> + =A0WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i= mplied.
> + =A0See the License for the specific language governing permissions a= nd
> + =A0limitations under the License.
> +-->
> +<taglib xmlns=3D"http://java.sun.com/xml/ns/j2ee"
> + =A0 =A0xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance&= quot;
> + =A0 =A0xsi:schemaLocation=3D"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
> + =A0 =A0version=3D"2.0">
> + =A0<description>JSTL 1.1 i18n-capable formatting library</d= escription>
> + =A0<display-name>JSTL fmt</display-name>
> + =A0<tlib-version>1.1</tlib-version>
> + =A0<short-name>fmt</short-name>
> + =A0<uri>http://java.sun.com/jsp/jstl/fmt</uri>
> + =A0<validator>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Provides core validation features for JSTL tags.
> + =A0 =A0</description>
> + =A0 =A0<validator-class>
> + =A0 =A0 =A0 =A0org.apache.taglibs.standard.tlv.JstlFmtTLV
> + =A0 =A0</validator-class>
> + =A0</validator>
> + =A0<listener>
> + =A0 =A0<listener-class>TestListenerA</listener-class> > + =A0</listener>
> + =A0<listener>
> + =A0 =A0<listener-class>TestListenerB</listener-class> > + =A0</listener>
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Sets the request character encoding
> + =A0 =A0</description>
> + =A0 =A0<name>requestEncoding</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Reque= stEncodingTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of character encoding to be applied when
> +decoding request parameters.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Stores the given locale in the locale configuration v= ariable
> + =A0 =A0</description>
> + =A0 =A0<name>setLocale</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLo= caleTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +A String value is interpreted as the
> +printable representation of a locale, which
> +must contain a two-letter (lower-case)
> +language code (as defined by ISO-639),
> +and may contain a two-letter (upper-case)
> +country code (as defined by ISO-3166).
> +Language and country codes must be
> +separated by hyphen (-) or underscore
> +(_).
> + =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Vendor- or browser-specific variant.
> +See the java.util.Locale javadocs for
> +more information on variants.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>variant</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of the locale configuration variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Specifies the time zone for any time formatting or pa= rsing actions
> + =A0 =A0 =A0 =A0nested in its body
> + =A0 =A0</description>
> + =A0 =A0<name>timeZone</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZ= oneTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +The time zone. A String value is interpreted as
> +a time zone ID. This may be one of the time zone
> +IDs supported by the Java platform (such as
> +"America/Los_Angeles") or a custom time zone
> +ID (such as "GMT-8"). See
> +java.util.TimeZone for more information on
> +supported time zone formats.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Stores the given time zone in the time zone configura= tion variable
> + =A0 =A0</description>
> + =A0 =A0<name>setTimeZone</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTi= meZoneTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +The time zone. A String value is interpreted as
> +a time zone ID. This may be one of the time zone
> +IDs supported by the Java platform (such as
> +"America/Los_Angeles") or a custom time zone
> +ID (such as "GMT-8"). See java.util.TimeZone for
> +more information on supported time zone
> +formats.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the time zone of type
> +java.util.TimeZone.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var or the time zone configuration
> +variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Loads a resource bundle to be used by its tag body > + =A0 =A0</description>
> + =A0 =A0<name>bundle</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Bundl= eTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Resource bundle base name. This is the bundle's
> +fully-qualified resource name, which has the same
> +form as a fully-qualified class name, that is, it uses
> +"." as the package component separator and does not
> +have any file type (such as ".class" or ".properties&q= uot;)
> +suffix.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>basename</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Prefix to be prepended to the value of the message
> +key of any nested <fmt:message> action.
> + =A0 =A0 =A0 =A0</description>= ;
> + =A0 =A0 =A0 =A0<name>prefix</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Loads a resource bundle and stores it in the named sc= oped variable or
> + =A0 =A0 =A0 =A0the bundle configuration variable
> + =A0 =A0</description>
> + =A0 =A0<name>setBundle</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetBu= ndleTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Resource bundle base name. This is the bundle's
> +fully-qualified resource name, which has the same
> +form as a fully-qualified class name, that is, it uses
> +"." as the package component separator and does not
> +have any file type (such as ".class" or ".properties&q= uot;)
> +suffix.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>basename</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which stores
> +the i18n localization context of type
> +javax.servlet.jsp.jstl.fmt.LocalizationC
> +ontext.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var or the localization context
> +configuration variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Maps key to localized message and performs parametric= replacement
> + =A0 =A0</description>
> + =A0 =A0<name>message</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Messa= geTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Message key to be looked up.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>key</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Localization context in whose resource
> +bundle the message key is looked up.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>bundle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable
> +which stores the localized message.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Supplies an argument for parametric replacement to a = containing
> + =A0 =A0 =A0 =A0<message> tag
> + =A0 =A0</description>
> + =A0 =A0<name>param</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Param= Tag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Argument used for parametric replacement.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Formats a numeric value as a number, currency, or per= centage
> + =A0 =A0</description>
> + =A0 =A0<name>formatNumber</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Forma= tNumberTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Numeric value to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the value is to be
> +formatted as number, currency, or
> +percentage.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +ISO 4217 currency code. Applied only
> +when formatting currencies (i.e. if type is
> +equal to "currency"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>currencyCode</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Currency symbol. Applied only when
> +formatting currencies (i.e. if type is equal
> +to "currency"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>currencySymbol</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the formatted output
> +will contain any grouping separators.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>groupingUsed</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Maximum number of digits in the integer
> +portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>maxIntegerDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Minimum number of digits in the integer
> +portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>minIntegerDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Maximum number of digits in the
> +fractional portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>maxFractionDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Minimum number of digits in the
> +fractional portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>minFractionDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable
> +which stores the formatted result as a
> +String.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Parses the string representation of a number, currenc= y, or percentage
> + =A0 =A0</description>
> + =A0 =A0<name>parseNumber</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Parse= NumberTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +String to be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the string in the value
> +attribute should be parsed as a number,
> +currency, or percentage.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern that determines
> +how the string in the value attribute is to be
> +parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Locale whose default formatting pattern (for
> +numbers, currencies, or percentages,
> +respectively) is to be used during the parse
> +operation, or to which the pattern specified
> +via the pattern attribute (if present) is
> +applied.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>parseLocale</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether just the integer portion of
> +the given value should be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>integerOnly</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the parsed result (of type
> +java.lang.Number).
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Formats a date and/or time using the supplied styles = and pattern
> + =A0 =A0</description>
> + =A0 =A0<name>formatDate</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Forma= tDateTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Date and/or time to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the time, the date, or both
> +the time and date components of the given
> +date are to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for dates. Follows
> +the semantics defined in class
> +java.text.DateFormat. Applied only
> +when formatting a date or both a date and
> +time (i.e. if type is missing or is equal to
> +"date" or "both"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>dateStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for times. Follows
> +the semantics defined in class
> +java.text.DateFormat. Applied only
> +when formatting a time or both a date and
> +time (i.e. if type is equal to "time" or "both");=
> +ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting style for dates and times.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Time zone in which to represent the formatted
> +time.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeZone</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the formatted result as a String.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Parses the string representation of a date and/or tim= e
> + =A0 =A0</description>
> + =A0 =A0<name>parseDate</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Parse= DateTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Date string to be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the date string in the
> +value attribute is supposed to contain a
> +time, a date, or both.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for days
> +which determines how the date
> +component of the date string is to be
> +parsed. Applied only when formatting a
> +date or both a date and time (i.e. if type
> +is missing or is equal to "date" or "both");
> +ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>dateStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting styles for times
> +which determines how the time
> +component in the date string is to be
> +parsed. Applied only when formatting a
> +time or both a date and time (i.e. if type
> +is equal to "time" or "both"); ignored
> +otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern which
> +determines how the date string is to be
> +parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Time zone in which to interpret any time
> +information in the date string.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeZone</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Locale whose predefined formatting styles
> +for dates and times are to be used during
> +the parse operation, or to which the
> +pattern specified via the pattern
> +attribute (if present) is applied.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>parseLocale</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable in
> +which the parsing result (of type
> +java.util.Date) is stored.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +</taglib>
>
> Added: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/sr= c/test/resources/2_1_xsd/taglib-tag-listener.tld
> URL: http://svn.apa= che.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder= /src/test/resources/2_1_xsd/taglib-tag-listener.tld?rev=3D1043341&view= =3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
> --- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/2_1_xsd/taglib-tag-listener.tld (added)
> +++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/t= est/resources/2_1_xsd/taglib-tag-listener.tld Wed Dec =A08 09:40:24 2010 > @@ -0,0 +1,688 @@
> +<?xml version=3D"1.0"?>
> +<!--
> + =A0Licensed to the Apache Software Foundation (ASF) under one or mor= e
> + =A0contributor license agreements. =A0See the NOTICE file distribute= d with
> + =A0this work for additional information regarding copyright ownershi= p.
> + =A0The ASF licenses this file to You under the Apache License, Versi= on 2.0
> + =A0(the "License"); you may not use this file except in co= mpliance with
> + =A0the License. =A0You may obtain a copy of the License at
> +
> + =A0 =A0 =A0http://www.apache.org/licenses/LICENSE-2.0
> +
> + =A0Unless required by applicable law or agreed to in writing, softwa= re
> + =A0distributed under the License is distributed on an "AS IS&qu= ot; BASIS,
> + =A0WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i= mplied.
> + =A0See the License for the specific language governing permissions a= nd
> + =A0limitations under the License.
> +-->
> +<taglib xmlns=3D"http://java.sun.com/xml/ns/j2ee"
> + =A0 =A0xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance&= quot;
> + =A0 =A0xsi:schemaLocation=3D"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javeee/web-jsptaglibrary_2_1.xsd&quo= t;
> + =A0 =A0version=3D"2.1">
> + =A0<description>JSTL 1.1 i18n-capable formatting library</d= escription>
> + =A0<display-name>JSTL fmt</display-name>
> + =A0<tlib-version>1.1</tlib-version>
> + =A0<short-name>fmt</short-name>
> + =A0<uri>http://java.sun.com/jsp/jstl/fmt</uri>
> + =A0<validator>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Provides core validation features for JSTL tags.
> + =A0 =A0</description>
> + =A0 =A0<validator-class>
> + =A0 =A0 =A0 =A0org.apache.taglibs.standard.tlv.JstlFmtTLV
> + =A0 =A0</validator-class>
> + =A0</validator>
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Sets the request character encoding
> + =A0 =A0</description>
> + =A0 =A0<name>requestEncoding</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Reque= stEncodingTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of character encoding to be applied when
> +decoding request parameters.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Stores the given locale in the locale configuration v= ariable
> + =A0 =A0</description>
> + =A0 =A0<name>setLocale</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLo= caleTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +A String value is interpreted as the
> +printable representation of a locale, which
> +must contain a two-letter (lower-case)
> +language code (as defined by ISO-639),
> +and may contain a two-letter (upper-case)
> +country code (as defined by ISO-3166).
> +Language and country codes must be
> +separated by hyphen (-) or underscore
> +(_).
> + =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Vendor- or browser-specific variant.
> +See the java.util.Locale javadocs for
> +more information on variants.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>variant</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of the locale configuration variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Specifies the time zone for any time formatting or pa= rsing actions
> + =A0 =A0 =A0 =A0nested in its body
> + =A0 =A0</description>
> + =A0 =A0<name>timeZone</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZ= oneTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +The time zone. A String value is interpreted as
> +a time zone ID. This may be one of the time zone
> +IDs supported by the Java platform (such as
> +"America/Los_Angeles") or a custom time zone
> +ID (such as "GMT-8"). See
> +java.util.TimeZone for more information on
> +supported time zone formats.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Stores the given time zone in the time zone configura= tion variable
> + =A0 =A0</description>
> + =A0 =A0<name>setTimeZone</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTi= meZoneTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +The time zone. A String value is interpreted as
> +a time zone ID. This may be one of the time zone
> +IDs supported by the Java platform (such as
> +"America/Los_Angeles") or a custom time zone
> +ID (such as "GMT-8"). See java.util.TimeZone for
> +more information on supported time zone
> +formats.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the time zone of type
> +java.util.TimeZone.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var or the time zone configuration
> +variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Loads a resource bundle to be used by its tag body > + =A0 =A0</description>
> + =A0 =A0<name>bundle</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Bundl= eTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Resource bundle base name. This is the bundle's
> +fully-qualified resource name, which has the same
> +form as a fully-qualified class name, that is, it uses
> +"." as the package component separator and does not
> +have any file type (such as ".class" or ".properties&q= uot;)
> +suffix.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>basename</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Prefix to be prepended to the value of the message
> +key of any nested <fmt:message> action.
> + =A0 =A0 =A0 =A0</description>= ;
> + =A0 =A0 =A0 =A0<name>prefix</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Loads a resource bundle and stores it in the named sc= oped variable or
> + =A0 =A0 =A0 =A0the bundle configuration variable
> + =A0 =A0</description>
> + =A0 =A0<name>setBundle</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetBu= ndleTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Resource bundle base name. This is the bundle's
> +fully-qualified resource name, which has the same
> +form as a fully-qualified class name, that is, it uses
> +"." as the package component separator and does not
> +have any file type (such as ".class" or ".properties&q= uot;)
> +suffix.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>basename</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which stores
> +the i18n localization context of type
> +javax.servlet.jsp.jstl.fmt.LocalizationC
> +ontext.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var or the localization context
> +configuration variable.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Maps key to localized message and performs parametric= replacement
> + =A0 =A0</description>
> + =A0 =A0<name>message</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Messa= geTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Message key to be looked up.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>key</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Localization context in whose resource
> +bundle the message key is looked up.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>bundle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable
> +which stores the localized message.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Supplies an argument for parametric replacement to a = containing
> + =A0 =A0 =A0 =A0<message> tag
> + =A0 =A0</description>
> + =A0 =A0<name>param</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Param= Tag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Argument used for parametric replacement.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Formats a numeric value as a number, currency, or per= centage
> + =A0 =A0</description>
> + =A0 =A0<name>formatNumber</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Forma= tNumberTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Numeric value to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the value is to be
> +formatted as number, currency, or
> +percentage.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +ISO 4217 currency code. Applied only
> +when formatting currencies (i.e. if type is
> +equal to "currency"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>currencyCode</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Currency symbol. Applied only when
> +formatting currencies (i.e. if type is equal
> +to "currency"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>currencySymbol</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the formatted output
> +will contain any grouping separators.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>groupingUsed</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Maximum number of digits in the integer
> +portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>maxIntegerDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Minimum number of digits in the integer
> +portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>minIntegerDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Maximum number of digits in the
> +fractional portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>maxFractionDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Minimum number of digits in the
> +fractional portion of the formatted output.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>minFractionDigits</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable
> +which stores the formatted result as a
> +String.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Parses the string representation of a number, currenc= y, or percentage
> + =A0 =A0</description>
> + =A0 =A0<name>parseNumber</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Parse= NumberTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +String to be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the string in the value
> +attribute should be parsed as a number,
> +currency, or percentage.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern that determines
> +how the string in the value attribute is to be
> +parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Locale whose default formatting pattern (for
> +numbers, currencies, or percentages,
> +respectively) is to be used during the parse
> +operation, or to which the pattern specified
> +via the pattern attribute (if present) is
> +applied.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>parseLocale</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether just the integer portion of
> +the given value should be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>integerOnly</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the parsed result (of type
> +java.lang.Number).
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Formats a date and/or time using the supplied styles = and pattern
> + =A0 =A0</description>
> + =A0 =A0<name>formatDate</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Forma= tDateTag</tag-class>
> + =A0 =A0<body-content>empty</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Date and/or time to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>true</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the time, the date, or both
> +the time and date components of the given
> +date are to be formatted.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for dates. Follows
> +the semantics defined in class
> +java.text.DateFormat. Applied only
> +when formatting a date or both a date and
> +time (i.e. if type is missing or is equal to
> +"date" or "both"); ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>dateStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for times. Follows
> +the semantics defined in class
> +java.text.DateFormat. Applied only
> +when formatting a time or both a date and
> +time (i.e. if type is equal to "time" or "both");=
> +ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting style for dates and times.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Time zone in which to represent the formatted
> +time.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeZone</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable which
> +stores the formatted result as a String.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> +
> + =A0<tag>
> + =A0 =A0<description>
> + =A0 =A0 =A0 =A0Parses the string representation of a date and/or tim= e
> + =A0 =A0</description>
> + =A0 =A0<name>parseDate</name>
> + =A0 =A0<tag-class>org.apache.taglibs.standard.tag.rt.fmt.Parse= DateTag</tag-class>
> + =A0 =A0<body-content>JSP</body-content>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Date string to be parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>value</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Specifies whether the date string in the
> +value attribute is supposed to contain a
> +time, a date, or both.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>type</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting style for days
> +which determines how the date
> +component of the date string is to be
> +parsed. Applied only when formatting a
> +date or both a date and time (i.e. if type
> +is missing or is equal to "date" or "both");
> +ignored otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>dateStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Predefined formatting styles for times
> +which determines how the time
> +component in the date string is to be
> +parsed. Applied only when formatting a
> +time or both a date and time (i.e. if type
> +is equal to "time" or "both"); ignored
> +otherwise.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeStyle</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Custom formatting pattern which
> +determines how the date string is to be
> +parsed.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>pattern</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Time zone in which to interpret any time
> +information in the date string.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>timeZone</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Locale whose predefined formatting styles
> +for dates and times are to be used during
> +the parse operation, or to which the
> +pattern specified via the pattern
> +attribute (if present) is applied.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>parseLocale</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>true</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Name of the exported scoped variable in
> +which the parsing result (of type
> +java.util.Date) is stored.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>var</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0 =A0<attribute>
> + =A0 =A0 =A0 =A0<description>
> +Scope of var.
> + =A0 =A0 =A0 =A0</description>
> + =A0 =A0 =A0 =A0<name>scope</name>
> + =A0 =A0 =A0 =A0<required>false</required>
> + =A0 =A0 =A0 =A0<rtexprvalue>false</rtexprvalue>
> + =A0 =A0</attribute>
> + =A0</tag>
> + =A0<listener>
> + =A0 =A0<listener-class>TestListenerA</listener-class> > + =A0</listener>
> + =A0<listener>
> + =A0 =A0<listener-class>TestListenerB</listener-class> > + =A0</listener>
> +</taglib>
>
>




--
Ivan
--90e6ba6e8e7e3aef4d0496efeb41--