Author: markt Date: Sun Nov 23 15:35:05 2008 New Revision: 720069 URL: http://svn.apache.org/viewvc?rev=720069&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42077 Don't include nulls in iterator. Based on a patch by Mathias Broekelmann
Modified: tomcat/trunk/java/javax/el/CompositeELResolver.java Modified: tomcat/trunk/java/javax/el/CompositeELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/CompositeELResolver.java?rev=720069&r1=720068&r2=720069&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/CompositeELResolver.java (original) +++ tomcat/trunk/java/javax/el/CompositeELResolver.java Sun Nov 23 15:35:05 2008 @@ -19,6 +19,7 @@ import java.beans.FeatureDescriptor; import java.util.Iterator; +import java.util.NoSuchElementException; public class CompositeELResolver extends ELResolver { @@ -127,10 +128,12 @@ private final int size; - private Iterator itr; + private Iterator<FeatureDescriptor> itr; private int idx; + private FeatureDescriptor next; + public FeatureIterator(ELContext context, Object base, ELResolver[] resolvers, int size) { this.context = context; @@ -150,22 +153,30 @@ } } - public boolean hasNext() { - return this.itr != null; + public boolean hasNext() { + if (this.next != null) + return true; + if (this.itr != null){ + while (this.next == null && itr.hasNext()) { + this.next = itr.next(); + } + } else { + return false; + } + if (this.next == null) { + this.itr = null; + this.guaranteeIterator(); + } + return hasNext(); } public FeatureDescriptor next() { - Object result = null; - if (this.itr != null) { - if (this.itr.hasNext()) { - result = this.itr.next(); - if (!this.itr.hasNext()) { - this.itr = null; - this.guaranteeIterator(); - } - } - } - return (FeatureDescriptor) result; + if (!hasNext()) + throw new NoSuchElementException(); + FeatureDescriptor next = this.next; + this.next = null; + return next; + } public void remove() { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]