Hi, I'm -0 to backport this to 6.x/7.x. IMO there is a small chance that this will break some applications silently.
Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Mon, Sep 5, 2016 at 7:10 AM, Pedro Santos <[email protected]> wrote: > I searched of MarkupStream#hasMore usages inside Wicket Stuff, which should > give a good idea of how often this method is used, and I think it's safe to > apply the fix on the 1.6.x and 1.7.x branches. > > Pedro Santos > > On Mon, Sep 5, 2016 at 2:01 AM, <[email protected]> wrote: > > > Repository: wicket > > Updated Branches: > > refs/heads/master 7da317e51 -> e3e09fd00 > > > > > > WICKET-6165 renaming MarkupStream#hasMore to MarkupStream# > > isCurrentIndexInsideTheStream > > > > > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e3e09fd0 > > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e3e09fd0 > > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e3e09fd0 > > > > Branch: refs/heads/master > > Commit: e3e09fd002452c8d2ea4be18f2733cffda78fc10 > > Parents: 7da317e > > Author: Pedro Henrique Oliveira dos Santos <[email protected]> > > Authored: Mon Sep 5 02:00:29 2016 -0300 > > Committer: Pedro Henrique Oliveira dos Santos <[email protected]> > > Committed: Mon Sep 5 02:00:29 2016 -0300 > > > > ---------------------------------------------------------------------- > > .../java/org/apache/wicket/MarkupContainer.java | 2 +- > > .../org/apache/wicket/markup/MarkupStream.java | 18 > +++++++++++++----- > > .../java/org/apache/wicket/markup/TagUtils.java | 2 +- > > .../html/TransparentWebMarkupContainer.java | 2 +- > > .../wicket/markup/html/border/BorderBehavior.java | 6 +++--- > > .../wicket/markup/html/internal/Enclosure.java | 2 +- > > .../markup/resolver/WicketMessageResolver.java | 4 ++-- > > 7 files changed, 22 insertions(+), 14 deletions(-) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/ > MarkupContainer.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/ > MarkupContainer.java > > b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java > > index 09705ff..6df5316 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java > > @@ -1643,7 +1643,7 @@ public abstract class MarkupContainer extends > > Component implements Iterable<Comp > > */ > > protected final void renderAll(final MarkupStream markupStream, > > final ComponentTag openTag) > > { > > - while (markupStream.hasMore()) > > + while (markupStream.isCurrentIndexInsideTheStream()) > > { > > // In case of Page we need to render the whole > > file. For all other components just what > > // is in between the open and the close tag. > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/ > > MarkupStream.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/ > MarkupStream.java > > b/wicket-core/src/main/java/org/apache/wicket/markup/MarkupStream.java > > index 99a5165..d5d8b74 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/ > MarkupStream.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/ > MarkupStream.java > > @@ -134,7 +134,7 @@ public class MarkupStream > > public boolean equalTo(final MarkupStream that) > > { > > // While a has more markup elements > > - while (hasMore()) > > + while (isCurrentIndexInsideTheStream()) > > { > > // Get an element from each > > final MarkupElement thisElement = this.get(); > > @@ -163,7 +163,7 @@ public class MarkupStream > > } > > > > // If we've run out of markup elements in b > > - if (!that.hasMore()) > > + if (!that.isCurrentIndexInsideTheStream()) > > { > > // then the two streams match perfectly > > return true; > > @@ -271,11 +271,19 @@ public class MarkupStream > > } > > > > /** > > + * @return True if this markup stream is moved to a MarkupElement > > element > > + */ > > + public boolean isCurrentIndexInsideTheStream() > > + { > > + return currentIndex < markup.size(); > > + } > > + > > + /** > > * @return True if this markup stream has more MarkupElement > > elements > > */ > > public boolean hasMore() > > { > > - return currentIndex < markup.size(); > > + return currentIndex < (markup.size() - 1); > > } > > > > /** > > @@ -417,7 +425,7 @@ public class MarkupStream > > */ > > public boolean skipUntil(final Class<? extends MarkupElement> > > clazz) > > { > > - while (hasMore()) > > + while (isCurrentIndexInsideTheStream()) > > { > > if (clazz.isInstance(current)) > > { > > @@ -462,7 +470,7 @@ public class MarkupStream > > public void skipToMatchingCloseTag(final ComponentTag openTag) > > { > > // Loop through the markup in this container > > - while (hasMore()) > > + while (isCurrentIndexInsideTheStream()) > > { > > // If the current markup tag closes the openTag > > if (get().closes(openTag)) > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/ > TagUtils.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/ > TagUtils.java > > b/wicket-core/src/main/java/org/apache/wicket/markup/TagUtils.java > > index 9bd9433..bd0ee75 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/TagUtils.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/TagUtils.java > > @@ -242,7 +242,7 @@ public class TagUtils > > > > MarkupStream stream = new MarkupStream(fragment); > > stream.setCurrentIndex(streamOffset); > > - while (stream.hasMore()) > > + while (stream.isCurrentIndexInsideTheStream()) > > { > > MarkupElement elem = stream.get(); > > > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > TransparentWebMarkupContainer.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > TransparentWebMarkupContainer.java b/wicket-core/src/main/java/ > > org/apache/wicket/markup/html/TransparentWebMarkupContainer.java > > index f9f76de..6959914 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > TransparentWebMarkupContainer.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > TransparentWebMarkupContainer.java > > @@ -133,7 +133,7 @@ public class TransparentWebMarkupContainer extends > > WebMarkupContainer implements > > { > > MarkupStream stream = new MarkupStream(getMarkup()); > > > > - while (stream.hasMore()) > > + while (stream.isCurrentIndexInsideTheStream()) > > { > > MarkupElement childOpenTag = > stream.nextOpenTag(); > > > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/ > > html/border/BorderBehavior.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > border/BorderBehavior.java > > b/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > border/BorderBehavior.java > > index ecb15b8..9459918 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > border/BorderBehavior.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > border/BorderBehavior.java > > @@ -61,7 +61,7 @@ public class BorderBehavior extends Behavior > > stream.setCurrentIndex(0); > > > > boolean insideBorderMarkup = false; > > - while (stream.hasMore()) > > + while (stream.isCurrentIndexInsideTheStream()) > > { > > MarkupElement elem = stream.get(); > > stream.next(); > > @@ -104,7 +104,7 @@ public class BorderBehavior extends Behavior > > } > > } > > > > - if (!stream.hasMore()) > > + if (!stream.isCurrentIndexInsideTheStream()) > > { > > throw new WicketRuntimeException("Markup for > > component border " + getClass().getName() + > > " ended prematurely, was expecting > > </wicket:border>"); > > @@ -117,7 +117,7 @@ public class BorderBehavior extends Behavior > > final MarkupStream stream = getMarkupStream(component); > > final Response response = component.getResponse(); > > > > - while (stream.hasMore()) > > + while (stream.isCurrentIndexInsideTheStream()) > > { > > MarkupElement elem = stream.get(); > > stream.next(); > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/ > > html/internal/Enclosure.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > internal/Enclosure.java > > b/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > internal/Enclosure.java > > index 2d72ac0..1daa4c7 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > internal/Enclosure.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/ > > internal/Enclosure.java > > @@ -229,7 +229,7 @@ public class Enclosure extends WebMarkupContainer > > implements IComponentResolver > > int orgIndex = markupStream.getCurrentIndex(); > > try > > { > > - while (markupStream.hasMore()) > > + while (markupStream. > > isCurrentIndexInsideTheStream()) > > { > > markupStream.next(); > > if (markupStream.skipUntil( > > ComponentTag.class)) > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > > e3e09fd0/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ > > WicketMessageResolver.java > > ---------------------------------------------------------------------- > > diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/ > resolver/WicketMessageResolver.java > > b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ > > WicketMessageResolver.java > > index f2f99f8..bbb5643 100644 > > --- a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ > > WicketMessageResolver.java > > +++ b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/ > > WicketMessageResolver.java > > @@ -230,7 +230,7 @@ public class WicketMessageResolver implements > > IComponentResolver > > log.warn("No value found for > > wicket:message tag with key: {}", key); > > > > // If open tag was open-close > > - if (markupStream.hasMore() == false) > > + if (markupStream. > > isCurrentIndexInsideTheStream() == false) > > { > > String formatedNotFound = > > String.format(NOT_FOUND, key); > > getResponse().write( > > formatedNotFound); > > @@ -358,7 +358,7 @@ public class WicketMessageResolver implements > > IComponentResolver > > // child component and save their tag index > > if (!tag.isOpenClose()) > > { > > - while (markupStream.hasMore() && > > !markupStream.get().closes(openTag)) > > + while (markupStream. > > isCurrentIndexInsideTheStream() && !markupStream.get().closes(openTag)) > > { > > MarkupElement element = > > markupStream.get(); > > > > > > >
