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

Reply via email to