You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2016/09/05 05:01:46 UTC

wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

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 <pe...@apache.org>
Authored: Mon Sep 5 02:00:29 2016 -0300
Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
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();
 


Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Martin Grigorov <mg...@apache.org>.
Hi Pedro,

On Wed, Sep 7, 2016 at 8:57 AM, Pedro Santos <pe...@gmail.com> wrote:

> Hi,
>
> @martin: indeed. But it's a small chance and that the bug fix will benefit
> future devs who may want to use Wicket 6 or 7 to parse and iterate markup.
> Does -0 means in doubt but inclined to -1? In I'm in doubt whether to
> backport or not as well.
>

That's correct.
-0 means "I'm towards -1 but I'll not veto it if other devs think it needs
to be backported".


>
> @tobias: to list this bug fix in the release change log looks enough to me.
> Any dev using Wicket to parse and iterate a markup would have ran in the
> same problem. As WICKET-6165 is the first ticket I see on this matter, it
> looks like this steam API, even being public, wasn't being used outside
> Wicket core.
>

And this is the reason why I think it doesn't need to be backported - it is
very minor, and most probably no one needs it.
I'd love to hear what is Thorstend reason to deal with this part of the
code. Most probably he does something that could be done in simpler ways.


>
> cheers
>
>
> Pedro Santos
>
> On Wed, Sep 7, 2016 at 3:01 AM, Tobias Soloschenko <
> tobiassoloschenko@googlemail.com> 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 <mg...@apache.org>:
> > >
> > > 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 <pe...@gmail.com>
> > 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, <pe...@apache.org> 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 <pe...@apache.org>
> > >>> Authored: Mon Sep 5 02:00:29 2016 -0300
> > >>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
> > >>> 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();
> > >>
> >
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Pedro Santos <pe...@gmail.com>.
Hi,

@martin: indeed. But it's a small chance and that the bug fix will benefit
future devs who may want to use Wicket 6 or 7 to parse and iterate markup.
Does -0 means in doubt but inclined to -1? In I'm in doubt whether to
backport or not as well.

@tobias: to list this bug fix in the release change log looks enough to me.
Any dev using Wicket to parse and iterate a markup would have ran in the
same problem. As WICKET-6165 is the first ticket I see on this matter, it
looks like this steam API, even being public, wasn't being used outside
Wicket core.

cheers


Pedro Santos

On Wed, Sep 7, 2016 at 3:01 AM, Tobias Soloschenko <
tobiassoloschenko@googlemail.com> 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 <mg...@apache.org>:
> >
> > 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 <pe...@gmail.com>
> 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, <pe...@apache.org> 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 <pe...@apache.org>
> >>> Authored: Mon Sep 5 02:00:29 2016 -0300
> >>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
> >>> 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();
> >>
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Martin Grigorov <mg...@apache.org>.
+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 <pe...@gmail.com> 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 <pe...@gmail.com> 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 <sv...@meiers.net> 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 <mg...@apache.org>:
> >>>>
> >>>> 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 <pe...@gmail.com>
> >>>>> 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, <pe...@apache.org> 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 <pe...@apache.org>
> >>>>>> Authored: Mon Sep 5 02:00:29 2016 -0300
> >>>>>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
> >>>>>> 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();
> >>>>>>
> >>>>>
> >>
> >
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Pedro Santos <pe...@gmail.com>.
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 <pe...@gmail.com> 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 <sv...@meiers.net> 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 <mg...@apache.org>:
>>>>
>>>> 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 <pe...@gmail.com>
>>>>> 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, <pe...@apache.org> 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 <pe...@apache.org>
>>>>>> Authored: Mon Sep 5 02:00:29 2016 -0300
>>>>>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
>>>>>> 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();
>>>>>>
>>>>>
>>
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Pedro Santos <pe...@gmail.com>.
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 <sv...@meiers.net> 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 <mg...@apache.org>:
>>>
>>> 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 <pe...@gmail.com>
>>>> 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, <pe...@apache.org> 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 <pe...@apache.org>
>>>>> Authored: Mon Sep 5 02:00:29 2016 -0300
>>>>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
>>>>> 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();
>>>>>
>>>>
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Sven Meier <sv...@meiers.net>.
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 <mg...@apache.org>:
>>
>> 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 <pe...@gmail.com> 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, <pe...@apache.org> 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 <pe...@apache.org>
>>>> Authored: Mon Sep 5 02:00:29 2016 -0300
>>>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
>>>> 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();


Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Tobias Soloschenko <to...@googlemail.com>.
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 <mg...@apache.org>:
> 
> 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 <pe...@gmail.com> 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, <pe...@apache.org> 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 <pe...@apache.org>
>>> Authored: Mon Sep 5 02:00:29 2016 -0300
>>> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
>>> 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();
>> 

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Martin Grigorov <mg...@apache.org>.
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 <pe...@gmail.com> 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, <pe...@apache.org> 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 <pe...@apache.org>
> > Authored: Mon Sep 5 02:00:29 2016 -0300
> > Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
> > 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();
> >
> >
> >
>

Re: wicket git commit: WICKET-6165 renaming MarkupStream#hasMore to MarkupStream#isCurrentIndexInsideTheStream

Posted by Pedro Santos <pe...@gmail.com>.
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, <pe...@apache.org> 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 <pe...@apache.org>
> Authored: Mon Sep 5 02:00:29 2016 -0300
> Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
> 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();
>
>
>