Return-Path: Delivered-To: apmail-jakarta-tomcat-dev-archive@apache.org Received: (qmail 22358 invoked from network); 21 Aug 2002 22:05:45 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 21 Aug 2002 22:05:45 -0000 Received: (qmail 10366 invoked by uid 97); 21 Aug 2002 22:06:13 -0000 Delivered-To: qmlist-jakarta-archive-tomcat-dev@jakarta.apache.org Received: (qmail 10310 invoked by uid 97); 21 Aug 2002 22:06:12 -0000 Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Tomcat Developers List" Reply-To: "Tomcat Developers List" Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 10299 invoked by uid 97); 21 Aug 2002 22:06:12 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Date: 21 Aug 2002 22:05:34 -0000 Message-ID: <20020821220534.42556.qmail@icarus.apache.org> From: kinman@apache.org To: jakarta-servletapi-5-cvs@apache.org Subject: cvs commit: jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext TagAdapter.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N kinman 2002/08/21 15:05:34 Modified: jsr152/src/share/javax/servlet/jsp/tagext TagAdapter.java Log: - Fixed 11884: getParent in a SimpleTag implementation returns a Tag. Submitted by Mark Roth Revision Changes Path 1.3 +21 -5 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagAdapter.java Index: TagAdapter.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagAdapter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TagAdapter.java 19 Aug 2002 16:29:51 -0000 1.2 +++ TagAdapter.java 21 Aug 2002 22:05:34 -0000 1.3 @@ -77,15 +77,22 @@ { /** The simple tag that's being adapted */ private SimpleTag simpleTagAdaptee; + + /** The parent, of this tag, converted (if necessary) to be of type Tag */ + private Tag cachedParent; /** - * Creates a new TagAdapter that wraps the given SimeplTag and + * Creates a new TagAdapter that wraps the given SimpleTag and * returns the parent tag when getParent() is called. * * @param adaptee The SimpleTag being adapted as a Tag. */ public TagAdapter( SimpleTag adaptee ) { - this.simpleTagAdaptee = simpleTagAdaptee; + if( adaptee == null ) { + // Cannot wrap a null adaptee. + throw new IllegalArgumentException(); + } + this.simpleTagAdaptee = adaptee; } /** @@ -122,9 +129,18 @@ * @return The parent of the tag being adapted. */ public Tag getParent() { - // Note the parent tag must be an instance of Tag (either a - // direct instance or a wrapped instance). - return (Tag)simpleTagAdaptee.getParent(); + if( this.cachedParent == null ) { + JspTag parent = simpleTagAdaptee.getParent(); + if( parent instanceof Tag ) { + this.cachedParent = (Tag)parent; + } + else { + // Must be SimpleTag - no other types defined. + this.cachedParent = new TagAdapter( (SimpleTag)parent ); + } + } + + return this.cachedParent; } /** -- To unsubscribe, e-mail: For additional commands, e-mail: