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/05/18 13:39:32 UTC

[1/7] git commit: Update JSON2 classes

Updated Branches:
  refs/heads/master cd6e84281 -> 0c01d793f


Update JSON2 classes


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

Branch: refs/heads/master
Commit: 0c01d793f8dddff7925815c77554074edef25448
Parents: a840b16
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri May 18 13:39:03 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri May 18 13:39:03 2012 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/ajax/json/CDL.java |  554 ++--
 .../java/org/apache/wicket/ajax/json/Cookie.java   |  324 +-
 .../org/apache/wicket/ajax/json/CookieList.java    |  151 +-
 .../java/org/apache/wicket/ajax/json/HTTP.java     |  324 +-
 .../org/apache/wicket/ajax/json/HTTPTokener.java   |  137 +-
 .../org/apache/wicket/ajax/json/JSONArray.java     | 1952 ++++-----
 .../org/apache/wicket/ajax/json/JSONException.java |   42 +-
 .../java/org/apache/wicket/ajax/json/JSONML.java   |  961 ++---
 .../org/apache/wicket/ajax/json/JSONObject.java    | 3433 +++++++--------
 .../org/apache/wicket/ajax/json/JSONString.java    |   27 +-
 .../org/apache/wicket/ajax/json/JSONStringer.java  |  120 +-
 .../org/apache/wicket/ajax/json/JSONTokener.java   |  935 ++---
 .../org/apache/wicket/ajax/json/JSONWriter.java    |  624 ++--
 .../main/java/org/apache/wicket/ajax/json/README   |    2 +
 .../main/java/org/apache/wicket/ajax/json/XML.java | 1016 ++---
 .../org/apache/wicket/ajax/json/XMLTokener.java    |  718 ++--
 16 files changed, 5097 insertions(+), 6223 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0c01d793/wicket-core/src/main/java/org/apache/wicket/ajax/json/CDL.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/CDL.java b/wicket-core/src/main/java/org/apache/wicket/ajax/json/CDL.java
index 10cdb1b..3b0cbd3 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/CDL.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/CDL.java
@@ -1,331 +1,279 @@
 package org.apache.wicket.ajax.json;
 
 /*
- Copyright (c) 2002 JSON.org
+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:
+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 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 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 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.
+*/
 
 /**
- * This provides static methods to convert comma delimited text into a JSONArray, and to covert a
- * JSONArray into comma delimited text. Comma delimited text is a very popular format for data
- * interchange. It is understood by most database, spreadsheet, and organizer programs.
+ * This provides static methods to convert comma delimited text into a
+ * JSONArray, and to covert a JSONArray into comma delimited text. Comma
+ * delimited text is a very popular format for data interchange. It is
+ * understood by most database, spreadsheet, and organizer programs.
  * <p>
- * Each row of text represents a row in a table or a data record. Each row ends with a NEWLINE
- * character. Each row contains one or more values. Values are separated by commas. A value can
- * contain any character except for comma, unless is is wrapped in single quotes or double quotes.
+ * Each row of text represents a row in a table or a data record. Each row
+ * ends with a NEWLINE character. Each row contains one or more values.
+ * Values are separated by commas. A value can contain any character except
+ * for comma, unless is is wrapped in single quotes or double quotes.
  * <p>
  * The first row usually contains the names of the columns.
  * <p>
- * A comma delimited list can be converted into a JSONArray of JSONObjects. The names for the
- * elements in the JSONObjects can be taken from the names in the first row.
- * 
+ * A comma delimited list can be converted into a JSONArray of JSONObjects.
+ * The names for the elements in the JSONObjects can be taken from the names
+ * in the first row.
  * @author JSON.org
  * @version 2010-12-24
  */
-public class CDL
-{
+public class CDL {
 
-	/**
-	 * Get the next value. The value can be wrapped in quotes. The value can be empty.
-	 * 
-	 * @param x
-	 *            A JSONTokener of the source text.
-	 * @return The value string, or null if empty.
-	 * @throws JSONException
-	 *             if the quoted string is badly formed.
-	 */
-	private static String getValue(JSONTokener x) throws JSONException
-	{
-		char c;
-		char q;
-		StringBuffer sb;
-		do
-		{
-			c = x.next();
-		}
-		while (c == ' ' || c == '\t');
-		switch (c)
-		{
-			case 0 :
-				return null;
-			case '"' :
-			case '\'' :
-				q = c;
-				sb = new StringBuffer();
-				for (;;)
-				{
-					c = x.next();
-					if (c == q)
-					{
-						break;
-					}
-					if (c == 0 || c == '\n' || c == '\r')
-					{
-						throw x.syntaxError("Missing close quote '" + q + "'.");
-					}
-					sb.append(c);
-				}
-				return sb.toString();
-			case ',' :
-				x.back();
-				return "";
-			default :
-				x.back();
-				return x.nextTo(',');
-		}
-	}
+    /**
+     * Get the next value. The value can be wrapped in quotes. The value can
+     * be empty.
+     * @param x A JSONTokener of the source text.
+     * @return The value string, or null if empty.
+     * @throws JSONException if the quoted string is badly formed.
+     */
+    private static String getValue(JSONTokener x) throws JSONException {
+        char c;
+        char q;
+        StringBuffer sb;
+        do {
+            c = x.next();
+        } while (c == ' ' || c == '\t');
+        switch (c) {
+        case 0:
+            return null;
+        case '"':
+        case '\'':
+            q = c;
+            sb = new StringBuffer();
+            for (;;) {
+                c = x.next();
+                if (c == q) {
+                    break;
+                }
+                if (c == 0 || c == '\n' || c == '\r') {
+                    throw x.syntaxError("Missing close quote '" + q + "'.");
+                }
+                sb.append(c);
+            }
+            return sb.toString();
+        case ',':
+            x.back();
+            return "";
+        default:
+            x.back();
+            return x.nextTo(',');
+        }
+    }
 
-	/**
-	 * Produce a JSONArray of strings from a row of comma delimited values.
-	 * 
-	 * @param x
-	 *            A JSONTokener of the source text.
-	 * @return A JSONArray of strings.
-	 * @throws JSONException
-	 */
-	public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException
-	{
-		JSONArray ja = new JSONArray();
-		for (;;)
-		{
-			String value = getValue(x);
-			char c = x.next();
-			if (value == null || (ja.length() == 0 && value.length() == 0 && c != ','))
-			{
-				return null;
-			}
-			ja.put(value);
-			for (;;)
-			{
-				if (c == ',')
-				{
-					break;
-				}
-				if (c != ' ')
-				{
-					if (c == '\n' || c == '\r' || c == 0)
-					{
-						return ja;
-					}
-					throw x.syntaxError("Bad character '" + c + "' (" + (int)c + ").");
-				}
-				c = x.next();
-			}
-		}
-	}
+    /**
+     * Produce a JSONArray of strings from a row of comma delimited values.
+     * @param x A JSONTokener of the source text.
+     * @return A JSONArray of strings.
+     * @throws JSONException
+     */
+    public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException {
+        JSONArray ja = new JSONArray();
+        for (;;) {
+            String value = getValue(x);
+            char c = x.next();
+            if (value == null || 
+                    (ja.length() == 0 && value.length() == 0 && c != ',')) {
+                return null;
+            }
+            ja.put(value);
+            for (;;) {                
+                if (c == ',') {
+                    break;
+                }
+                if (c != ' ') {
+                    if (c == '\n' || c == '\r' || c == 0) {
+                        return ja;
+                    }
+                    throw x.syntaxError("Bad character '" + c + "' (" +
+                            (int)c + ").");
+                }
+                c = x.next();
+            }
+        }
+    }
 
-	/**
-	 * Produce a JSONObject from a row of comma delimited text, using a parallel JSONArray of
-	 * strings to provides the names of the elements.
-	 * 
-	 * @param names
-	 *            A JSONArray of names. This is commonly obtained from the first row of a comma
-	 *            delimited text file using the rowToJSONArray method.
-	 * @param x
-	 *            A JSONTokener of the source text.
-	 * @return A JSONObject combining the names and values.
-	 * @throws JSONException
-	 */
-	public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x) throws JSONException
-	{
-		JSONArray ja = rowToJSONArray(x);
-		return ja != null ? ja.toJSONObject(names) : null;
-	}
+    /**
+     * Produce a JSONObject from a row of comma delimited text, using a
+     * parallel JSONArray of strings to provides the names of the elements.
+     * @param names A JSONArray of names. This is commonly obtained from the
+     *  first row of a comma delimited text file using the rowToJSONArray
+     *  method.
+     * @param x A JSONTokener of the source text.
+     * @return A JSONObject combining the names and values.
+     * @throws JSONException
+     */
+    public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x)
+            throws JSONException {
+        JSONArray ja = rowToJSONArray(x);
+        return ja != null ? ja.toJSONObject(names) :  null;
+    }
 
-	/**
-	 * Produce a comma delimited text row from a JSONArray. Values containing the comma character
-	 * will be quoted. Troublesome characters may be removed.
-	 * 
-	 * @param ja
-	 *            A JSONArray of strings.
-	 * @return A string ending in NEWLINE.
-	 */
-	public static String rowToString(JSONArray ja)
-	{
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < ja.length(); i += 1)
-		{
-			if (i > 0)
-			{
-				sb.append(',');
-			}
-			Object object = ja.opt(i);
-			if (object != null)
-			{
-				String string = object.toString();
-				if (string.length() > 0 &&
-					(string.indexOf(',') >= 0 || string.indexOf('\n') >= 0 ||
-						string.indexOf('\r') >= 0 || string.indexOf(0) >= 0 || string.charAt(0) == '"'))
-				{
-					sb.append('"');
-					int length = string.length();
-					for (int j = 0; j < length; j += 1)
-					{
-						char c = string.charAt(j);
-						if (c >= ' ' && c != '"')
-						{
-							sb.append(c);
-						}
-					}
-					sb.append('"');
-				}
-				else
-				{
-					sb.append(string);
-				}
-			}
-		}
-		sb.append('\n');
-		return sb.toString();
-	}
+    /**
+     * Produce a comma delimited text row from a JSONArray. Values containing
+     * the comma character will be quoted. Troublesome characters may be 
+     * removed.
+     * @param ja A JSONArray of strings.
+     * @return A string ending in NEWLINE.
+     */
+    public static String rowToString(JSONArray ja) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < ja.length(); i += 1) {
+            if (i > 0) {
+                sb.append(',');
+            }
+            Object object = ja.opt(i);
+            if (object != null) {
+                String string = object.toString();
+                if (string.length() > 0 && (string.indexOf(',') >= 0 || 
+                        string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0 || 
+                        string.indexOf(0) >= 0 || string.charAt(0) == '"')) {
+                    sb.append('"');
+                    int length = string.length();
+                    for (int j = 0; j < length; j += 1) {
+                        char c = string.charAt(j);
+                        if (c >= ' ' && c != '"') {
+                            sb.append(c);
+                        }
+                    }
+                    sb.append('"');
+                } else {
+                    sb.append(string);
+                }
+            }
+        }
+        sb.append('\n');
+        return sb.toString();
+    }
 
-	/**
-	 * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as
-	 * a source of names.
-	 * 
-	 * @param string
-	 *            The comma delimited text.
-	 * @return A JSONArray of JSONObjects.
-	 * @throws JSONException
-	 */
-	public static JSONArray toJSONArray(String string) throws JSONException
-	{
-		return toJSONArray(new JSONTokener(string));
-	}
+    /**
+     * Produce a JSONArray of JSONObjects from a comma delimited text string,
+     * using the first row as a source of names.
+     * @param string The comma delimited text.
+     * @return A JSONArray of JSONObjects.
+     * @throws JSONException
+     */
+    public static JSONArray toJSONArray(String string) throws JSONException {
+        return toJSONArray(new JSONTokener(string));
+    }
 
-	/**
-	 * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as
-	 * a source of names.
-	 * 
-	 * @param x
-	 *            The JSONTokener containing the comma delimited text.
-	 * @return A JSONArray of JSONObjects.
-	 * @throws JSONException
-	 */
-	public static JSONArray toJSONArray(JSONTokener x) throws JSONException
-	{
-		return toJSONArray(rowToJSONArray(x), x);
-	}
+    /**
+     * Produce a JSONArray of JSONObjects from a comma delimited text string,
+     * using the first row as a source of names.
+     * @param x The JSONTokener containing the comma delimited text.
+     * @return A JSONArray of JSONObjects.
+     * @throws JSONException
+     */
+    public static JSONArray toJSONArray(JSONTokener x) throws JSONException {
+        return toJSONArray(rowToJSONArray(x), x);
+    }
 
-	/**
-	 * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied
-	 * JSONArray as the source of element names.
-	 * 
-	 * @param names
-	 *            A JSONArray of strings.
-	 * @param string
-	 *            The comma delimited text.
-	 * @return A JSONArray of JSONObjects.
-	 * @throws JSONException
-	 */
-	public static JSONArray toJSONArray(JSONArray names, String string) throws JSONException
-	{
-		return toJSONArray(names, new JSONTokener(string));
-	}
+    /**
+     * Produce a JSONArray of JSONObjects from a comma delimited text string
+     * using a supplied JSONArray as the source of element names.
+     * @param names A JSONArray of strings.
+     * @param string The comma delimited text.
+     * @return A JSONArray of JSONObjects.
+     * @throws JSONException
+     */
+    public static JSONArray toJSONArray(JSONArray names, String string)
+            throws JSONException {
+        return toJSONArray(names, new JSONTokener(string));
+    }
 
-	/**
-	 * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied
-	 * JSONArray as the source of element names.
-	 * 
-	 * @param names
-	 *            A JSONArray of strings.
-	 * @param x
-	 *            A JSONTokener of the source text.
-	 * @return A JSONArray of JSONObjects.
-	 * @throws JSONException
-	 */
-	public static JSONArray toJSONArray(JSONArray names, JSONTokener x) throws JSONException
-	{
-		if (names == null || names.length() == 0)
-		{
-			return null;
-		}
-		JSONArray ja = new JSONArray();
-		for (;;)
-		{
-			JSONObject jo = rowToJSONObject(names, x);
-			if (jo == null)
-			{
-				break;
-			}
-			ja.put(jo);
-		}
-		if (ja.length() == 0)
-		{
-			return null;
-		}
-		return ja;
-	}
+    /**
+     * Produce a JSONArray of JSONObjects from a comma delimited text string
+     * using a supplied JSONArray as the source of element names.
+     * @param names A JSONArray of strings.
+     * @param x A JSONTokener of the source text.
+     * @return A JSONArray of JSONObjects.
+     * @throws JSONException
+     */
+    public static JSONArray toJSONArray(JSONArray names, JSONTokener x)
+            throws JSONException {
+        if (names == null || names.length() == 0) {
+            return null;
+        }
+        JSONArray ja = new JSONArray();
+        for (;;) {
+            JSONObject jo = rowToJSONObject(names, x);
+            if (jo == null) {
+                break;
+            }
+            ja.put(jo);
+        }
+        if (ja.length() == 0) {
+            return null;
+        }
+        return ja;
+    }
 
 
-	/**
-	 * Produce a comma delimited text from a JSONArray of JSONObjects. The first row will be a list
-	 * of names obtained by inspecting the first JSONObject.
-	 * 
-	 * @param ja
-	 *            A JSONArray of JSONObjects.
-	 * @return A comma delimited text.
-	 * @throws JSONException
-	 */
-	public static String toString(JSONArray ja) throws JSONException
-	{
-		JSONObject jo = ja.optJSONObject(0);
-		if (jo != null)
-		{
-			JSONArray names = jo.names();
-			if (names != null)
-			{
-				return rowToString(names) + toString(names, ja);
-			}
-		}
-		return null;
-	}
+    /**
+     * Produce a comma delimited text from a JSONArray of JSONObjects. The
+     * first row will be a list of names obtained by inspecting the first
+     * JSONObject.
+     * @param ja A JSONArray of JSONObjects.
+     * @return A comma delimited text.
+     * @throws JSONException
+     */
+    public static String toString(JSONArray ja) throws JSONException {
+        JSONObject jo = ja.optJSONObject(0);
+        if (jo != null) {
+            JSONArray names = jo.names();
+            if (names != null) {
+                return rowToString(names) + toString(names, ja);
+            }
+        }
+        return null;
+    }
 
-	/**
-	 * Produce a comma delimited text from a JSONArray of JSONObjects using a provided list of
-	 * names. The list of names is not included in the output.
-	 * 
-	 * @param names
-	 *            A JSONArray of strings.
-	 * @param ja
-	 *            A JSONArray of JSONObjects.
-	 * @return A comma delimited text.
-	 * @throws JSONException
-	 */
-	public static String toString(JSONArray names, JSONArray ja) throws JSONException
-	{
-		if (names == null || names.length() == 0)
-		{
-			return null;
-		}
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < ja.length(); i += 1)
-		{
-			JSONObject jo = ja.optJSONObject(i);
-			if (jo != null)
-			{
-				sb.append(rowToString(jo.toJSONArray(names)));
-			}
-		}
-		return sb.toString();
-	}
+    /**
+     * Produce a comma delimited text from a JSONArray of JSONObjects using
+     * a provided list of names. The list of names is not included in the
+     * output.
+     * @param names A JSONArray of strings.
+     * @param ja A JSONArray of JSONObjects.
+     * @return A comma delimited text.
+     * @throws JSONException
+     */
+    public static String toString(JSONArray names, JSONArray ja)
+            throws JSONException {
+        if (names == null || names.length() == 0) {
+            return null;
+        }
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < ja.length(); i += 1) {
+            JSONObject jo = ja.optJSONObject(i);
+            if (jo != null) {
+                sb.append(rowToString(jo.toJSONArray(names)));
+            }
+        }
+        return sb.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c01d793/wicket-core/src/main/java/org/apache/wicket/ajax/json/Cookie.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/Cookie.java b/wicket-core/src/main/java/org/apache/wicket/ajax/json/Cookie.java
index f32d763..31a3e84 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/Cookie.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/Cookie.java
@@ -1,195 +1,169 @@
 package org.apache.wicket.ajax.json;
 
 /*
- Copyright (c) 2002 JSON.org
+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:
+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 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 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 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.
+*/
 
 /**
- * Convert a web browser cookie specification to a JSONObject and back. JSON and Cookies are both
- * notations for name/value pairs.
- * 
+ * Convert a web browser cookie specification to a JSONObject and back.
+ * JSON and Cookies are both notations for name/value pairs.
  * @author JSON.org
  * @version 2010-12-24
  */
