Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 22681 invoked from network); 28 Apr 2006 21:47:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 28 Apr 2006 21:47:19 -0000 Received: (qmail 15968 invoked by uid 500); 28 Apr 2006 21:47:16 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 15908 invoked by uid 500); 28 Apr 2006 21:47:16 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 15892 invoked by uid 500); 28 Apr 2006 21:47:16 -0000 Received: (qmail 15864 invoked by uid 99); 28 Apr 2006 21:47:16 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Apr 2006 14:47:16 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 28 Apr 2006 14:47:15 -0700 Received: (qmail 22555 invoked by uid 65534); 28 Apr 2006 21:46:54 -0000 Message-ID: <20060428214654.22554.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r398025 - in /jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie: Cookie2.java RFC2965Spec.java Date: Fri, 28 Apr 2006 21:46:53 -0000 To: commons-cvs@jakarta.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: olegk Date: Fri Apr 28 14:46:53 2006 New Revision: 398025 URL: http://svn.apache.org/viewcvs?rev=398025&view=rev Log: Various (rather minor but numerous) code cleaups Modified: jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java Modified: jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java?rev=398025&r1=398024&r2=398025&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java (original) +++ jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java Fri Apr 28 14:46:53 2006 @@ -55,8 +55,6 @@ public static final String COMMENTURL = "commenturl"; public static final String DISCARD = "discard"; - public static final String COOKIE_NAME_KEY = "cookieName"; - /** * Default constructor. Creates a blank cookie */ Modified: jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java?rev=398025&r1=398024&r2=398025&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java (original) +++ jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java Fri Apr 28 14:46:53 2006 @@ -90,7 +90,6 @@ this.attribHandlerList = new ArrayList(10); this.rfc2109 = new RFC2109Spec(); - registerAttribHandler(Cookie2.COOKIE_NAME_KEY, new Cookie2NameAttributeHandler()); registerAttribHandler(Cookie2.PATH, new Cookie2PathAttributeHandler()); registerAttribHandler(Cookie2.DOMAIN, new Cookie2DomainAttributeHandler()); registerAttribHandler(Cookie2.PORT, new Cookie2PortAttributeHandler()); @@ -344,15 +343,21 @@ LOG.trace("enter RFC2965Spec.validate(String, int, String, " + "boolean, Cookie)"); - if (!(cookie instanceof Cookie2)) { + if (cookie instanceof Cookie2) { + if (cookie.getName().indexOf(' ') != -1) { + throw new MalformedCookieException("Cookie name may not contain blanks"); + } + if (cookie.getName().startsWith("$")) { + throw new MalformedCookieException("Cookie name may not start with $"); + } + CookieSource cookiesource = new CookieSource(host, port, path, secure); + for (Iterator i = getAttribHandlerIterator(); i.hasNext(); ) { + CookieAttributeHandler handler = (CookieAttributeHandler) i.next(); + handler.validate(cookie, cookiesource); + } + } else { // old-style cookies are validated according to the old rules this.rfc2109.validate(host, port, path, secure, cookie); - return; - } - CookieSource cookiesource = new CookieSource(host, port, path, secure); - for (Iterator i = getAttribHandlerIterator(); i.hasNext(); ) { - CookieAttributeHandler handler = (CookieAttributeHandler) i.next(); - handler.validate(cookie, cookiesource); } } @@ -371,33 +376,32 @@ LOG.trace("enter RFC2965.match(" + "String, int, String, boolean, Cookie"); - if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - - if (!(cookie instanceof Cookie2)) { + if (cookie instanceof Cookie2) { + CookieSource cookiesource = new CookieSource(host, port, path, secure); + for (Iterator i = getAttribHandlerIterator(); i.hasNext(); ) { + CookieAttributeHandler handler = (CookieAttributeHandler) i.next(); + if (!handler.match(cookie, cookiesource)) { + return false; + } + } + // check if cookie has expired + if (cookie.isPersistent() && cookie.isExpired()) { + return false; + } + // finally make sure that if cookie Secure attribute is set, then this + // request is made using a secure connection + if (cookie.getSecure()) { + return secure; + } + // if we get to this stage, we have a match + return true; + } else { // old-style cookies are matched according to the old rules return this.rfc2109.match(host, port, path, secure, cookie); } - CookieSource cookiesource = new CookieSource(host, port, path, secure); - for (Iterator i = getAttribHandlerIterator(); i.hasNext(); ) { - CookieAttributeHandler handler = (CookieAttributeHandler) i.next(); - if (!handler.match(cookie, cookiesource)) { - return false; - } - } - // check if cookie has expired - if (cookie.isPersistent() && cookie.isExpired()) { - return false; - } - // finally make sure that if cookie Secure attribute is set, then this - // request is made using a secure connection - if (cookie.getSecure()) { - return secure; - } - // if we get to this stage, we have a match - return true; } private void doFormatCookie2(final Cookie2 cookie, final StringBuffer buffer) { @@ -600,18 +604,6 @@ } /** - * Casts the given {@link Cookie} cookie to {@link Cookie2} cookie. - * @param cookieParam {@link Cookie} - * @return {@link Cookie2} - */ - private Cookie2 getCookie2Cookie(Cookie cookieParam) { - if (!(cookieParam instanceof Cookie2)) { - throw new IllegalArgumentException("Expected Cookie2 cookie."); - } - return ((Cookie2) cookieParam); - } - - /** * "Path" attribute handler for RFC 2965 cookie spec. */ private class Cookie2PathAttributeHandler @@ -621,12 +613,11 @@ * Parse cookie path attribute. * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) */ - public void parse(Cookie cookieParam, String path) + public void parse(final Cookie cookie, final String path) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); if (!cookie.isPathAttributeSpecified()) { if (path == null) { throw new MalformedCookieException( @@ -646,15 +637,14 @@ * prefix of the request-URI (case-sensitive matching). * @see CookieAttributeHandler#validate(org.apache.commons.httpclient.Cookie, String) */ - public void validate(final Cookie cookieParam, final CookieSource source) + public void validate(final Cookie cookie, final CookieSource source) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); String path = source.getPath(); if (path == null) { throw new IllegalArgumentException( @@ -673,7 +663,6 @@ "Illegal path attribute \"" + cookie.getPath() + "\". Path of origin: \"" + path + "\""); } - } /** @@ -681,14 +670,13 @@ * prefix of the request-URI (case-sensitive matching). * @see CookieAttributeHandler#match(org.apache.commons.httpclient.Cookie, String) */ - public boolean match(final Cookie cookieParam, final CookieSource source) { - if (cookieParam == null) { + public boolean match(final Cookie cookie, final CookieSource source) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); String path = source.getPath(); if (cookie.getPath() == null) { LOG.warn("Invalid cookie state: path attribute is null."); @@ -715,12 +703,11 @@ * Parse cookie domain attribute. * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) */ - public void parse(Cookie cookieParam, String domain) + public void parse(final Cookie cookie, String domain) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); if (!cookie.isDomainAttributeSpecified()) { //TODO (jain): how do we handle the case when domain is specified and equals host? if (domain == null) { @@ -744,15 +731,14 @@ * Validate cookie domain attribute. * @see CookieAttributeHandler#validate(org.apache.commons.httpclient.Cookie, String) */ - public void validate(final Cookie cookieParam, final CookieSource source) + public void validate(final Cookie cookie, final CookieSource source) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); String host = source.getHost().toLowerCase(); if (cookie.getDomain() == null) { throw new MalformedCookieException("Invalid cookie state: " + @@ -812,14 +798,13 @@ * Match cookie domain attribute. * @see CookieAttributeHandler#match(org.apache.commons.httpclient.Cookie, String) */ - public boolean match(final Cookie cookieParam, final CookieSource source) { - if (cookieParam == null) { + public boolean match(final Cookie cookie, final CookieSource source) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); String host = source.getHost().toLowerCase(); String cookieDomain = cookie.getDomain(); String effectiveHost = getEffectiveHost(host); @@ -851,24 +836,26 @@ * Parse cookie port attribute. * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) */ - public void parse(Cookie cookieParam, String portValue) + public void parse(final Cookie cookie, final String portValue) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); - if (!cookie.isPortAttributeSpecified()) { - if ((portValue == null) || (portValue.trim().equals(""))) { - // If the Port attribute is present but has no value, the - // cookie can only be sent to the request-port. - // Since the default port list contains only request-port, we don't - // need to do anything here. - cookie.setPortAttributeBlank(true); - } else { - int[] ports = parsePortAttribute(portValue); - cookie.setPorts(ports); + if (cookie instanceof Cookie2) { + Cookie2 cookie2 = (Cookie2) cookie; + if (!cookie2.isPortAttributeSpecified()) { + if ((portValue == null) || (portValue.trim().equals(""))) { + // If the Port attribute is present but has no value, the + // cookie can only be sent to the request-port. + // Since the default port list contains only request-port, we don't + // need to do anything here. + cookie2.setPortAttributeBlank(true); + } else { + int[] ports = parsePortAttribute(portValue); + cookie2.setPorts(ports); + } + cookie2.setPortAttributeSpecified(true); } - cookie.setPortAttributeSpecified(true); } } @@ -877,21 +864,23 @@ * in header, the request port must be in cookie's port list. * @see CookieAttributeHandler#validate(org.apache.commons.httpclient.Cookie, String) */ - public void validate(final Cookie cookieParam, final CookieSource source) + public void validate(final Cookie cookie, final CookieSource source) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); - int port = source.getPort(); - if (cookie.isPortAttributeSpecified()) { - if (!portMatch(port, cookie.getPorts())) { - throw new MalformedCookieException( - "Port attribute violates RFC 2965: " - + "Request port not found in cookie's port list."); + if (cookie instanceof Cookie2) { + Cookie2 cookie2 = (Cookie2) cookie; + int port = source.getPort(); + if (cookie2.isPortAttributeSpecified()) { + if (!portMatch(port, cookie2.getPorts())) { + throw new MalformedCookieException( + "Port attribute violates RFC 2965: " + + "Request port not found in cookie's port list."); + } } } } @@ -902,71 +891,33 @@ * must be in the cookie's port list. * @see CookieAttributeHandler#match(org.apache.commons.httpclient.Cookie, String) */ - public boolean match(final Cookie cookieParam, final CookieSource source) { - if (cookieParam == null) { + public boolean match(final Cookie cookie, final CookieSource source) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } if (source == null) { throw new IllegalArgumentException("Cookie source may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); - int port = source.getPort(); - if (cookie.isPortAttributeSpecified()) { - if (cookie.getPorts() == null) { - LOG.warn("Invalid cookie state: port not specified"); - return false; - } - if (!portMatch(port, cookie.getPorts())) { - return false; + if (cookie instanceof Cookie2) { + Cookie2 cookie2 = (Cookie2) cookie; + int port = source.getPort(); + if (cookie2.isPortAttributeSpecified()) { + if (cookie2.getPorts() == null) { + LOG.warn("Invalid cookie state: port not specified"); + return false; + } + if (!portMatch(port, cookie2.getPorts())) { + return false; + } } + return true; + } else { + return false; } - return true; } - } /** - * "Name" cookie attribute handler for RFC 2965 cookie spec. - */ - private class Cookie2NameAttributeHandler - implements CookieAttributeHandler { - - /** - * Parse cookie name. - * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) - */ - public void parse(Cookie cookie, String value) - throws MalformedCookieException { - } - - /** - * validate cookie name. - * @see CookieAttributeHandler#validate(org.apache.commons.httpclient.Cookie, String) - */ - public void validate(final Cookie cookieParam, final CookieSource source) - throws MalformedCookieException { - if (cookieParam == null) { - throw new IllegalArgumentException("Cookie may not be null"); - } - Cookie2 cookie = getCookie2Cookie(cookieParam); - if (cookie.getName().indexOf(' ') != -1) { - throw new MalformedCookieException("Cookie name may not contain blanks"); - } - if (cookie.getName().startsWith("$")) { - throw new MalformedCookieException("Cookie name may not start with $"); - } - } - - /** - * @see CookieAttributeHandler#match(org.apache.commons.httpclient.Cookie, String) - */ - public boolean match(final Cookie cookieParam, final CookieSource source) { - return true; - } - - } - - /** * "Max-age" cookie attribute handler for RFC 2965 cookie spec. */ private class Cookie2MaxageAttributeHandler @@ -976,12 +927,11 @@ * Parse cookie max-age attribute. * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) */ - public void parse(Cookie cookieParam, String value) + public void parse(final Cookie cookie, final String value) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); if (cookie.getExpiryDate() == null) { if (value == null) { throw new MalformedCookieException( @@ -1027,28 +977,30 @@ * Parse cookie version attribute. * @see CookieAttributeHandler#parse(org.apache.commons.httpclient.Cookie, String) */ - public void parse(Cookie cookieParam, String value) + public void parse(final Cookie cookie, final String value) throws MalformedCookieException { - if (cookieParam == null) { + if (cookie == null) { throw new IllegalArgumentException("Cookie may not be null"); } - Cookie2 cookie = getCookie2Cookie(cookieParam); - if (!cookie.isVersionAttributeSpecified()) { - if (value == null) { - throw new MalformedCookieException( - "Missing value for version attribute"); - } - int version = -1; - try { - version = Integer.parseInt(value); - } catch (NumberFormatException e) { - version = -1; - } - if (version < 0) { - throw new MalformedCookieException("Invalid cookie version."); + if (cookie instanceof Cookie2) { + Cookie2 cookie2 = (Cookie2) cookie; + if (!cookie2.isVersionAttributeSpecified()) { + if (value == null) { + throw new MalformedCookieException( + "Missing value for version attribute"); + } + int version = -1; + try { + version = Integer.parseInt(value); + } catch (NumberFormatException e) { + version = -1; + } + if (version < 0) { + throw new MalformedCookieException("Invalid cookie version."); + } + cookie2.setVersion(Integer.parseInt(value)); + cookie2.setVersionAttributeSpecified(true); } - cookie.setVersion(Integer.parseInt(value)); - cookie.setVersionAttributeSpecified(true); } } @@ -1056,21 +1008,23 @@ * validate cookie version attribute. Version attribute is REQUIRED. * @see CookieAttributeHandler#validate(org.apache.commons.httpclient.Cookie, String) */ - public void validate(final Cookie cookieParam, final CookieSource source) + public void validate(final Cookie cookie, final CookieSource source) throws MalformedCookieException { - if (cookieParam == null) { - throw new IllegalArgumentException("Cookie may not be null"); - } - Cookie2 cookie = getCookie2Cookie(cookieParam); - if (!cookie.isVersionAttributeSpecified()) { - throw new MalformedCookieException( - "Violates RFC 2965. Version attribute is required."); + if (cookie == null) { + throw new IllegalArgumentException("Cookie may not be null"); } - //TODO (jain): other versions for set-cookie2 ? - if (cookie.getVersion() != 1) { - throw new MalformedCookieException( - "Violates RFC 2965. Invalid value for Version attribute." + - "Must be \"1\"."); + if (cookie instanceof Cookie2) { + Cookie2 cookie2 = (Cookie2) cookie; + if (!cookie2.isVersionAttributeSpecified()) { + throw new MalformedCookieException( + "Violates RFC 2965. Version attribute is required."); + } + //TODO (jain): other versions for set-cookie2 ? + if (cookie2.getVersion() != 1) { + throw new MalformedCookieException( + "Violates RFC 2965. Invalid value for Version attribute." + + "Must be \"1\"."); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org