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:00:34 UTC

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

Updated Branches:
  refs/heads/wicket-1.5.x f97fda2f3 -> 1722f39f0


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/1722f39f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1722f39f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1722f39f

Branch: refs/heads/wicket-1.5.x
Commit: 1722f39f0c3dfbaf665281e0d6a3c2da4e2dc1a6
Parents: f97fda2
Author: martin-g <mg...@apache.org>
Authored: Thu Feb 9 15:00:26 2012 +0200
Committer: martin-g <mg...@apache.org>
Committed: Thu Feb 9 15:00:26 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/1722f39f/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>