You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/02/09 14:01:24 UTC

[4/4] git commit: WICKET-4390 MarkupParser#add(IMarkupFilter filter, Class beforeFilter) doesn't add the filter into the correct place.

WICKET-4390 MarkupParser#add(IMarkupFilter filter,Class beforeFilter) doesn't add the filter into the correct place.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6a497104
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6a497104
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6a497104

Branch: refs/heads/master
Commit: 6a4971045bedb024bcb010eb439c3840f3cfb7aa
Parents: 9a203eb
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 9 14:59:15 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 9 15:01:05 2012 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/markup/MarkupParser.java     |   33 ++++++++++++++-
 1 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/6a497104/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java b/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
index 904426d..7308313 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/MarkupParser.java
@@ -36,6 +36,7 @@ import org.apache.wicket.markup.parser.filter.WicketMessageTagHandler;
 import org.apache.wicket.markup.parser.filter.WicketNamespaceHandler;
 import org.apache.wicket.markup.parser.filter.WicketRemoveTagHandler;
 import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
+import org.apache.wicket.util.lang.Objects;
 
 /**
  * This is Wicket's default markup parser. It gets pre-configured with Wicket's default wicket
@@ -172,7 +173,9 @@ public class MarkupParser extends AbstractMarkupParser
 		filters.add(new RelativePathPrefixHandler(markupResourceStream));
 		filters.add(new EnclosureHandler());
 		filters.add(new InlineEnclosureHandler());
-		filters.add(new StyleAndScriptIdentifier(markup));
+
+		// Append it. See WICKET-4390
+		filters.add(new StyleAndScriptIdentifier(markup), StyleAndScriptIdentifier.class);
 		filters.add(new ConditionalCommentFilter());
 
 		return filters;
@@ -206,7 +209,7 @@ public class MarkupParser extends AbstractMarkupParser
 				return false;
 			}
 
-			int index = indexOf(beforeFilter);
+			int index = firstIndexOfClass(beforeFilter);
 			if (index < 0)
 			{
 				return super.add(filter);
@@ -217,6 +220,32 @@ public class MarkupParser extends AbstractMarkupParser
 		}
 
 		/**
+		 * Finds the index of the first entry which is from the same type as the passed
+		 * {@literal filterClass} argument.
+		 *
+		 * @param filterClass
+		 *      the class to search for
+		 * @return the index of the first match or -1 otherwise
+		 */
+		private int firstIndexOfClass(final Class<? extends IMarkupFilter> filterClass)
+		{
+			int result = -1;
+			if (filterClass != null)
+			{
+				final int size = size();
+				for (int index = 0; index < size; index++) {
+					Class<? extends IMarkupFilter> currentFilterClass = get(index).getClass();
+					if (Objects.equal(filterClass, currentFilterClass))
+					{
+						result = index;
+						break;
+					}
+				}
+			}
+			return result;
+		}
+
+		/**
 		 * a) Allow subclasses to configure individual Wicket filters which otherwise can not be
 		 * accessed.
 		 * <p>