Hi Sven, I think you meant the bug fix shouldn't be backported given this change is both a bug fix and a consistency improvement, and that the consistency improvement can indeed be merged into 6.x and 7.x with no impact on existing applications.
I may have chosen the wrong words in the commit message since the change rather adds the isCurrentIndexInsideTheStream method next to the current hasMore method than to rename hasMore to isCurrentIndexInsideTheStream. cheers Pedro Santos On Wed, Sep 7, 2016 at 3:08 AM, Sven Meier <[email protected]> wrote: > Hi, > > IMHO this change should *not* be merged into 6.x and 7.x: > It's important to improve consistency on master, but we shouldn't risk > breaking existing applications. > > Regards > Sven > > > > On 07.09.2016 08:01, Tobias Soloschenko wrote: > >> Hi, >> >> can we somehow announce this / list this up? >> >> Maybe in the release news and migration guide? >> >> Otherwise devs will wonder why something is not working like with the >> file part parse call in forms some months ago. >> >> kind regards >> >> Tobias >> >> Am 07.09.2016 um 04:33 schrieb Martin Grigorov <[email protected]>: >>> >>> 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(ope >>>>> nTag)) >>>>> { >>>>> MarkupElement element = >>>>> markupStream.get(); >>>>> >>>> >
