JAL-3438 spotless for 2.11.2.0
[jalview.git] / src / org / json / Cookie.java
index 348dc68..f410735 100644 (file)
@@ -25,145 +25,175 @@ 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 2015-12-09
  */
-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();
-        int             length = s.length();
-        StringBuilder   sb = new StringBuilder(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();
+    int length = s.length();
+    StringBuilder sb = new StringBuilder(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);
+  /**
+   * 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.");
         }
-        return jo;
+      }
+      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
+  {
+    StringBuilder sb = new StringBuilder();
 
-    /**
-     * 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 {
-        StringBuilder sb = new StringBuilder();
-
-        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();
-        StringBuilder sb = new StringBuilder(length);
-        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);
+  /**
+   * 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();
+    StringBuilder sb = new StringBuilder(length);
+    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;
         }
-        return sb.toString();
+      }
+      sb.append(c);
     }
+    return sb.toString();
+  }
 }