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();
> >
> >
> >
>

Reply via email to