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(openTag))
                                {
                                        MarkupElement element =
markupStream.get();

Reply via email to