Repository: wicket
Updated Branches:
  refs/heads/master f1e84a799 -> ed64e166d


http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/main/java/org/apache/wicket/ajax/json/XML.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/XML.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/json/XML.java
index b8705d6..0767e34 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/XML.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/XML.java
@@ -31,11 +31,11 @@ import java.util.Iterator;
  * This provides static methods to convert an XML text into a JSONObject,
  * and to covert a JSONObject into an XML text.
  * @author JSON.org
- * @version 2011-02-11
+ * @version 2013-11-12
  */
 public class XML {
 
-    /** The Character '&'. */
+    /** The Character '&'. */
     public static final Character AMP   = new Character('&');
 
     /** The Character '''. */
@@ -50,7 +50,7 @@ public class XML {
     /** The Character '>'. */
     public static final Character GT    = new Character('>');
 
-    /** The Character '<'. */
+    /** The Character '&lt;'. */
     public static final Character LT    = new Character('<');
 
     /** The Character '?'. */
@@ -99,21 +99,22 @@ public class XML {
         }
         return sb.toString();
     }
-    
+
     /**
-     * Throw an exception if the string contains whitespace. 
+     * Throw an exception if the string contains whitespace.
      * Whitespace is not allowed in tagNames and attributes.
      * @param string
      * @throws JSONException
      */
-    public static void noSpace(String string) throws JSONException {
+    public static void noSpace(String string) throws JSONException
+    {
         int i, length = string.length();
         if (length == 0) {
             throw new JSONException("Empty string.");
         }
         for (i = 0; i < length; i += 1) {
             if (Character.isWhitespace(string.charAt(i))) {
-                throw new JSONException("'" + string + 
+                throw new JSONException("'" + string +
                         "' contains a space character.");
             }
         }
@@ -196,7 +197,7 @@ public class XML {
             token = x.nextToken();
             if (name == null) {
                 throw x.syntaxError("Mismatched close tag " + token);
-            }            
+            }
             if (!token.equals(name)) {
                 throw x.syntaxError("Mismatched " + name + " and " + token);
             }
@@ -229,7 +230,7 @@ public class XML {
                         if (!(token instanceof String)) {
                             throw x.syntaxError("Missing value");
                         }
-                        jsonobject.accumulate(string, 
+                        jsonobject.accumulate(string,
                                 XML.stringToValue((String)token));
                         token = null;
                     } else {
@@ -262,7 +263,7 @@ public class XML {
                         } else if (token instanceof String) {
                             string = (String)token;
                             if (string.length() > 0) {
-                                jsonobject.accumulate("content", 
+                                jsonobject.accumulate("content",
                                         XML.stringToValue(string));
                             }
 
@@ -274,7 +275,7 @@ public class XML {
                                     context.accumulate(tagName, "");
                                 } else if (jsonobject.length() == 1 &&
                                        jsonobject.opt("content") != null) {
-                                    context.accumulate(tagName, 
+                                    context.accumulate(tagName,
                                             jsonobject.opt("content"));
                                 } else {
                                     context.accumulate(tagName, jsonobject);
@@ -295,15 +296,12 @@ public class XML {
      * Try to convert a string into a number, boolean, or null. If the string
      * can't be converted, return the string. This is much less ambitious than
      * JSONObject.stringToValue, especially because it does not attempt to
-     * convert plus forms, octal forms, hex forms, or E forms lacking decimal 
+     * convert plus forms, octal forms, hex forms, or E forms lacking decimal
      * points.
      * @param string A String.
      * @return A simple JSON value.
      */
     public static Object stringToValue(String string) {
-        if ("".equals(string)) {
-            return string;
-        }
         if ("true".equalsIgnoreCase(string)) {
             return Boolean.TRUE;
         }
@@ -313,41 +311,31 @@ public class XML {
         if ("null".equalsIgnoreCase(string)) {
             return JSONObject.NULL;
         }
-        if ("0".equals(string)) {
-            return new Integer(0);
-        }
 
-// If it might be a number, try converting it. If that doesn't work, 
-// return the string.
+// If it might be a number, try converting it, first as a Long, and then as a
+// Double. If that doesn't work, return the string.
 
         try {
             char initial = string.charAt(0);
-            boolean negative = false;
-            if (initial == '-') {
-                initial = string.charAt(1);
-                negative = true;
-            }
-            if (initial == '0' && string.charAt(negative ? 2 : 1) == '0') {
-                return string;
-            }
-            if ((initial >= '0' && initial <= '9')) {
-                if (string.indexOf('.') >= 0) {
-                    return Double.valueOf(string);
-                } else if (string.indexOf('e') < 0 && string.indexOf('E') < 0) 
{
-                    Long myLong = new Long(string);
-                    if (myLong.longValue() == myLong.intValue()) {
-                        return new Integer(myLong.intValue());
-                    } else {
-                        return myLong;
-                    }
+            if (initial == '-' || (initial >= '0' && initial <= '9')) {
+                Long value = new Long(string);
+                if (value.toString().equals(string)) {
+                    return value;
                 }
             }
         }  catch (Exception ignore) {
+            try {
+                Double value = new Double(string);
+                if (value.toString().equals(string)) {
+                    return value;
+                }
+            }  catch (Exception ignoreAlso) {
+            }
         }
         return string;
     }
 
-    
+
     /**
      * Convert a well-formed (but not necessarily valid) XML string into a
      * JSONObject. Some information may be lost in this transformation
@@ -394,7 +382,7 @@ public class XML {
             throws JSONException {
         StringBuffer sb = new StringBuffer();
         int          i;
-        JSONArray    ja;
+        JSONArray ja;
         JSONObject   jo;
         String       key;
         Iterator     keys;
@@ -505,4 +493,4 @@ public class XML {
             }
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/main/java/org/apache/wicket/ajax/json/XMLTokener.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/json/XMLTokener.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/json/XMLTokener.java
index 3b80154..c20500d 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/XMLTokener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/XMLTokener.java
@@ -1,365 +1,367 @@
-package org.apache.wicket.ajax.json;
-
-/*
-Copyright (c) 2002 JSON.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-/**
- * The XMLTokener extends the JSONTokener to provide additional methods
- * for the parsing of XML texts.
- * @author JSON.org
- * @version 2010-12-24
- */
-public class XMLTokener extends JSONTokener {
-
-
-   /** The table of entity values. It initially contains Character values for
-    * amp, apos, gt, lt, quot.
-    */
-   public static final java.util.HashMap entity;
-
-   static {
-       entity = new java.util.HashMap(8);
-       entity.put("amp",  XML.AMP);
-       entity.put("apos", XML.APOS);
-       entity.put("gt",   XML.GT);
-       entity.put("lt",   XML.LT);
-       entity.put("quot", XML.QUOT);
-   }
-
-    /**
-     * Construct an XMLTokener from a string.
-     * @param s A source string.
-     */
-    public XMLTokener(String s) {
-        super(s);
-    }
-
-    /**
-     * Get the text in the CDATA block.
-     * @return The string up to the <code>]]&gt;</code>.
-     * @throws JSONException If the <code>]]&gt;</code> is not found.
-     */
-    public String nextCDATA() throws JSONException {
-        char         c;
-        int          i;
-        StringBuffer sb = new StringBuffer();
-        for (;;) {
-            c = next();
-            if (end()) {
-                throw syntaxError("Unclosed CDATA");
-            }
-            sb.append(c);
-            i = sb.length() - 3;
-            if (i >= 0 && sb.charAt(i) == ']' &&
-                          sb.charAt(i + 1) == ']' && sb.charAt(i + 2) == '>') {
-                sb.setLength(i);
-                return sb.toString();
-            }
-        }
-    }
-
-
-    /**
-     * Get the next XML outer token, trimming whitespace. There are two kinds
-     * of tokens: the '<' character which begins a markup tag, and the content
-     * text between markup tags.
-     *
-     * @return  A string, or a '<' Character, or null if there is no more
-     * source text.
-     * @throws JSONException
-     */
-    public Object nextContent() throws JSONException {
-        char         c;
-        StringBuffer sb;
-        do {
-            c = next();
-        } while (Character.isWhitespace(c));
-        if (c == 0) {
-            return null;
-        }
-        if (c == '<') {
-            return XML.LT;
-        }
-        sb = new StringBuffer();
-        for (;;) {
-            if (c == '<' || c == 0) {
-                back();
-                return sb.toString().trim();
-            }
-            if (c == '&') {
-                sb.append(nextEntity(c));
-            } else {
-                sb.append(c);
-            }
-            c = next();
-        }
-    }
-
-
-    /**
-     * Return the next entity. These entities are translated to Characters:
-     *     <code>&amp;  &apos;  &gt;  &lt;  &quot;</code>.
-     * @param ampersand An ampersand character.
-     * @return  A Character or an entity String if the entity is not 
recognized.
-     * @throws JSONException If missing ';' in XML entity.
-     */
-    public Object nextEntity(char ampersand) throws JSONException {
-        StringBuffer sb = new StringBuffer();
-        for (;;) {
-            char c = next();
-            if (Character.isLetterOrDigit(c) || c == '#') {
-                sb.append(Character.toLowerCase(c));
-            } else if (c == ';') {
-                break;
-            } else {
-                throw syntaxError("Missing ';' in XML entity: &" + sb);
-            }
-        }
-        String string = sb.toString();
-        Object object = entity.get(string);
-        return object != null ? object : ampersand + string + ";";
-    }
-
-
-    /**
-     * Returns the next XML meta token. This is used for skipping over <!...>
-     * and <?...?> structures.
-     * @return Syntax characters (<code>< > / = ! ?</code>) are returned as
-     *  Character, and strings and names are returned as Boolean. We don't care
-     *  what the values actually are.
-     * @throws JSONException If a string is not properly closed or if the XML
-     *  is badly structured.
-     */
-    public Object nextMeta() throws JSONException {
-        char c;
-        char q;
-        do {
-            c = next();
-        } while (Character.isWhitespace(c));
-        switch (c) {
-        case 0:
-            throw syntaxError("Misshaped meta tag");
-        case '<':
-            return XML.LT;
-        case '>':
-            return XML.GT;
-        case '/':
-            return XML.SLASH;
-        case '=':
-            return XML.EQ;
-        case '!':
-            return XML.BANG;
-        case '?':
-            return XML.QUEST;
-        case '"':
-        case '\'':
-            q = c;
-            for (;;) {
-                c = next();
-                if (c == 0) {
-                    throw syntaxError("Unterminated string");
-                }
-                if (c == q) {
-                    return Boolean.TRUE;
-                }
-            }
-        default:
-            for (;;) {
-                c = next();
-                if (Character.isWhitespace(c)) {
-                    return Boolean.TRUE;
-                }
-                switch (c) {
-                case 0:
-                case '<':
-                case '>':
-                case '/':
-                case '=':
-                case '!':
-                case '?':
-                case '"':
-                case '\'':
-                    back();
-                    return Boolean.TRUE;
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Get the next XML Token. These tokens are found inside of angle
-     * brackets. It may be one of these characters: <code>/ > = ! ?</code> or 
it
-     * may be a string wrapped in single quotes or double quotes, or it may be 
a
-     * name.
-     * @return a String or a Character.
-     * @throws JSONException If the XML is not well formed.
-     */
-    public Object nextToken() throws JSONException {
-        char c;
-        char q;
-        StringBuffer sb;
-        do {
-            c = next();
-        } while (Character.isWhitespace(c));
-        switch (c) {
-        case 0:
-            throw syntaxError("Misshaped element");
-        case '<':
-            throw syntaxError("Misplaced '<'");
-        case '>':
-            return XML.GT;
-        case '/':
-            return XML.SLASH;
-        case '=':
-            return XML.EQ;
-        case '!':
-            return XML.BANG;
-        case '?':
-            return XML.QUEST;
-
-// Quoted string
-
-        case '"':
-        case '\'':
-            q = c;
-            sb = new StringBuffer();
-            for (;;) {
-                c = next();
-                if (c == 0) {
-                    throw syntaxError("Unterminated string");
-                }
-                if (c == q) {
-                    return sb.toString();
-                }
-                if (c == '&') {
-                    sb.append(nextEntity(c));
-                } else {
-                    sb.append(c);
-                }
-            }
-        default:
-
-// Name
-
-            sb = new StringBuffer();
-            for (;;) {
-                sb.append(c);
-                c = next();
-                if (Character.isWhitespace(c)) {
-                    return sb.toString();
-                }
-                switch (c) {
-                case 0:
-                    return sb.toString();
-                case '>':
-                case '/':
-                case '=':
-                case '!':
-                case '?':
-                case '[':
-                case ']':
-                    back();
-                    return sb.toString();
-                case '<':
-                case '"':
-                case '\'':
-                    throw syntaxError("Bad character in a name");
-                }
-            }
-        }
-    }
-    
-    
-    /**
-     * Skip characters until past the requested string.
-     * If it is not found, we are left at the end of the source with a result 
of false.
-     * @param to A string to skip past.
-     * @throws JSONException
-     */
-    public boolean skipPast(String to) throws JSONException {
-        boolean b;
-        char c;
-        int i;
-        int j;
-        int offset = 0;
-        int length = to.length();
-        char[] circle = new char[length];
-        
-        /*
-         * First fill the circle buffer with as many characters as are in the
-         * to string. If we reach an early end, bail.
-         */
-        
-        for (i = 0; i < length; i += 1) {
-            c = next();
-            if (c == 0) {
-                return false;
-            }
-            circle[i] = c;
-        }
-        /*
-         * We will loop, possibly for all of the remaining characters.
-         */
-        for (;;) {
-            j = offset;
-            b = true;
-            /*
-             * Compare the circle buffer with the to string. 
-             */
-            for (i = 0; i < length; i += 1) {
-                if (circle[j] != to.charAt(i)) {
-                    b = false;
-                    break;
-                }
-                j += 1;
-                if (j >= length) {
-                    j -= length;
-                }
-            }
-            /*
-             * If we exit the loop with b intact, then victory is ours.
-             */
-            if (b) {
-                return true;
-            }
-            /*
-             * Get the next character. If there isn't one, then defeat is ours.
-             */
-            c = next();
-            if (c == 0) {
-                return false;
-            }
-            /*
-             * Shove the character in the circle buffer and advance the 
-             * circle offset. The offset is mod n.
-             */
-            circle[offset] = c;
-            offset += 1;
-            if (offset >= length) {
-                offset -= length;
-            }
-        }
-    }
-}
+package org.apache.wicket.ajax.json;
+
+/*
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/**
+ * The XMLTokener extends the JSONTokener to provide additional methods
+ * for the parsing of XML texts.
+ * @author JSON.org
+ * @version 2012-11-13
+ */
+public class XMLTokener extends JSONTokener
+{
+
+
+   /** The table of entity values. It initially contains Character values for
+    * amp, apos, gt, lt, quot.
+    */
+   public static final java.util.HashMap entity;
+
+   static {
+       entity = new java.util.HashMap(8);
+       entity.put("amp",  XML.AMP);
+       entity.put("apos", XML.APOS);
+       entity.put("gt",   XML.GT);
+       entity.put("lt",   XML.LT);
+       entity.put("quot", XML.QUOT);
+   }
+
+    /**
+     * Construct an XMLTokener from a string.
+     * @param s A source string.
+     */
+    public XMLTokener(String s) {
+        super(s);
+    }
+
+    /**
+     * Get the text in the CDATA block.
+     * @return The string up to the <code>]]&gt;</code>.
+     * @throws JSONException If the <code>]]&gt;</code> is not found.
+     */
+    public String nextCDATA() throws JSONException
+    {
+        char         c;
+        int          i;
+        StringBuffer sb = new StringBuffer();
+        for (;;) {
+            c = next();
+            if (end()) {
+                throw syntaxError("Unclosed CDATA");
+            }
+            sb.append(c);
+            i = sb.length() - 3;
+            if (i >= 0 && sb.charAt(i) == ']' &&
+                          sb.charAt(i + 1) == ']' && sb.charAt(i + 2) == '>') {
+                sb.setLength(i);
+                return sb.toString();
+            }
+        }
+    }
+
+
+    /**
+     * Get the next XML outer token, trimming whitespace. There are two kinds
+     * of tokens: the '<' character which begins a markup tag, and the content
+     * text between markup tags.
+     *
+     * @return  A string, or a '<' Character, or null if there is no more
+     * source text.
+     * @throws JSONException
+     */
+    public Object nextContent() throws JSONException {
+        char         c;
+        StringBuffer sb;
+        do {
+            c = next();
+        } while (Character.isWhitespace(c));
+        if (c == 0) {
+            return null;
+        }
+        if (c == '<') {
+            return XML.LT;
+        }
+        sb = new StringBuffer();
+        for (;;) {
+            if (c == '<' || c == 0) {
+                back();
+                return sb.toString().trim();
+            }
+            if (c == '&') {
+                sb.append(nextEntity(c));
+            } else {
+                sb.append(c);
+            }
+            c = next();
+        }
+    }
+
+
+    /**
+     * Return the next entity. These entities are translated to Characters:
+     *     <code>&amp;  &apos;  &gt;  &lt;  &quot;</code>.
+     * @param ampersand An ampersand character.
+     * @return  A Character or an entity String if the entity is not 
recognized.
+     * @throws JSONException If missing ';' in XML entity.
+     */
+    public Object nextEntity(char ampersand) throws JSONException {
+        StringBuffer sb = new StringBuffer();
+        for (;;) {
+            char c = next();
+            if (Character.isLetterOrDigit(c) || c == '#') {
+                sb.append(Character.toLowerCase(c));
+            } else if (c == ';') {
+                break;
+            } else {
+                throw syntaxError("Missing ';' in XML entity: &" + sb);
+            }
+        }
+        String string = sb.toString();
+        Object object = entity.get(string);
+        return object != null ? object : ampersand + string + ";";
+    }
+
+
+    /**
+     * Returns the next XML meta token. This is used for skipping over <!...>
+     * and <?...?> structures.
+     * @return Syntax characters (<code>< > / = ! ?</code>) are returned as
+     *  Character, and strings and names are returned as Boolean. We don't care
+     *  what the values actually are.
+     * @throws JSONException If a string is not properly closed or if the XML
+     *  is badly structured.
+     */
+    public Object nextMeta() throws JSONException {
+        char c;
+        char q;
+        do {
+            c = next();
+        } while (Character.isWhitespace(c));
+        switch (c) {
+        case 0:
+            throw syntaxError("Misshaped meta tag");
+        case '<':
+            return XML.LT;
+        case '>':
+            return XML.GT;
+        case '/':
+            return XML.SLASH;
+        case '=':
+            return XML.EQ;
+        case '!':
+            return XML.BANG;
+        case '?':
+            return XML.QUEST;
+        case '"':
+        case '\'':
+            q = c;
+            for (;;) {
+                c = next();
+                if (c == 0) {
+                    throw syntaxError("Unterminated string");
+                }
+                if (c == q) {
+                    return Boolean.TRUE;
+                }
+            }
+        default:
+            for (;;) {
+                c = next();
+                if (Character.isWhitespace(c)) {
+                    return Boolean.TRUE;
+                }
+                switch (c) {
+                case 0:
+                case '<':
+                case '>':
+                case '/':
+                case '=':
+                case '!':
+                case '?':
+                case '"':
+                case '\'':
+                    back();
+                    return Boolean.TRUE;
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Get the next XML Token. These tokens are found inside of angle
+     * brackets. It may be one of these characters: <code>/ > = ! ?</code> or 
it
+     * may be a string wrapped in single quotes or double quotes, or it may be 
a
+     * name.
+     * @return a String or a Character.
+     * @throws JSONException If the XML is not well formed.
+     */
+    public Object nextToken() throws JSONException {
+        char c;
+        char q;
+        StringBuffer sb;
+        do {
+            c = next();
+        } while (Character.isWhitespace(c));
+        switch (c) {
+        case 0:
+            throw syntaxError("Misshaped element");
+        case '<':
+            throw syntaxError("Misplaced '<'");
+        case '>':
+            return XML.GT;
+        case '/':
+            return XML.SLASH;
+        case '=':
+            return XML.EQ;
+        case '!':
+            return XML.BANG;
+        case '?':
+            return XML.QUEST;
+
+// Quoted string
+
+        case '"':
+        case '\'':
+            q = c;
+            sb = new StringBuffer();
+            for (;;) {
+                c = next();
+                if (c == 0) {
+                    throw syntaxError("Unterminated string");
+                }
+                if (c == q) {
+                    return sb.toString();
+                }
+                if (c == '&') {
+                    sb.append(nextEntity(c));
+                } else {
+                    sb.append(c);
+                }
+            }
+        default:
+
+// Name
+
+            sb = new StringBuffer();
+            for (;;) {
+                sb.append(c);
+                c = next();
+                if (Character.isWhitespace(c)) {
+                    return sb.toString();
+                }
+                switch (c) {
+                case 0:
+                    return sb.toString();
+                case '>':
+                case '/':
+                case '=':
+                case '!':
+                case '?':
+                case '[':
+                case ']':
+                    back();
+                    return sb.toString();
+                case '<':
+                case '"':
+                case '\'':
+                    throw syntaxError("Bad character in a name");
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Skip characters until past the requested string.
+     * If it is not found, we are left at the end of the source with a result 
of false.
+     * @param to A string to skip past.
+     * @throws JSONException
+     */
+    public boolean skipPast(String to) throws JSONException {
+        boolean b;
+        char c;
+        int i;
+        int j;
+        int offset = 0;
+        int length = to.length();
+        char[] circle = new char[length];
+
+        /*
+         * First fill the circle buffer with as many characters as are in the
+         * to string. If we reach an early end, bail.
+         */
+
+        for (i = 0; i < length; i += 1) {
+            c = next();
+            if (c == 0) {
+                return false;
+            }
+            circle[i] = c;
+        }
+
+        /* We will loop, possibly for all of the remaining characters. */
+
+        for (;;) {
+            j = offset;
+            b = true;
+
+            /* Compare the circle buffer with the to string. */
+
+            for (i = 0; i < length; i += 1) {
+                if (circle[j] != to.charAt(i)) {
+                    b = false;
+                    break;
+                }
+                j += 1;
+                if (j >= length) {
+                    j -= length;
+                }
+            }
+
+            /* If we exit the loop with b intact, then victory is ours. */
+
+            if (b) {
+                return true;
+            }
+
+            /* Get the next character. If there isn't one, then defeat is 
ours. */
+
+            c = next();
+            if (c == 0) {
+                return false;
+            }
+            /*
+             * Shove the character in the circle buffer and advance the
+             * circle offset. The offset is mod n.
+             */
+            circle[offset] = c;
+            offset += 1;
+            if (offset >= length) {
+                offset -= length;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
index 53b18f7..5baddfa 100755
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
@@ -270,7 +270,7 @@ public class MockHttpServletRequest implements 
HttpServletRequest
 
                if (uploadedFiles == null)
                {
-                       uploadedFiles = new HashMap<String, 
List<UploadedFile>>();
+                       uploadedFiles = new HashMap<>();
                }
 
                UploadedFile uf = new UploadedFile(fieldName, file, 
contentType);
@@ -278,7 +278,7 @@ public class MockHttpServletRequest implements 
HttpServletRequest
                List<UploadedFile> filesPerField = uploadedFiles.get(fieldName);
                if (filesPerField == null)
                {
-                       filesPerField = new ArrayList<UploadedFile>();
+                       filesPerField = new ArrayList<>();
                        uploadedFiles.put(fieldName, filesPerField);
                }
 
@@ -300,7 +300,7 @@ public class MockHttpServletRequest implements 
HttpServletRequest
                List<String> list = (List<String>)headers.get(name);
                if (list == null)
                {
-                       list = new ArrayList<String>(1);
+                       list = new ArrayList<>(1);
                        headers.put(name, list);
                }
                list.add(value);
@@ -729,7 +729,7 @@ public class MockHttpServletRequest implements 
HttpServletRequest
        @Override
        public Map<String, String[]> getParameterMap()
        {
-               Map<String, String[]> params = new HashMap<String, 
String[]>(parameters);
+               Map<String, String[]> params = new HashMap<>(parameters);
 
                for (String name : post.getParameterNames())
                {

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
index 371dc0f..9109f77 100644
--- a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
+++ b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
@@ -12,4 +12,4 @@ Wicket.Ajax.DebugWindow.enabled=true;
 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.TestDetachPage?0-1.IBehaviorListener.0-comp";
 /*]^]^>*/
 </script>
-</head>]]></header-contribution><evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"u":"./org.apache.wicket.TestDetachPage?0-1.IBehaviorListener.0-comp","e":"click","c":"comp1"});})();]]></evaluate></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"u":"./org.apache.wicket.TestDetachPage?0-1.IBehaviorListener.0-comp","c":"comp1","e":"click"});})();]]></evaluate></ajax-response>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
index 3ebadda..28b8e18 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.TestDetachPage?0";
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.TestDetachPage?0-1.IBehaviorListener.0-comp","e":"click","c":"comp1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.TestDetachPage?0-1.IBehaviorListener.0-comp","c":"comp1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
index 3f848b5..8da123e 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
@@ -66,18 +66,17 @@ public class AbstractDefaultAjaxBehaviorTest extends Assert
 
                CharSequence json = behavior.renderAjaxAttributes(component, 
attributes);
 
-               String expected = "{\"" + AjaxAttributeName.COMPLETE_HANDLER +
-                       "\":[function(attrs, jqXHR, 
textStatus){alert('Complete!');}],\"" +
-                       AjaxAttributeName.URL + "\":\"some/url\",\"" +
-                       AjaxAttributeName.PRECONDITION +
-                       "\":[function(attrs){return somePrecondition();}],\"" +
-                       AjaxAttributeName.FAILURE_HANDLER +
-                       "\":[function(attrs, jqXHR, errorMessage, 
textStatus){alert('Failure!');}],\"" +
-                       AjaxAttributeName.BEFORE_HANDLER +
-                       "\":[function(attrs){alert('Before!');}],\"" +
-                       AjaxAttributeName.SUCCESS_HANDLER +
-                       "\":[function(attrs, jqXHR, data, 
textStatus){alert('Success!');}],\"" +
-                       AjaxAttributeName.AFTER_HANDLER + 
"\":[function(attrs){alert('After!');}]}";
+               String expected =
+               "{" +
+                       "\""+AjaxAttributeName.URL+"\":\"some/url\"," +
+                       
"\""+AjaxAttributeName.BEFORE_HANDLER+"\":[function(attrs){alert('Before!');}],"
 +
+                       
"\""+AjaxAttributeName.AFTER_HANDLER+"\":[function(attrs){alert('After!');}]," +
+                       
"\""+AjaxAttributeName.SUCCESS_HANDLER+"\":[function(attrs, jqXHR, data, 
textStatus){alert('Success!');}]," +
+                       
"\""+AjaxAttributeName.FAILURE_HANDLER+"\":[function(attrs, jqXHR, 
errorMessage, textStatus){alert('Failure!');}]," +
+                       
"\""+AjaxAttributeName.COMPLETE_HANDLER+"\":[function(attrs, jqXHR, 
textStatus){alert('Complete!');}]," +
+                       
"\""+AjaxAttributeName.PRECONDITION+"\":[function(attrs){return 
somePrecondition();}]" +
+               "}";
+
                assertEquals(expected, json);
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
index 7a2b706..bbf9673 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxBehaviorEnabled_expected.html
@@ -20,7 +20,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.AjaxBehaviorEnab
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.AjaxBehaviorEnabledPage?0-1.IBehaviorListener.0-enabled","e":"click","c":"enabled1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.AjaxBehaviorEnabledPage?0-1.IBehaviorListener.0-enabled","c":"enabled1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
index a318fda..31a4c9c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2_expected.html
@@ -24,7 +24,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.AjaxHeaderContri
 Wicket.Event.add(window, "domready", function(event) { 
 domReady();;
 domReadyB();;
-Wicket.Ajax.ajax({"pd":true,"u":"./org.apache.wicket.ajax.AjaxHeaderContributionPage2?0-1.IBehaviorListener.0-link","e":"click","c":"link1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.AjaxHeaderContributionPage2?0-1.IBehaviorListener.0-link","c":"link1","e":"click","pd":true});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
index 7630cb2..1a2e61d 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage_expected.html
@@ -20,7 +20,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.AjaxHeaderContri
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
 domReady();;
-Wicket.Ajax.ajax({"pd":true,"u":"./org.apache.wicket.ajax.AjaxHeaderContributionPage?0-1.IBehaviorListener.0-link","e":"click","c":"link1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.AjaxHeaderContributionPage?0-1.IBehaviorListener.0-link","c":"link1","e":"click","pd":true});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
index e933201..2f7b0c6 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
@@ -12,4 +12,4 @@ Wicket.Ajax.DebugWindow.enabled=true;
 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.DomReadyOrderPage?0-1.IBehaviorListener.0-test";
 /*]^]^>*/
 </script>
-</head>]]></header-contribution><evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"pd":true,"u":"./org.apache.wicket.ajax.DomReadyOrderPage?0-1.IBehaviorListener.0-test","e":"click","c":"test1"});})();(function(){test1();})();(function(){test2();})();]]></evaluate></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.DomReadyOrderPage?0-1.IBehaviorListener.0-test","c":"test1","e":"click","pd":true});})();(function(){test1();})();(function(){test2();})();]]></evaluate></ajax-response>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
index 955eff4..e99b6db 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_expected.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.DomReadyOrderPag
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"pd":true,"u":"./org.apache.wicket.ajax.DomReadyOrderPage?0-1.IBehaviorListener.0-test","e":"click","c":"test1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.DomReadyOrderPage?0-1.IBehaviorListener.0-test","c":"test1","e":"click","pd":true});;
 test1();;
 test2();;
 ;});

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
index 0bad853..f0f9c40 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.form.AjaxFormSub
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"pd":true,"f":"form1","u":"./org.apache.wicket.ajax.form.AjaxFormSubmitTestPage?0-1.IBehaviorListener.0-form-submit","e":"click","c":"submit2","sc":":submit","m":"POST"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.AjaxFormSubmitTestPage?0-1.IBehaviorListener.0-form-submit","m":"POST","c":"submit2","f":"form1","sc":":submit","e":"click","pd":true});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
index db1c0fa..593f226 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
@@ -16,8 +16,8 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.form.OnChangeAja
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-field","e":"inputchange
 change","c":"field1","m":"POST"});;
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-dropDown","e":"inputchange
 change","c":"dropDown2","m":"POST"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-field","m":"POST","c":"field1","e":"inputchange
 change"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.IBehaviorListener.0-form-dropDown","m":"POST","c":"dropDown2","e":"inputchange
 change"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
