From: remm Date: Fri, 28 Jul 2006 13:57:53 +0000 (+0000) Subject: - JSP 2.1 API fixes. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=58e40bf60bef0a316de14630e99588535a9562e5;p=tomcat7.0 - JSP 2.1 API fixes. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@426537 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/javax/el/ArrayELResolver.java b/java/javax/el/ArrayELResolver.java index ec812983c..28dcc8270 100644 --- a/java/javax/el/ArrayELResolver.java +++ b/java/javax/el/ArrayELResolver.java @@ -103,7 +103,7 @@ public class ArrayELResolver extends ELResolver { return this.readOnly; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { if (base != null && base.getClass().isArray()) { FeatureDescriptor[] descs = new FeatureDescriptor[Array.getLength(base)]; for (int i = 0; i < descs.length; i++) { diff --git a/java/javax/el/BeanELResolver.java b/java/javax/el/BeanELResolver.java index 95bcafe52..3c0820c21 100644 --- a/java/javax/el/BeanELResolver.java +++ b/java/javax/el/BeanELResolver.java @@ -17,6 +17,7 @@ package javax.el; import java.beans.BeanInfo; +import java.beans.FeatureDescriptor; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; @@ -129,7 +130,7 @@ public class BeanELResolver extends ELResolver { || this.property(context, base, property).isReadOnly(); } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { if (context == null) { throw new NullPointerException(); } @@ -145,7 +146,7 @@ public class BeanELResolver extends ELResolver { pds[i].setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE); pds[i].setValue(TYPE, pds[i].getPropertyType()); } - return Arrays.asList(pds).iterator(); + return Arrays.asList((FeatureDescriptor[]) pds).iterator(); } catch (IntrospectionException e) { // } @@ -165,7 +166,7 @@ public class BeanELResolver extends ELResolver { return null; } - private final static class BeanProperties { + protected final static class BeanProperties { private final Map properties; private final Class type; @@ -200,7 +201,7 @@ public class BeanELResolver extends ELResolver { } } - private final static class BeanProperty { + protected final static class BeanProperty { private final Class type; private final Class owner; diff --git a/java/javax/el/CompositeELResolver.java b/java/javax/el/CompositeELResolver.java index 84789b7ae..6d64eb2c4 100644 --- a/java/javax/el/CompositeELResolver.java +++ b/java/javax/el/CompositeELResolver.java @@ -16,6 +16,7 @@ package javax.el; +import java.beans.FeatureDescriptor; import java.util.Iterator; public class CompositeELResolver extends ELResolver { @@ -84,7 +85,7 @@ public class CompositeELResolver extends ELResolver { return false; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { return new FeatureIterator(context, base, this.resolvers, this.size); } @@ -115,7 +116,7 @@ public class CompositeELResolver extends ELResolver { return null; } - private final static class FeatureIterator implements Iterator { + private final static class FeatureIterator implements Iterator { private final ELContext context; @@ -152,7 +153,7 @@ public class CompositeELResolver extends ELResolver { return this.itr != null; } - public Object next() { + public FeatureDescriptor next() { Object result = null; if (this.itr != null) { if (this.itr.hasNext()) { @@ -163,7 +164,7 @@ public class CompositeELResolver extends ELResolver { } } } - return result; + return (FeatureDescriptor) result; } public void remove() { diff --git a/java/javax/el/ELContextListener.java b/java/javax/el/ELContextListener.java index 5ddfa55eb..25a128a02 100644 --- a/java/javax/el/ELContextListener.java +++ b/java/javax/el/ELContextListener.java @@ -20,7 +20,7 @@ package javax.el; * @author Jacob Hookom [jacob/hookom.net] * */ -public interface ELContextListener { +public interface ELContextListener extends java.util.EventListener { public void contextCreated(ELContextEvent event); diff --git a/java/javax/el/ELResolver.java b/java/javax/el/ELResolver.java index 722e934a7..de01d8cbb 100644 --- a/java/javax/el/ELResolver.java +++ b/java/javax/el/ELResolver.java @@ -62,7 +62,7 @@ public abstract class ELResolver { public abstract boolean isReadOnly(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException; - public abstract Iterator getFeatureDescriptors(ELContext context, Object base); + public abstract Iterator getFeatureDescriptors(ELContext context, Object base); public abstract Class getCommonPropertyType(ELContext context, Object base); } diff --git a/java/javax/el/ListELResolver.java b/java/javax/el/ListELResolver.java index 0d86446a6..7709745f5 100644 --- a/java/javax/el/ListELResolver.java +++ b/java/javax/el/ListELResolver.java @@ -127,7 +127,7 @@ public class ListELResolver extends ELResolver { return this.readOnly; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { if (base instanceof List) { FeatureDescriptor[] descs = new FeatureDescriptor[((List) base).size()]; for (int i = 0; i < descs.length; i++) { diff --git a/java/javax/el/MapELResolver.java b/java/javax/el/MapELResolver.java index fb9592619..fb8622c6c 100644 --- a/java/javax/el/MapELResolver.java +++ b/java/javax/el/MapELResolver.java @@ -107,10 +107,10 @@ public class MapELResolver extends ELResolver { return this.readOnly; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { if (base instanceof Map) { Iterator itr = ((Map) base).keySet().iterator(); - List feats = new ArrayList(); + List feats = new ArrayList(); Object key; FeatureDescriptor desc; while (itr.hasNext()) { diff --git a/java/javax/servlet/jsp/JspContext.java b/java/javax/servlet/jsp/JspContext.java index 6db775df1..0d2e394d6 100644 --- a/java/javax/servlet/jsp/JspContext.java +++ b/java/javax/servlet/jsp/JspContext.java @@ -205,7 +205,7 @@ public abstract class JspContext { * invalidated. */ - abstract public Enumeration getAttributeNamesInScope(int scope); + abstract public Enumeration getAttributeNamesInScope(int scope); /** * The current value of the out object (a JspWriter). diff --git a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java index 339ed29b3..6cbda415f 100644 --- a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java +++ b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java @@ -102,7 +102,7 @@ public class ImplicitObjectELResolver extends ELResolver { return null; } - public Class getType(ELContext context, Object base, Object property) + public Class getType(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException { if (context == null) { throw new NullPointerException(); @@ -150,7 +150,7 @@ public class ImplicitObjectELResolver extends ELResolver { return false; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { List feats = new ArrayList( SCOPE_NAMES.length); FeatureDescriptor feat; @@ -168,7 +168,7 @@ public class ImplicitObjectELResolver extends ELResolver { return feats.iterator(); } - public Class getCommonPropertyType(ELContext context, Object base) { + public Class getCommonPropertyType(ELContext context, Object base) { if (base == null) { return String.class; } diff --git a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java b/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java index d57ca4ac0..aed837c82 100644 --- a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java +++ b/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java @@ -40,7 +40,7 @@ public class ScopedAttributeELResolver extends ELResolver { return null; } - public Class getType(ELContext context, Object base, Object property) + public Class getType(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException { if (context == null) { throw new NullPointerException(); @@ -91,10 +91,10 @@ public class ScopedAttributeELResolver extends ELResolver { return false; } - public Iterator getFeatureDescriptors(ELContext context, Object base) { + public Iterator getFeatureDescriptors(ELContext context, Object base) { PageContext ctxt = (PageContext) context.getContext(JspContext.class); - List list = new ArrayList(); + List list = new ArrayList(); Enumeration e; Object value; String name; @@ -173,7 +173,7 @@ public class ScopedAttributeELResolver extends ELResolver { } } - public Class getCommonPropertyType(ELContext context, Object base) { + public Class getCommonPropertyType(ELContext context, Object base) { if (base == null) { return String.class; } diff --git a/java/javax/servlet/jsp/tagext/SimpleTagSupport.java b/java/javax/servlet/jsp/tagext/SimpleTagSupport.java index 1824639ff..aa730293e 100644 --- a/java/javax/servlet/jsp/tagext/SimpleTagSupport.java +++ b/java/javax/servlet/jsp/tagext/SimpleTagSupport.java @@ -175,7 +175,7 @@ public class SimpleTagSupport * or is an instance of the class specified */ public static final JspTag findAncestorWithClass( - JspTag from, Class klass) + JspTag from, Class klass) { boolean isInterface = false; diff --git a/java/javax/servlet/jsp/tagext/TagData.java b/java/javax/servlet/jsp/tagext/TagData.java index 58003ea44..dbf5eea6c 100644 --- a/java/javax/servlet/jsp/tagext/TagData.java +++ b/java/javax/servlet/jsp/tagext/TagData.java @@ -55,14 +55,14 @@ public class TagData implements Cloneable { */ public TagData(Object[] atts[]) { if (atts == null) { - attributes = new Hashtable(); + attributes = new Hashtable(); } else { - attributes = new Hashtable(atts.length); + attributes = new Hashtable(atts.length); } if (atts != null) { for (int i = 0; i < atts.length; i++) { - attributes.put(atts[i][0], atts[i][1]); + attributes.put((String) atts[i][0], atts[i][1]); } } } @@ -75,7 +75,7 @@ public class TagData implements Cloneable { * * @param attrs A hashtable to get the values from. */ - public TagData(Hashtable attrs) { + public TagData(Hashtable attrs) { this.attributes = attrs; } @@ -143,11 +143,11 @@ public class TagData implements Cloneable { * *@return An enumeration of the attributes in a TagData */ - public java.util.Enumeration getAttributes() { + public java.util.Enumeration getAttributes() { return attributes.keys(); }; // private data - private Hashtable attributes; // the tagname/value map + private Hashtable attributes; // the tagname/value map } diff --git a/java/javax/servlet/jsp/tagext/TagLibraryInfo.java b/java/javax/servlet/jsp/tagext/TagLibraryInfo.java index 8a548bf5a..4667ca77f 100644 --- a/java/javax/servlet/jsp/tagext/TagLibraryInfo.java +++ b/java/javax/servlet/jsp/tagext/TagLibraryInfo.java @@ -225,6 +225,22 @@ abstract public class TagLibraryInfo { } + /** + * Returns an array of TagLibraryInfo objects representing the entire set + * of tag libraries (including this TagLibraryInfo) imported by taglib + * directives in the translation unit that references this TagLibraryInfo. + * If a tag library is imported more than once and bound to different prefices, + * only the TagLibraryInfo bound to the first prefix must be included + * in the returned array. + * + * @return Array of TagLibraryInfo objects representing the entire set + * of tag libraries (including this TagLibraryInfo) imported by taglib + * directives in the translation unit that references this TagLibraryInfo. + * @since 2.1 + */ + public abstract javax.servlet.jsp.tagext.TagLibraryInfo[] getTagLibraryInfos(); + + // Protected fields /** diff --git a/java/javax/servlet/jsp/tagext/TagLibraryValidator.java b/java/javax/servlet/jsp/tagext/TagLibraryValidator.java index 41acb8127..a59a5f13d 100644 --- a/java/javax/servlet/jsp/tagext/TagLibraryValidator.java +++ b/java/javax/servlet/jsp/tagext/TagLibraryValidator.java @@ -94,7 +94,7 @@ abstract public class TagLibraryValidator { * * @param map A Map describing the init parameters */ - public void setInitParameters(Map map) { + public void setInitParameters(Map map) { initParameters = map; } @@ -105,7 +105,7 @@ abstract public class TagLibraryValidator { * * @return The init parameters as an immutable map. */ - public Map getInitParameters() { + public Map getInitParameters() { return initParameters; } @@ -138,6 +138,6 @@ abstract public class TagLibraryValidator { } // Private data - private Map initParameters; + private Map initParameters; } diff --git a/java/javax/servlet/jsp/tagext/TagSupport.java b/java/javax/servlet/jsp/tagext/TagSupport.java index 1e6ca3c66..f1a81c3de 100644 --- a/java/javax/servlet/jsp/tagext/TagSupport.java +++ b/java/javax/servlet/jsp/tagext/TagSupport.java @@ -228,7 +228,7 @@ public class TagSupport implements IterationTag, Serializable { public void setValue(String k, Object o) { if (values == null) { - values = new Hashtable(); + values = new Hashtable(); } values.put(k, o); } @@ -267,7 +267,7 @@ public class TagSupport implements IterationTag, Serializable { * or null or an empty Enumeration if no values have been set. */ - public Enumeration getValues() { + public Enumeration getValues() { if (values == null) { return null; } @@ -277,7 +277,7 @@ public class TagSupport implements IterationTag, Serializable { // private fields private Tag parent; - private Hashtable values; + private Hashtable values; /** * The value of the id attribute of this tag; or null. */ diff --git a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java index 9707c1cee..31c61048a 100644 --- a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java +++ b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java @@ -44,6 +44,7 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { private Hashtable tagFileMap; private ParserController pc; + private PageInfo pi; private Vector vec; /** @@ -51,11 +52,13 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { */ public ImplicitTagLibraryInfo(JspCompilationContext ctxt, ParserController pc, + PageInfo pi, String prefix, String tagdir, ErrorDispatcher err) throws JasperException { super(prefix, null); this.pc = pc; + this.pi = pi; this.tagFileMap = new Hashtable(); this.vec = new Vector(); @@ -138,4 +141,10 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { return tagFile; } + + public TagLibraryInfo[] getTagLibraryInfos() { + Collection coll = pi.getTaglibs(); + return (TagLibraryInfo[]) coll.toArray(new TagLibraryInfo[0]); + } + } diff --git a/java/org/apache/jasper/compiler/JspDocumentParser.java b/java/org/apache/jasper/compiler/JspDocumentParser.java index ce88fa317..26bec8230 100644 --- a/java/org/apache/jasper/compiler/JspDocumentParser.java +++ b/java/org/apache/jasper/compiler/JspDocumentParser.java @@ -1232,6 +1232,7 @@ class JspDocumentParser new ImplicitTagLibraryInfo( ctxt, parserController, + pageInfo, prefix, tagdir, err); @@ -1261,6 +1262,7 @@ class JspDocumentParser new TagLibraryInfoImpl( ctxt, parserController, + pageInfo, prefix, uri, location, diff --git a/java/org/apache/jasper/compiler/Parser.java b/java/org/apache/jasper/compiler/Parser.java index 97fda85a7..fb4d88207 100644 --- a/java/org/apache/jasper/compiler/Parser.java +++ b/java/org/apache/jasper/compiler/Parser.java @@ -415,7 +415,7 @@ class Parser implements TagConstants { } if (impl == null) { String[] location = ctxt.getTldLocation(uri); - impl = new TagLibraryInfoImpl(ctxt, parserController, + impl = new TagLibraryInfoImpl(ctxt, parserController, pageInfo, prefix, uri, location, err); if (ctxt.getOptions().isCaching()) { ctxt.getOptions().getCache().put(uri, impl); @@ -431,7 +431,7 @@ class Parser implements TagConstants { if (pageInfo.getTaglib(urnTagdir) == null) { pageInfo.addTaglib(urnTagdir, new ImplicitTagLibraryInfo(ctxt, - parserController, prefix, tagdir, err)); + parserController, pageInfo, prefix, tagdir, err)); } pageInfo.addPrefixMapping(prefix, urnTagdir); } diff --git a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java index 8d6744915..fe6c4b988 100644 --- a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java +++ b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java @@ -23,6 +23,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.net.JarURLConnection; import java.net.URL; +import java.util.Collection; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; @@ -67,6 +68,8 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { private Hashtable jarEntries; private JspCompilationContext ctxt; + + private PageInfo pi; private ErrorDispatcher err; @@ -128,13 +131,14 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { /** * Constructor. */ - public TagLibraryInfoImpl(JspCompilationContext ctxt, ParserController pc, + public TagLibraryInfoImpl(JspCompilationContext ctxt, ParserController pc, PageInfo pi, String prefix, String uriIn, String[] location, ErrorDispatcher err) throws JasperException { super(prefix, uriIn); this.ctxt = ctxt; this.parserController = pc; + this.pi = pi; this.err = err; InputStream in = null; JarFile jarFile = null; @@ -197,6 +201,11 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { } + public TagLibraryInfo[] getTagLibraryInfos() { + Collection coll = pi.getTaglibs(); + return (TagLibraryInfo[]) coll.toArray(new TagLibraryInfo[0]); + } + /* * @param ctxt The JSP compilation context @param uri The TLD's uri @param * in The TLD's input stream @param jarFileUrl The JAR file containing the diff --git a/java/org/apache/jasper/runtime/JspContextWrapper.java b/java/org/apache/jasper/runtime/JspContextWrapper.java index ca0a4b918..ce2435e99 100644 --- a/java/org/apache/jasper/runtime/JspContextWrapper.java +++ b/java/org/apache/jasper/runtime/JspContextWrapper.java @@ -220,7 +220,7 @@ public class JspContextWrapper extends PageContext implements VariableResolver { } } - public Enumeration getAttributeNamesInScope(int scope) { + public Enumeration getAttributeNamesInScope(int scope) { if (scope == PAGE_SCOPE) { return pageAttributes.keys(); } diff --git a/java/org/apache/jasper/runtime/PageContextImpl.java b/java/org/apache/jasper/runtime/PageContextImpl.java index 0a3baa3eb..5008c1a89 100644 --- a/java/org/apache/jasper/runtime/PageContextImpl.java +++ b/java/org/apache/jasper/runtime/PageContextImpl.java @@ -491,7 +491,7 @@ public class PageContextImpl extends PageContext { return context.getAttribute(name); } - public Enumeration getAttributeNamesInScope(final int scope) { + public Enumeration getAttributeNamesInScope(final int scope) { if (SecurityUtil.isPackageProtectionEnabled()) { return (Enumeration) AccessController .doPrivileged(new PrivilegedAction() {