geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan <xhh...@gmail.com>
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
Date Thu, 09 Dec 2010 05:24:38 GMT
Hmm, just find that an extra unmarshalTaglib method in the JaxbJavaee clsas,
will try it later.

2010/12/9 David Jencks <david_jencks@yahoo.com>

> I think we can use an xml filter for this stuff.... I'll take a look.  Is
> your set of test tlds pretty complete?
>
> thanks
> david jencks
>
> On Dec 8, 2010, at 5:11 PM, Ivan wrote:
>
> 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 <david_jencks@yahoo.com>
>
>> 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<String> listenerNames = new HashSet<String>();
>> >
>> >         Collection<URL> urls = getTldFiles(webApp, webModule);
>> > -        LinkedHashSet<Class> classes = getListenerClasses(webApp,
>> webModule, urls, listenerNames);
>> > +        LinkedHashSet<Class<?>> classes = getListenerClasses(webApp,
>> webModule, urls, listenerNames);
>> >         ClassFinder classFinder = new ClassFinder(new
>> ArrayList<Class>(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<URL> tldURLs = new ArrayList<URL>();
>> > @@ -312,11 +315,11 @@ public class JspModuleBuilderExtension i
>> >                 }
>> >                 bundleContext.ungetService(reference);
>> >             }
>> > -        }
>> > +        }
>> >         return tldURLs;
>> >     }
>> > -
>> > -    private LinkedHashSet<Class> getListenerClasses(WebApp webApp,
>> WebModule webModule, Collection<URL> urls, Set<String> listenerNames) throws
>> DeploymentException {
>> > +
>> > +    private LinkedHashSet<Class<?>> getListenerClasses(WebApp webApp,
>> WebModule webModule, Collection<URL> urls, Set<String> 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<Class> classes = new LinkedHashSet<Class>();
>> > +        LinkedHashSet<Class<?>> classes = new
>> LinkedHashSet<Class<?>>();
>> >
>> >         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<Class> classes, Set<String> 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<Listener> 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<Tag> tags = tl.getTag();
>> > -            for (Tag tag : tags) {
>> > -                String className = tag.getTagClass();
>> > +    protected void parseTldFile(URL url, Bundle bundle,
>> LinkedHashSet<Class<?>> classes, Set<String> listenerNames) throws
>> DeploymentException {
>> > +        if (log.isDebugEnabled()) {
>> > +            log.debug("parseTLDFile( " + url.toString() + " ): Entry");
>> > +        }
>> > +        System.out.println("Test--------------------------" + url);
>> > +        List<String> listenerClassNames = new ArrayList<String>();
>> > +        List<String> tagClassNames = new ArrayList<String>();
>> > +        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<String>
>> listenerClassNames, List<String> 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<String> 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<String> expectedListenerClassNames = Collections.<String>
>> emptyList();
>> > +        jspModuleBuilderExtension.testParse(url,
>> expectedListenerClassNames, expectedTagClassNames);
>> > +    }
>> > +
>> > +    public void testParse12DTD() throws Exception {
>> > +        URL url =
>> classLoader.getResource("1_2_dtd/taglib-tag-listener.tld");
>> > +        List<String> expectedTagClassNames =
>> Arrays.asList("examples.LogTag");
>> > +        List<String> 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<String> 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<String> 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<String> 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<String> expectedListenerClassNames =
>> Arrays.asList("TestListenerA", "TestListenerB");
>> > +        jspModuleBuilderExtension.testParse(url,
>> expectedListenerClassNames, expectedTagClassNames);
>> > +    }
>> > +
>> > +    static class TestJspModuleBuilderExtension extends
>> JspModuleBuilderExtension {
>> > +
>> > +        public TestJspModuleBuilderExtension(Environment
>> defaultEnvironment, Collection<String> excludedListenerNames,
>> > +                WebAppInfo defaultJspServlet, NamingBuilder
>> namingBuilders) {
>> > +            super(defaultEnvironment, excludedListenerNames,
>> defaultJspServlet, namingBuilders);
>> > +        }
>> > +
>> > +        public void testParse(URL url, List<String>
>> expectedListenerClassNames, List<String> expectedTagClassNames)
>> > +                throws DeploymentException {
>> > +            List<String> listenerClassNames = new ArrayList<String>();
>> > +            List<String> tagClassNames = new ArrayList<String>();
>> > +            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 @@
>> > +<?xml version="1.0" ?>
>> > +<!--
>> > +  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.
>> > +-->
>> > +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library
>> 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
>> > +<taglib>
>> > +    <tlibversion>1.2</tlibversion>
>> > +    <jspversion>1.1</jspversion>
>> > +    <shortname>nested</shortname>
>> > +    <uri>http://struts.apache.org/tags-nested</uri>
>> > +    <tag>
>> > +        <name>nest</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.NestedPropertyTag</tagclass>
>> > +        <bodycontent>JSP</bodycontent>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>writeNesting</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.NestedWriteNestingTag</tagclass>
>> > +
>>  <teiclass>org.apache.struts.taglib.nested.NestedWriteNestingTei</teiclass>
>> > +        <bodycontent>JSP</bodycontent>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>id</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>filter</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>root</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.NestedRootTag</tagclass>
>> > +        <bodycontent>JSP</bodycontent>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>define</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.bean.NestedDefineTag</tagclass>
>> > +
>>  <teiclass>org.apache.struts.taglib.nested.bean.NestedDefineTei</teiclass>
>> > +        <bodycontent>empty</bodycontent>
>> > +        <attribute>
>> > +            <name>id</name>
>> > +            <required>true</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>scope</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>toScope</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>type</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>value</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>message</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.bean.NestedMessageTag</tagclass>
>> > +        <bodycontent>empty</bodycontent>
>> > +        <attribute>
>> > +            <name>arg0</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>arg1</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>arg2</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>arg3</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>arg4</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>bundle</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>key</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>locale</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>scope</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>size</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.bean.NestedSizeTag</tagclass>
>> > +        <teiclass>org.apache.struts.taglib.bean.SizeTei</teiclass>
>> > +        <bodycontent>empty</bodycontent>
>> > +        <attribute>
>> > +            <name>collection</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>id</name>
>> > +            <required>true</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>scope</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>write</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.bean.NestedWriteTag</tagclass>
>> > +        <bodycontent>empty</bodycontent>
>> > +        <attribute>
>> > +            <name>bundle</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>filter</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>format</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>formatKey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>ignore</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>locale</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>scope</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>checkbox</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.html.NestedCheckboxTag</tagclass>
>> > +        <attribute>
>> > +            <name>accesskey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>alt</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>altKey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>disabled</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>indexed</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onblur</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onchange</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onclick</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>ondblclick</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onfocus</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeydown</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeypress</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeyup</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmousedown</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmousemove</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseout</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseover</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseup</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>true</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>style</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>styleClass</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>styleId</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>tabindex</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>title</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>titleKey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>value</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>errors</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.html.NestedErrorsTag</tagclass>
>> > +        <bodycontent>empty</bodycontent>
>> > +        <attribute>
>> > +            <name>bundle</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>locale</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <tag>
>> > +        <name>file</name>
>> > +
>>  <tagclass>org.apache.struts.taglib.nested.html.NestedFileTag</tagclass>
>> > +        <attribute>
>> > +            <name>accesskey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>accept</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>alt</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>altKey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>disabled</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>indexed</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>maxlength</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>name</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onblur</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onchange</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onclick</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>ondblclick</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onfocus</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeydown</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeypress</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onkeyup</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmousedown</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmousemove</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseout</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseover</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>onmouseup</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>property</name>
>> > +            <required>true</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>size</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>style</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>styleClass</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>styleId</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>tabindex</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>title</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>titleKey</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +        <attribute>
>> > +            <name>value</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +</taglib>
>> >
>> > 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 @@
>> > +<?xml version="1.0"?>
>> > +<!--
>> > +  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.
>> > +-->
>> > +<!DOCTYPE taglib
>> > +        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
>> > +    "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
>> > +<taglib>
>> > +    <tlib-version>1.0</tlib-version>
>> > +    <jsp-version>1.2</jsp-version>
>> > +    <short-name>debug</short-name>
>> > +    <uri>http://jakarta.apache.org/tomcat/debug-taglib</uri>
>> > +    <description>
>> > +    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.
>> > +    </description>
>> > +    <validator>
>> > +        <validator-class>validators.DebugValidator</validator-class>
>> > +    </validator>
>> > +    <info>info</info>
>> > +    <tag>
>> > +        <name>log</name>
>> > +        <tag-class>examples.LogTag</tag-class>
>> > +        <tei-class>examples.LogTei</tei-class>
>> > +        <body-content>tagdependent</body-content>
>> > +        <description>
>> > +    Perform a server side action; Log the message.
>> > +        </description>
>> > +        <attribute>
>> > +            <name>toBrowser</name>
>> > +            <required>false</required>
>> > +            <rtexprvalue>true</rtexprvalue>
>> > +        </attribute>
>> > +    </tag>
>> > +    <listener>
>> > +        <listener-class>TestListenerClassName</listener-class>
>> > +    </listener>
>> > +</taglib>
>> >
>> > 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 @@
>> > +<?xml version="1.0"?>
>> > +<!--
>> > +  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.
>> > +-->
>> > +<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
>> > +    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">
>> > +  <description>JSTL 1.1 i18n-capable formatting library</description>
>> > +  <display-name>JSTL fmt</display-name>
>> > +  <tlib-version>1.1</tlib-version>
>> > +  <short-name>fmt</short-name>
>> > +  <uri>http://java.sun.com/jsp/jstl/fmt</uri>
>> > +  <validator>
>> > +    <description>
>> > +        Provides core validation features for JSTL tags.
>> > +    </description>
>> > +    <validator-class>
>> > +        org.apache.taglibs.standard.tlv.JstlFmtTLV
>> > +    </validator-class>
>> > +  </validator>
>> > +  <listener>
>> > +    <listener-class>TestListenerA</listener-class>
>> > +  </listener>
>> > +  <listener>
>> > +    <listener-class>TestListenerB</listener-class>
>> > +  </listener>
>> > +  <tag>
>> > +    <description>
>> > +        Sets the request character encoding
>> > +    </description>
>> > +    <name>requestEncoding</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Name of character encoding to be applied when
>> > +decoding request parameters.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Stores the given locale in the locale configuration variable
>> > +    </description>
>> > +    <name>setLocale</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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
>> > +(_).
>> > +    </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Vendor- or browser-specific variant.
>> > +See the java.util.Locale javadocs for
>> > +more information on variants.
>> > +        </description>
>> > +        <name>variant</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of the locale configuration variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Specifies the time zone for any time formatting or parsing
>> actions
>> > +        nested in its body
>> > +    </description>
>> > +    <name>timeZone</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Stores the given time zone in the time zone configuration
>> variable
>> > +    </description>
>> > +    <name>setTimeZone</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the time zone of type
>> > +java.util.TimeZone.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var or the time zone configuration
>> > +variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Loads a resource bundle to be used by its tag body
>> > +    </description>
>> > +    <name>bundle</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.BundleTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <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")
>> > +suffix.
>> > +        </description>
>> > +        <name>basename</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Prefix to be prepended to the value of the message
>> > +key of any nested <fmt:message> action.
>> > +        </description>
>> > +        <name>prefix</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Loads a resource bundle and stores it in the named scoped
>> variable or
>> > +        the bundle configuration variable
>> > +    </description>
>> > +    <name>setBundle</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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")
>> > +suffix.
>> > +        </description>
>> > +        <name>basename</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which stores
>> > +the i18n localization context of type
>> > +javax.servlet.jsp.jstl.fmt.LocalizationC
>> > +ontext.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var or the localization context
>> > +configuration variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Maps key to localized message and performs parametric
>> replacement
>> > +    </description>
>> > +    <name>message</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Message key to be looked up.
>> > +        </description>
>> > +        <name>key</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Localization context in whose resource
>> > +bundle the message key is looked up.
>> > +        </description>
>> > +        <name>bundle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable
>> > +which stores the localized message.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Supplies an argument for parametric replacement to a containing
>> > +        <message> tag
>> > +    </description>
>> > +    <name>param</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Argument used for parametric replacement.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Formats a numeric value as a number, currency, or percentage
>> > +    </description>
>> > +    <name>formatNumber</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Numeric value to be formatted.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the value is to be
>> > +formatted as number, currency, or
>> > +percentage.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +ISO 4217 currency code. Applied only
>> > +when formatting currencies (i.e. if type is
>> > +equal to "currency"); ignored otherwise.
>> > +        </description>
>> > +        <name>currencyCode</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Currency symbol. Applied only when
>> > +formatting currencies (i.e. if type is equal
>> > +to "currency"); ignored otherwise.
>> > +        </description>
>> > +        <name>currencySymbol</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the formatted output
>> > +will contain any grouping separators.
>> > +        </description>
>> > +        <name>groupingUsed</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Maximum number of digits in the integer
>> > +portion of the formatted output.
>> > +        </description>
>> > +        <name>maxIntegerDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Minimum number of digits in the integer
>> > +portion of the formatted output.
>> > +        </description>
>> > +        <name>minIntegerDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Maximum number of digits in the
>> > +fractional portion of the formatted output.
>> > +        </description>
>> > +        <name>maxFractionDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Minimum number of digits in the
>> > +fractional portion of the formatted output.
>> > +        </description>
>> > +        <name>minFractionDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable
>> > +which stores the formatted result as a
>> > +String.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Parses the string representation of a number, currency, or
>> percentage
>> > +    </description>
>> > +    <name>parseNumber</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +String to be parsed.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the string in the value
>> > +attribute should be parsed as a number,
>> > +currency, or percentage.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern that determines
>> > +how the string in the value attribute is to be
>> > +parsed.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>parseLocale</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether just the integer portion of
>> > +the given value should be parsed.
>> > +        </description>
>> > +        <name>integerOnly</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the parsed result (of type
>> > +java.lang.Number).
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Formats a date and/or time using the supplied styles and
>> pattern
>> > +    </description>
>> > +    <name>formatDate</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Date and/or time to be formatted.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the time, the date, or both
>> > +the time and date components of the given
>> > +date are to be formatted.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>dateStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>timeStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting style for dates and times.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Time zone in which to represent the formatted
>> > +time.
>> > +        </description>
>> > +        <name>timeZone</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the formatted result as a String.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Parses the string representation of a date and/or time
>> > +    </description>
>> > +    <name>parseDate</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Date string to be parsed.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the date string in the
>> > +value attribute is supposed to contain a
>> > +time, a date, or both.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>dateStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>timeStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern which
>> > +determines how the date string is to be
>> > +parsed.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Time zone in which to interpret any time
>> > +information in the date string.
>> > +        </description>
>> > +        <name>timeZone</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>parseLocale</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable in
>> > +which the parsing result (of type
>> > +java.util.Date) is stored.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +</taglib>
>> >
>> > 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 @@
>> > +<?xml version="1.0"?>
>> > +<!--
>> > +  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.
>> > +-->
>> > +<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
>> > +    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">
>> > +  <description>JSTL 1.1 i18n-capable formatting library</description>
>> > +  <display-name>JSTL fmt</display-name>
>> > +  <tlib-version>1.1</tlib-version>
>> > +  <short-name>fmt</short-name>
>> > +  <uri>http://java.sun.com/jsp/jstl/fmt</uri>
>> > +  <validator>
>> > +    <description>
>> > +        Provides core validation features for JSTL tags.
>> > +    </description>
>> > +    <validator-class>
>> > +        org.apache.taglibs.standard.tlv.JstlFmtTLV
>> > +    </validator-class>
>> > +  </validator>
>> > +  <tag>
>> > +    <description>
>> > +        Sets the request character encoding
>> > +    </description>
>> > +    <name>requestEncoding</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Name of character encoding to be applied when
>> > +decoding request parameters.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Stores the given locale in the locale configuration variable
>> > +    </description>
>> > +    <name>setLocale</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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
>> > +(_).
>> > +    </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Vendor- or browser-specific variant.
>> > +See the java.util.Locale javadocs for
>> > +more information on variants.
>> > +        </description>
>> > +        <name>variant</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of the locale configuration variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Specifies the time zone for any time formatting or parsing
>> actions
>> > +        nested in its body
>> > +    </description>
>> > +    <name>timeZone</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Stores the given time zone in the time zone configuration
>> variable
>> > +    </description>
>> > +    <name>setTimeZone</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the time zone of type
>> > +java.util.TimeZone.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var or the time zone configuration
>> > +variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Loads a resource bundle to be used by its tag body
>> > +    </description>
>> > +    <name>bundle</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.BundleTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <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")
>> > +suffix.
>> > +        </description>
>> > +        <name>basename</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Prefix to be prepended to the value of the message
>> > +key of any nested <fmt:message> action.
>> > +        </description>
>> > +        <name>prefix</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Loads a resource bundle and stores it in the named scoped
>> variable or
>> > +        the bundle configuration variable
>> > +    </description>
>> > +    <name>setBundle</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <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")
>> > +suffix.
>> > +        </description>
>> > +        <name>basename</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which stores
>> > +the i18n localization context of type
>> > +javax.servlet.jsp.jstl.fmt.LocalizationC
>> > +ontext.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var or the localization context
>> > +configuration variable.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Maps key to localized message and performs parametric
>> replacement
>> > +    </description>
>> > +    <name>message</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Message key to be looked up.
>> > +        </description>
>> > +        <name>key</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Localization context in whose resource
>> > +bundle the message key is looked up.
>> > +        </description>
>> > +        <name>bundle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable
>> > +which stores the localized message.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Supplies an argument for parametric replacement to a containing
>> > +        <message> tag
>> > +    </description>
>> > +    <name>param</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Argument used for parametric replacement.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Formats a numeric value as a number, currency, or percentage
>> > +    </description>
>> > +    <name>formatNumber</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Numeric value to be formatted.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the value is to be
>> > +formatted as number, currency, or
>> > +percentage.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +ISO 4217 currency code. Applied only
>> > +when formatting currencies (i.e. if type is
>> > +equal to "currency"); ignored otherwise.
>> > +        </description>
>> > +        <name>currencyCode</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Currency symbol. Applied only when
>> > +formatting currencies (i.e. if type is equal
>> > +to "currency"); ignored otherwise.
>> > +        </description>
>> > +        <name>currencySymbol</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the formatted output
>> > +will contain any grouping separators.
>> > +        </description>
>> > +        <name>groupingUsed</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Maximum number of digits in the integer
>> > +portion of the formatted output.
>> > +        </description>
>> > +        <name>maxIntegerDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Minimum number of digits in the integer
>> > +portion of the formatted output.
>> > +        </description>
>> > +        <name>minIntegerDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Maximum number of digits in the
>> > +fractional portion of the formatted output.
>> > +        </description>
>> > +        <name>maxFractionDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Minimum number of digits in the
>> > +fractional portion of the formatted output.
>> > +        </description>
>> > +        <name>minFractionDigits</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable
>> > +which stores the formatted result as a
>> > +String.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Parses the string representation of a number, currency, or
>> percentage
>> > +    </description>
>> > +    <name>parseNumber</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +String to be parsed.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the string in the value
>> > +attribute should be parsed as a number,
>> > +currency, or percentage.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern that determines
>> > +how the string in the value attribute is to be
>> > +parsed.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>parseLocale</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether just the integer portion of
>> > +the given value should be parsed.
>> > +        </description>
>> > +        <name>integerOnly</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the parsed result (of type
>> > +java.lang.Number).
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Formats a date and/or time using the supplied styles and
>> pattern
>> > +    </description>
>> > +    <name>formatDate</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
>> > +    <body-content>empty</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Date and/or time to be formatted.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>true</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the time, the date, or both
>> > +the time and date components of the given
>> > +date are to be formatted.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>dateStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>timeStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting style for dates and times.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Time zone in which to represent the formatted
>> > +time.
>> > +        </description>
>> > +        <name>timeZone</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable which
>> > +stores the formatted result as a String.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +
>> > +  <tag>
>> > +    <description>
>> > +        Parses the string representation of a date and/or time
>> > +    </description>
>> > +    <name>parseDate</name>
>> > +
>>  <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class>
>> > +    <body-content>JSP</body-content>
>> > +    <attribute>
>> > +        <description>
>> > +Date string to be parsed.
>> > +        </description>
>> > +        <name>value</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Specifies whether the date string in the
>> > +value attribute is supposed to contain a
>> > +time, a date, or both.
>> > +        </description>
>> > +        <name>type</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>dateStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>timeStyle</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Custom formatting pattern which
>> > +determines how the date string is to be
>> > +parsed.
>> > +        </description>
>> > +        <name>pattern</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Time zone in which to interpret any time
>> > +information in the date string.
>> > +        </description>
>> > +        <name>timeZone</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <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.
>> > +        </description>
>> > +        <name>parseLocale</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>true</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Name of the exported scoped variable in
>> > +which the parsing result (of type
>> > +java.util.Date) is stored.
>> > +        </description>
>> > +        <name>var</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +    <attribute>
>> > +        <description>
>> > +Scope of var.
>> > +        </description>
>> > +        <name>scope</name>
>> > +        <required>false</required>
>> > +        <rtexprvalue>false</rtexprvalue>
>> > +    </attribute>
>> > +  </tag>
>> > +  <listener>
>> > +    <listener-class>TestListenerA</listener-class>
>> > +  </listener>
>> > +  <listener>
>> > +    <listener-class>TestListenerB</listener-class>
>> > +  </listener>
>> > +</taglib>
>> >
>> >
>>
>>
>
>
> --
> Ivan
>
>
>


-- 
Ivan

Mime
View raw message