index 9e9a3cd..dfe7104 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.markup.html.ajax
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxLinkPage?0-1.IBehaviorListener.0-ajaxLink","e":"click","c":"ajaxLink1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxLinkPage?0-1.IBehaviorListener.0-ajaxLink","c":"ajaxLink1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
index 61c810e..d9c4297 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.markup.html.ajax
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxLinkWithBorderPage?0-1.IBehaviorListener.0-border-border_body-ajaxLink","e":"click","c":"ajaxLink1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxLinkWithBorderPage?0-1.IBehaviorListener.0-border-border_body-ajaxLink","c":"ajaxLink1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
index 804f428..647d088 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.markup.html.ajax
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxPage2?0-1.IBehaviorListener.0-pageLayout-pageLayout_body-ajaxLink","e":"click","c":"ajaxLink1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.markup.html.ajaxLink.AjaxPage2?0-1.IBehaviorListener.0-pageLayout-pageLayout_body-ajaxLink","c":"ajaxLink1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
index 8df841c..d772e42 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
@@ -20,7 +20,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.markup.html.basic.Sim
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.basic.SimplePage_13?0-1.IBehaviorListener.0-html","e":"click","c":"html1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.basic.SimplePage_13?0-1.IBehaviorListener.0-html","c":"html1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
index ee28e23..18d5172 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.markup.html.border.Hi
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.border.HideableBorderPage?0-1.IBehaviorListener.0-hideable-hideLink","e":"click","c":"hideLink1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.border.HideableBorderPage?0-1.IBehaviorListener.0-hideable-hideLink","c":"hideLink1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadFieldTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadFieldTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadFieldTest.java
index 472c8e8..3d81ab8 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadFieldTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadFieldTest.java
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.WicketTestCase;
@@ -48,7 +50,7 @@ public class MultiFileUploadFieldTest extends WicketTestCase
        public void submitMultiFileUploadFields()
        {
                final AtomicBoolean submitted = new AtomicBoolean(false);
-               final ListModel<FileUpload> filesModel = new 
ListModel<FileUpload>(new ArrayList<FileUpload>());
+               final ListModel<FileUpload> filesModel = new ListModel<>(new 
ArrayList<FileUpload>());
 
                TestPage page = new TestPage(filesModel)
                {
@@ -63,13 +65,14 @@ public class MultiFileUploadFieldTest extends WicketTestCase
                                for (int i = 1; i < 2; i++)
                                {
                                        FileUpload fileUpload = uploads.get(i);
-                                       
assertEquals(MultiFileUploadFieldTest.class.getSimpleName()+i+".txt", 
fileUpload.getClientFileName());
+                                       String clientFileName = 
fileUpload.getClientFileName();
+                                       String id = 
clientFileName.replaceAll(MultiFileUploadFieldTest.class.getSimpleName() + 
"(\\d).txt", "$1");
                                        try
                                        {
-                                               assertEquals("Test"+i, 
IOUtils.toString(fileUpload.getInputStream()));
+                                               assertEquals("Test"+id, 
IOUtils.toString(fileUpload.getInputStream()));
                                        } catch (IOException e)
                                        {
-                                               fail("Reading file upload 
'"+i+"' failed: " + e.getMessage());
+                                               fail("Reading file upload 
'"+id+"' failed: " + e.getMessage());
                                        }
                                }
                                submitted.set(true);

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
index 8a06d67..1eee2b0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.markup.html.panel.Inl
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.panel.InlinePanelPage_7?0-1.IBehaviorListener.0-provider-ajaxRefresh","e":"click","c":"ajaxRefresh1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.panel.InlinePanelPage_7?0-1.IBehaviorListener.0-provider-ajaxRefresh","c":"ajaxRefresh1","e":"click"});;
 ;});
 /*]]>*/
 </script>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ed64e166/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
index 7f2540f..69c755a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html
@@ -16,7 +16,7 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.markup.html.panel.Inl
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.panel.InlinePanelPage_8?0-1.IBehaviorListener.0-add","e":"click","c":"add1"});;
+Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.panel.InlinePanelPage_8?0-1.IBehaviorListener.0-add","c":"add1","e":"click"});;
 ;});
 /*]]>*/
 </script>

Reply via email to