public void setCookies()

in common/src/main/java/org/apache/asyncweb/common/DefaultHttpRequest.java [63:142]


    public void setCookies(String headerValue) {
        clearCookies();

        int version = -1; // -1 means version is not parsed yet.
        int fieldIdx = 0;
        MutableCookie currentCookie = null;

        StringTokenizer tk = new StringTokenizer(headerValue, ";,");

        while (tk.hasMoreTokens()) {
            String pair = tk.nextToken();
            String key;
            String value;

            int equalsPos = pair.indexOf('=');
            if (equalsPos >= 0) {
                key = pair.substring(0, equalsPos).trim();
                value = pair.substring(equalsPos + 1).trim();
            } else {
                key = pair.trim();
                value = "";
            }

            if (version < 0) {
                if (!key.equalsIgnoreCase("$Version")) {
                    // $Version is not specified.  Use the default (0).
                    version = 0;
                } else {
                    version = Integer.parseInt(value);
                    if (version != 0 && version != 1) {
                        throw new IllegalArgumentException("Invalid version: "
                                + version + " (" + headerValue + ")");
                    }
                }
            }

            if (version >= 0) {
                try {
                    switch (fieldIdx) {
                    case 1:
                        if (key.equalsIgnoreCase("$Path")) {
                            currentCookie.setPath(value);
                            fieldIdx++;
                        } else {
                            fieldIdx = 0;
                        }
                        break;
                    case 2:
                        if (key.equalsIgnoreCase("$Domain")) {
                            currentCookie.setDomain(value);
                            fieldIdx++;
                        } else {
                            fieldIdx = 0;
                        }
                        break;
                    case 3:
                        if (key.equalsIgnoreCase("$Port")) {
                            // Ignoring for now
                            fieldIdx++;
                        } else {
                            fieldIdx = 0;
                        }
                        break;
                    }
                } catch (NullPointerException e) {
                    throw new IllegalArgumentException(
                            "Cookie key-value pair not found (" + headerValue
                                    + ")");
                }

                if (fieldIdx == 0) {
                    currentCookie = new DefaultCookie(key);
                    currentCookie.setVersion(version);
                    currentCookie.setValue(value);
                    addCookie(currentCookie);
                    fieldIdx++;
                }
            }
        }
    }