-public class Cookie
-{
+public class Cookie {
 
-	/**
-	 * Produce a copy of a string in which the characters '+', '%', '=', ';' and control characters
-	 * are replaced with "%hh". This is a gentle form of URL encoding, attempting to cause as little
-	 * distortion to the string as possible. The characters '=' and ';' are meta characters in
-	 * cookies. By convention, they are escaped using the URL-encoding. This is only a convention,
-	 * not a standard. Often, cookies are expected to have encoded values. We encode '=' and ';'
-	 * because we must. We encode '%' and '+' because they are meta characters in URL encoding.
-	 * 
-	 * @param string
-	 *            The source string.
-	 * @return The escaped result.
-	 */
-	public static String escape(String string)
-	{
-		char c;
-		String s = string.trim();
-		StringBuffer sb = new StringBuffer();
-		int length = s.length();
-		for (int i = 0; i < length; i += 1)
-		{
-			c = s.charAt(i);
-			if (c < ' ' || c == '+' || c == '%' || c == '=' || c == ';')
-			{
-				sb.append('%');
-				sb.append(Character.forDigit((char)((c >>> 4) & 0x0f), 16));
-				sb.append(Character.forDigit((char)(c & 0x0f), 16));
-			}
-			else
-			{
-				sb.append(c);
-			}
-		}
-		return sb.toString();
-	}
+    /**
+     * Produce a copy of a string in which the characters '+', '%', '=', ';'
+     * and control characters are replaced with "%hh". This is a gentle form
+     * of URL encoding, attempting to cause as little distortion to the
+     * string as possible. The characters '=' and ';' are meta characters in
+     * cookies. By convention, they are escaped using the URL-encoding. This is
+     * only a convention, not a standard. Often, cookies are expected to have
+     * encoded values. We encode '=' and ';' because we must. We encode '%' and
+     * '+' because they are meta characters in URL encoding.
+     * @param string The source string.
+     * @return       The escaped result.
+     */
+    public static String escape(String string) {
+        char         c;
+        String       s = string.trim();
+        StringBuffer sb = new StringBuffer();
+        int          length = s.length();
+        for (int i = 0; i < length; i += 1) {
+            c = s.charAt(i);
+            if (c < ' ' || c == '+' || c == '%' || c == '=' || c == ';') {
+                sb.append('%');
+                sb.append(Character.forDigit((char)((c >>> 4) & 0x0f), 16));
+                sb.append(Character.forDigit((char)(c & 0x0f), 16));
+            } else {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
 
 
-	/**
-	 * Convert a cookie specification string into a JSONObject. The string will contain a name value
-	 * pair separated by '='. The name and the value will be unescaped, possibly converting '+' and
-	 * '%' sequences. The cookie properties may follow, separated by ';', also represented as
-	 * name=value (except the secure property, which does not have a value). The name will be stored
-	 * under the key "name", and the value will be stored under the key "value". This method does
-	 * not do checking or validation of the parameters. It only converts the cookie string into a
-	 * JSONObject.
-	 * 
-	 * @param string
-	 *            The cookie specification string.
-	 * @return A JSONObject containing "name", "value", and possibly other members.
-	 * @throws JSONException
-	 */
-	public static JSONObject toJSONObject(String string) throws JSONException
-	{
-		String name;
-		JSONObject jo = new JSONObject();
-		Object value;
-		JSONTokener x = new JSONTokener(string);
-		jo.put("name", x.nextTo('='));
-		x.next('=');
-		jo.put("value", x.nextTo(';'));
-		x.next();
-		while (x.more())
-		{
-			name = unescape(x.nextTo("=;"));
-			if (x.next() != '=')
-			{
-				if (name.equals("secure"))
-				{
-					value = Boolean.TRUE;
-				}
-				else
-				{
-					throw x.syntaxError("Missing '=' in cookie parameter.");
-				}
-			}
-			else
-			{
-				value = unescape(x.nextTo(';'));
-				x.next();
-			}
-			jo.put(name, value);
-		}
-		return jo;
-	}
+    /**
+     * Convert a cookie specification string into a JSONObject. The string
+     * will contain a name value pair separated by '='. The name and the value
+     * will be unescaped, possibly converting '+' and '%' sequences. The
+     * cookie properties may follow, separated by ';', also represented as
+     * name=value (except the secure property, which does not have a value).
+     * The name will be stored under the key "name", and the value will be
+     * stored under the key "value". This method does not do checking or
+     * validation of the parameters. It only converts the cookie string into
+     * a JSONObject.
+     * @param string The cookie specification string.
+     * @return A JSONObject containing "name", "value", and possibly other
+     *  members.
+     * @throws JSONException
+     */
+    public static JSONObject toJSONObject(String string) throws JSONException {
+        String         name;
+        JSONObject     jo = new JSONObject();
+        Object         value;
+        JSONTokener x = new JSONTokener(string);
+        jo.put("name", x.nextTo('='));
+        x.next('=');
+        jo.put("value", x.nextTo(';'));
+        x.next();
+        while (x.more()) {
+            name = unescape(x.nextTo("=;"));
+            if (x.next() != '=') {
+                if (name.equals("secure")) {
+                    value = Boolean.TRUE;
+                } else {
+                    throw x.syntaxError("Missing '=' in cookie parameter.");
+                }
+            } else {
+                value = unescape(x.nextTo(';'));
+                x.next();
+            }
+            jo.put(name, value);
+        }
+        return jo;
+    }
 
 
-	/**
-	 * Convert a JSONObject into a cookie specification string. The JSONObject must contain "name"
-	 * and "value" members. If the JSONObject contains "expires", "domain", "path", or "secure"
-	 * members, they will be appended to the cookie specification string. All other members are
-	 * ignored.
-	 * 
-	 * @param jo
-	 *            A JSONObject
-	 * @return A cookie specification string
-	 * @throws JSONException
-	 */
-	public static String toString(JSONObject jo) throws JSONException
-	{
-		StringBuffer sb = new StringBuffer();
+    /**
+     * Convert a JSONObject into a cookie specification string. The JSONObject
+     * must contain "name" and "value" members.
+     * If the JSONObject contains "expires", "domain", "path", or "secure"
+     * members, they will be appended to the cookie specification string.
+     * All other members are ignored.
+     * @param jo A JSONObject
+     * @return A cookie specification string
+     * @throws JSONException
+     */
+    public static String toString(JSONObject jo) throws JSONException {
+        StringBuffer sb = new StringBuffer();
 
-		sb.append(escape(jo.getString("name")));
-		sb.append("=");
-		sb.append(escape(jo.getString("value")));
-		if (jo.has("expires"))
-		{
-			sb.append(";expires=");
-			sb.append(jo.getString("expires"));
-		}
-		if (jo.has("domain"))
-		{
-			sb.append(";domain=");
-			sb.append(escape(jo.getString("domain")));
-		}
-		if (jo.has("path"))
-		{
-			sb.append(";path=");
-			sb.append(escape(jo.getString("path")));
-		}
-		if (jo.optBoolean("secure"))
-		{
-			sb.append(";secure");
-		}
-		return sb.toString();
-	}
+        sb.append(escape(jo.getString("name")));
+        sb.append("=");
+        sb.append(escape(jo.getString("value")));
+        if (jo.has("expires")) {
+            sb.append(";expires=");
+            sb.append(jo.getString("expires"));
+        }
+        if (jo.has("domain")) {
+            sb.append(";domain=");
+            sb.append(escape(jo.getString("domain")));
+        }
+        if (jo.has("path")) {
+            sb.append(";path=");
+            sb.append(escape(jo.getString("path")));
+        }
+        if (jo.optBoolean("secure")) {
+            sb.append(";secure");
+        }
+        return sb.toString();
+    }
 
-	/**
-	 * Convert <code>%</code><i>hh</i> sequences to single characters, and convert plus to space.
-	 * 
-	 * @param string
-	 *            A string that may contain <code>+</code>&nbsp;<small>(plus)</small> and
-	 *            <code>%</code><i>hh</i> sequences.
-	 * @return The unescaped string.
-	 */
-	public static String unescape(String string)
-	{
-		int length = string.length();
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < length; ++i)
-		{
-			char c = string.charAt(i);
-			if (c == '+')
-			{
-				c = ' ';
-			}
-			else if (c == '%' && i + 2 < length)
-			{
-				int d = JSONTokener.dehexchar(string.charAt(i + 1));
-				int e = JSONTokener.dehexchar(string.charAt(i + 2));
-				if (d >= 0 && e >= 0)
-				{
-					c = (char)(d * 16 + e);
-					i += 2;
-				}
-			}
-			sb.append(c);
-		}
-		return sb.toString();
-	}
+    /**
+     * Convert <code>%</code><i>hh</i> sequences to single characters, and
+     * convert plus to space.
+     * @param string A string that may contain
+     *      <code>+</code>&nbsp;<small>(plus)</small> and
+     *      <code>%</code><i>hh</i> sequences.
+     * @return The unescaped string.
+     */
+    public static String unescape(String string) {
+        int length = string.length();
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < length; ++i) {
+            char c = string.charAt(i);
+            if (c == '+') {
+                c = ' ';
+            } else if (c == '%' && i + 2 < length) {
+                int d = JSONTokener.dehexchar(string.charAt(i + 1));
+                int e = JSONTokener.dehexchar(string.charAt(i + 2));
+                if (d >= 0 && e >= 0) {
+                    c = (char)(d * 16 + e);
+                    i += 2;
+                }
+            }
+            sb.append(c);
+        }
+        return sb.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c01d793/wicket-core/src/main/java/org/apache/wicket/ajax/json/CookieList.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/CookieList.java b/wicket-core/src/main/java/org/apache/wicket/ajax/json/CookieList.java
index cbf2fc4..13c2eff 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/CookieList.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/CookieList.java
@@ -1,99 +1,90 @@
 package org.apache.wicket.ajax.json;
 
 /*
- Copyright (c) 2002 JSON.org
+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:
+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 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 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 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.
+*/
 
 import java.util.Iterator;
 
 /**
  * Convert a web browser cookie list string to a JSONObject and back.
- * 
  * @author JSON.org
  * @version 2010-12-24
  */
-public class CookieList
-{
+public class CookieList {
 
-	/**
-	 * Convert a cookie list into a JSONObject. A cookie list is a sequence of name/value pairs. The
-	 * names are separated from the values by '='. The pairs are separated by ';'. The names and the
-	 * values will be unescaped, possibly converting '+' and '%' sequences.
-	 * 
-	 * To add a cookie to a cooklist, cookielistJSONObject.put(cookieJSONObject.getString("name"),
-	 * cookieJSONObject.getString("value"));
-	 * 
-	 * @param string
-	 *            A cookie list string
-	 * @return A JSONObject
-	 * @throws JSONException
-	 */
-	public static JSONObject toJSONObject(String string) throws JSONException
-	{
-		JSONObject jo = new JSONObject();
-		JSONTokener x = new JSONTokener(string);
-		while (x.more())
-		{
-			String name = Cookie.unescape(x.nextTo('='));
-			x.next('=');
-			jo.put(name, Cookie.unescape(x.nextTo(';')));
-			x.next();
-		}
-		return jo;
-	}
+    /**
+     * Convert a cookie list into a JSONObject. A cookie list is a sequence
+     * of name/value pairs. The names are separated from the values by '='.
+     * The pairs are separated by ';'. The names and the values
+     * will be unescaped, possibly converting '+' and '%' sequences.
+     *
+     * To add a cookie to a cooklist,
+     * cookielistJSONObject.put(cookieJSONObject.getString("name"),
+     *     cookieJSONObject.getString("value"));
+     * @param string  A cookie list string
+     * @return A JSONObject
+     * @throws JSONException
+     */
+    public static JSONObject toJSONObject(String string) throws JSONException {
+        JSONObject jo = new JSONObject();
+        JSONTokener x = new JSONTokener(string);
+        while (x.more()) {
+            String name = Cookie.unescape(x.nextTo('='));
+            x.next('=');
+            jo.put(name, Cookie.unescape(x.nextTo(';')));
+            x.next();
+        }
+        return jo;
+    }
 
 
-	/**
-	 * Convert a JSONObject into a cookie list. A cookie list is a sequence of name/value pairs. The
-	 * names are separated from the values by '='. The pairs are separated by ';'. The characters
-	 * '%', '+', '=', and ';' in the names and values are replaced by "%hh".
-	 * 
-	 * @param jo
-	 *            A JSONObject
-	 * @return A cookie list string
-	 * @throws JSONException
-	 */
-	public static String toString(JSONObject jo) throws JSONException
-	{
-		boolean b = false;
-		Iterator keys = jo.keys();
-		String string;
-		StringBuffer sb = new StringBuffer();
-		while (keys.hasNext())
-		{
-			string = keys.next().toString();
-			if (!jo.isNull(string))
-			{
-				if (b)
-				{
-					sb.append(';');
-				}
-				sb.append(Cookie.escape(string));
-				sb.append("=");
-				sb.append(Cookie.escape(jo.getString(string)));
-				b = true;
-			}
-		}
-		return sb.toString();
-	}
+    /**
+     * Convert a JSONObject into a cookie list. A cookie list is a sequence
+     * of name/value pairs. The names are separated from the values by '='.
+     * The pairs are separated by ';'. The characters '%', '+', '=', and ';'
+     * in the names and values are replaced by "%hh".
+     * @param jo A JSONObject
+     * @return A cookie list string
+     * @throws JSONException
+     */
+    public static String toString(JSONObject jo) throws JSONException {
+        boolean      b = false;
+        Iterator     keys = jo.keys();
+        String       string;
+        StringBuffer sb = new StringBuffer();
+        while (keys.hasNext()) {
+            string = keys.next().toString();
+            if (!jo.isNull(string)) {
+                if (b) {
+                    sb.append(';');
+                }
+                sb.append(Cookie.escape(string));
+                sb.append("=");
+                sb.append(Cookie.escape(jo.getString(string)));
+                b = true;
+            }
+        }
+        return sb.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c01d793/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTP.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTP.java b/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTP.java
index 051a3a9..4b265cb 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTP.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTP.java
@@ -1,205 +1,163 @@
 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.
- */
+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.
+*/
 
 import java.util.Iterator;
 
 /**
  * Convert an HTTP header to a JSONObject and back.
- * 
  * @author JSON.org
  * @version 2010-12-24
  */
-public class HTTP
-{
-
-	/** Carriage return/line feed. */
-	public static final String CRLF = "\r\n";
-
-	/**
-	 * Convert an HTTP header string into a JSONObject. It can be a request header or a response
-	 * header. A request header will contain
-	 * 
-	 * <pre>
-	 * {
-	 *    Method: "POST" (for example),
-	 *    "Request-URI": "/" (for example),
-	 *    "HTTP-Version": "HTTP/1.1" (for example)
-	 * }
-	 * </pre>
-	 * 
-	 * A response header will contain
-	 * 
-	 * <pre>
-	 * {
-	 *    "HTTP-Version": "HTTP/1.1" (for example),
-	 *    "Status-Code": "200" (for example),
-	 *    "Reason-Phrase": "OK" (for example)
-	 * }
-	 * </pre>
-	 * 
-	 * In addition, the other parameters in the header will be captured, using the HTTP field names
-	 * as JSON names, so that
-	 * 
-	 * <pre>
-	 *    Date: Sun, 26 May 2002 18:06:04 GMT
-	 *    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
-	 *    Cache-Control: no-cache
-	 * </pre>
-	 * 
-	 * become
-	 * 
-	 * <pre>
-	 * {...
-	 *    Date: "Sun, 26 May 2002 18:06:04 GMT",
-	 *    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
-	 *    "Cache-Control": "no-cache",
-	 * ...}
-	 * </pre>
-	 * 
-	 * It does no further checking or conversion. It does not parse dates. It does not do '%'
-	 * transforms on URLs.
-	 * 
-	 * @param string
-	 *            An HTTP header string.
-	 * @return A JSONObject containing the elements and attributes of the XML string.
-	 * @throws JSONException
-	 */
-	public static JSONObject toJSONObject(String string) throws JSONException
-	{
-		JSONObject jo = new JSONObject();
-		HTTPTokener x = new HTTPTokener(string);
-		String token;
-
-		token = x.nextToken();
-		if (token.toUpperCase().startsWith("HTTP"))
-		{
+public class HTTP {
+
+    /** Carriage return/line feed. */
+    public static final String CRLF = "\r\n";
+
+    /**
+     * Convert an HTTP header string into a JSONObject. It can be a request
+     * header or a response header. A request header will contain
+     * <pre>{
+     *    Method: "POST" (for example),
+     *    "Request-URI": "/" (for example),
+     *    "HTTP-Version": "HTTP/1.1" (for example)
+     * }</pre>
+     * A response header will contain
+     * <pre>{
+     *    "HTTP-Version": "HTTP/1.1" (for example),
+     *    "Status-Code": "200" (for example),
+     *    "Reason-Phrase": "OK" (for example)
+     * }</pre>
+     * In addition, the other parameters in the header will be captured, using
+     * the HTTP field names as JSON names, so that <pre>
+     *    Date: Sun, 26 May 2002 18:06:04 GMT
+     *    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
+     *    Cache-Control: no-cache</pre>
+     * become
+     * <pre>{...
+     *    Date: "Sun, 26 May 2002 18:06:04 GMT",
+     *    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
+     *    "Cache-Control": "no-cache",
+     * ...}</pre>
+     * It does no further checking or conversion. It does not parse dates.
+     * It does not do '%' transforms on URLs.
+     * @param string An HTTP header string.
+     * @return A JSONObject containing the elements and attributes
+     * of the XML string.
+     * @throws JSONException
+     */
+    public static JSONObject toJSONObject(String string) throws JSONException {
+        JSONObject     jo = new JSONObject();
+        HTTPTokener    x = new HTTPTokener(string);
+        String         token;
+
+        token = x.nextToken();
+        if (token.toUpperCase().startsWith("HTTP")) {
 
 // Response
 
-			jo.put("HTTP-Version", token);
-			jo.put("Status-Code", x.nextToken());
-			jo.put("Reason-Phrase", x.nextTo('\0'));
-			x.next();
+            jo.put("HTTP-Version", token);
+            jo.put("Status-Code", x.nextToken());
+            jo.put("Reason-Phrase", x.nextTo('\0'));
+            x.next();
 
-		}
-		else
-		{
+        } else {
 
 // Request
 
-			jo.put("Method", token);
-			jo.put("Request-URI", x.nextToken());
-			jo.put("HTTP-Version", x.nextToken());
-		}
+            jo.put("Method", token);
+            jo.put("Request-URI", x.nextToken());
+            jo.put("HTTP-Version", x.nextToken());
+        }
 
 // Fields
 
-		while (x.more())
-		{
-			String name = x.nextTo(':');
-			x.next(':');
-			jo.put(name, x.nextTo('\0'));
-			x.next();
-		}
-		return jo;
-	}
-
-
-	/**
-	 * Convert a JSONObject into an HTTP header. A request header must contain
-	 * 
-	 * <pre>
-	 * {
-	 *    Method: "POST" (for example),
-	 *    "Request-URI": "/" (for example),
-	 *    "HTTP-Version": "HTTP/1.1" (for example)
-	 * }
-	 * </pre>
-	 * 
-	 * A response header must contain
-	 * 
-	 * <pre>
-	 * {
-	 *    "HTTP-Version": "HTTP/1.1" (for example),
-	 *    "Status-Code": "200" (for example),
-	 *    "Reason-Phrase": "OK" (for example)
-	 * }
-	 * </pre>
-	 * 
-	 * Any other members of the JSONObject will be output as HTTP fields. The result will end with
-	 * two CRLF pairs.
-	 * 
-	 * @param jo
-	 *            A JSONObject
-	 * @return An HTTP header string.
-	 * @throws JSONException
-	 *             if the object does not contain enough information.
-	 */
-	public static String toString(JSONObject jo) throws JSONException
-	{
-		Iterator keys = jo.keys();
-		String string;
-		StringBuffer sb = new StringBuffer();
-		if (jo.has("Status-Code") && jo.has("Reason-Phrase"))
-		{
-			sb.append(jo.getString("HTTP-Version"));
-			sb.append(' ');
-			sb.append(jo.getString("Status-Code"));
-			sb.append(' ');
-			sb.append(jo.getString("Reason-Phrase"));
-		}
-		else if (jo.has("Method") && jo.has("Request-URI"))
-		{
-			sb.append(jo.getString("Method"));
-			sb.append(' ');
-			sb.append('"');
-			sb.append(jo.getString("Request-URI"));
-			sb.append('"');
-			sb.append(' ');
-			sb.append(jo.getString("HTTP-Version"));
-		}
-		else
-		{
-			throw new JSONException("Not enough material for an HTTP header.");
-		}
-		sb.append(CRLF);
-		while (keys.hasNext())
-		{
-			string = keys.next().toString();
-			if (!string.equals("HTTP-Version") && !string.equals("Status-Code") &&
-				!string.equals("Reason-Phrase") && !string.equals("Method") &&
-				!string.equals("Request-URI") && !jo.isNull(string))
-			{
-				sb.append(string);
-				sb.append(": ");
-				sb.append(jo.getString(string));
-				sb.append(CRLF);
-			}
-		}
-		sb.append(CRLF);
-		return sb.toString();
-	}
+        while (x.more()) {
+            String name = x.nextTo(':');
+            x.next(':');
+            jo.put(name, x.nextTo('\0'));
+            x.next();
+        }
+        return jo;
+    }
+
+
+    /**
+     * Convert a JSONObject into an HTTP header. A request header must contain
+     * <pre>{
+     *    Method: "POST" (for example),
+     *    "Request-URI": "/" (for example),
+     *    "HTTP-Version": "HTTP/1.1" (for example)
+     * }</pre>
+     * A response header must contain
+     * <pre>{
+     *    "HTTP-Version": "HTTP/1.1" (for example),
+     *    "Status-Code": "200" (for example),
+     *    "Reason-Phrase": "OK" (for example)
+     * }</pre>
+     * Any other members of the JSONObject will be output as HTTP fields.
+     * The result will end with two CRLF pairs.
+     * @param jo A JSONObject
+     * @return An HTTP header string.
+     * @throws JSONException if the object does not contain enough
+     *  information.
+     */
+    public static String toString(JSONObject jo) throws JSONException {
+        Iterator     keys = jo.keys();
+        String       string;
+        StringBuffer sb = new StringBuffer();
+        if (jo.has("Status-Code") && jo.has("Reason-Phrase")) {
+            sb.append(jo.getString("HTTP-Version"));
+            sb.append(' ');
+            sb.append(jo.getString("Status-Code"));
+            sb.append(' ');
+            sb.append(jo.getString("Reason-Phrase"));
+        } else if (jo.has("Method") && jo.has("Request-URI")) {
+            sb.append(jo.getString("Method"));
+            sb.append(' ');
+            sb.append('"');
+            sb.append(jo.getString("Request-URI"));
+            sb.append('"');
+            sb.append(' ');
+            sb.append(jo.getString("HTTP-Version"));
+        } else {
+            throw new JSONException("Not enough material for an HTTP header.");
+        }
+        sb.append(CRLF);
+        while (keys.hasNext()) {
+            string = keys.next().toString();
+            if (!"HTTP-Version".equals(string)      && !"Status-Code".equals(string) &&
+                    !"Reason-Phrase".equals(string) && !"Method".equals(string) &&
+                    !"Request-URI".equals(string)   && !jo.isNull(string)) {
+                sb.append(string);
+                sb.append(": ");
+                sb.append(jo.getString(string));
+                sb.append(CRLF);
+            }
+        }
+        sb.append(CRLF);
+        return sb.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c01d793/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTPTokener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTPTokener.java b/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTPTokener.java
index dc61a75..97b5b2b 100755
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTPTokener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/json/HTTPTokener.java
@@ -1,92 +1,77 @@
 package org.apache.wicket.ajax.json;
 
 /*
- Copyright (c) 2002 JSON.org
+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:
+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 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 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 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 HTTPTokener extends the JSONTokener to provide additional methods for the parsing of HTTP
- * headers.
- * 
+ * The HTTPTokener extends the JSONTokener to provide additional methods
+ * for the parsing of HTTP headers.
  * @author JSON.org
  * @version 2010-12-24
  */
-public class HTTPTokener extends JSONTokener
-{
+public class HTTPTokener extends JSONTokener {
 
-	/**
-	 * Construct an HTTPTokener from a string.
-	 * 
-	 * @param string
-	 *            A source string.
-	 */
-	public HTTPTokener(String string)
-	{
-		super(string);
-	}
+    /**
+     * Construct an HTTPTokener from a string.
+     * @param string A source string.
+     */
+    public HTTPTokener(String string) {
+        super(string);
+    }
 
 
-	/**
-	 * Get the next token or string. This is used in parsing HTTP headers.
-	 * 
-	 * @throws JSONException
-	 * @return A String.
-	 */
-	public String nextToken() throws JSONException
-	{
-		char c;
-		char q;
-		StringBuffer sb = new StringBuffer();
-		do
-		{
-			c = next();
-		}
-		while (Character.isWhitespace(c));
-		if (c == '"' || c == '\'')
-		{
-			q = c;
-			for (;;)
-			{
-				c = next();
-				if (c < ' ')
-				{
-					throw syntaxError("Unterminated string.");
-				}
-				if (c == q)
-				{
-					return sb.toString();
-				}
-				sb.append(c);
-			}
-		}
-		for (;;)
-		{
-			if (c == 0 || Character.isWhitespace(c))
-			{
-				return sb.toString();
-			}
-			sb.append(c);
-			c = next();
-		}
-	}
+    /**
+     * Get the next token or string. This is used in parsing HTTP headers.
+     * @throws JSONException
+     * @return A String.
+     */
+    public String nextToken() throws JSONException {
+        char c;
+        char q;
+        StringBuffer sb = new StringBuffer();
+        do {
+            c = next();
+        } while (Character.isWhitespace(c));
+        if (c == '"' || c == '\'') {
+            q = c;
+            for (;;) {
+                c = next();
+                if (c < ' ') {
+                    throw syntaxError("Unterminated string.");
+                }
+                if (c == q) {
+                    return sb.toString();
+                }
+                sb.append(c);
+            }
+        } 
+        for (;;) {
+            if (c == 0 || Character.isWhitespace(c)) {
+                return sb.toString();
+            }
+            sb.append(c);
+            c = next();
+        }
+    }
 }