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 01:11:34 GMT
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

Mime
View raw message