+1 to merge this to wicket-7.x/6.x ! Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov
On Sat, Sep 10, 2016 at 6:00 AM, Pedro Santos <[email protected]> wrote: > Created a branch [1] to elaborate on how the purely improvement in the > stream API can be backported without the bug fix and no impact to current > apps, while providing a correct API to the few future users who may want to > use the MarkupStream. > > 1 - https://github.com/apache/wicket/commits/stream-api-improvement > > Pedro Santos > > On Wed, Sep 7, 2016 at 4:09 AM, Pedro Santos <[email protected]> wrote: > > > 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/MarkupContaine > >>>>>> r.java > >>>>>> +++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContaine > >>>>>> r.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/MarkupS > >>>>>> tream.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/TagUtil > >>>>>> s.java > >>>>>> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/TagUtil > >>>>>> s.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(); > >>>>>> > >>>>> > >> > > >
