Author: markt Date: Mon Sep 1 18:25:06 2014 New Revision: 1621862 URL: http://svn.apache.org/r1621862 Log: Refactor array of server cookies into separate class.
Added: tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java (with props) Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java?rev=1621862&r1=1621861&r2=1621862&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java Mon Sep 1 18:25:06 2014 @@ -46,8 +46,7 @@ public final class Cookies { // expected average number of cookies per request public static final int INITIAL_SIZE = 4; - private ServerCookie scookies[] = new ServerCookie[INITIAL_SIZE]; - private int cookieCount = 0; + private ServerCookies scookies = new ServerCookies(INITIAL_SIZE); private boolean unprocessed = true; private final MimeHeaders headers; @@ -66,12 +65,7 @@ public final class Cookies { public void recycle() { - for (int i = 0; i < cookieCount; i++) { - if (scookies[i] != null) { - scookies[i].recycle(); - } - } - cookieCount = 0; + scookies.recycle(); unprocessed = true; } @@ -100,7 +94,7 @@ public final class Cookies { // This will trigger cookie processing getCookieCount(); } - return scookies[idx]; + return scookies.getCookie(idx); } @@ -109,29 +103,7 @@ public final class Cookies { unprocessed = false; processCookies(headers); } - return cookieCount; - } - - - /** - * Register a new, initialized cookie. Cookies are recycled, and most of the - * time an existing ServerCookie object is returned. The caller can set the - * name/value and attributes for the cookie. - */ - private ServerCookie addCookie() { - if (cookieCount >= scookies.length) { - ServerCookie scookiesTmp[] = new ServerCookie[2*cookieCount]; - System.arraycopy(scookies, 0, scookiesTmp, 0, cookieCount); - scookies = scookiesTmp; - } - - ServerCookie c = scookies[cookieCount]; - if (c == null) { - c = new ServerCookie(); - scookies[cookieCount] = c; - } - cookieCount++; - return c; + return scookies.getCookieCount(); } @@ -471,7 +443,7 @@ public final class Cookies { continue; } - sc = addCookie(); + sc = scookies.addCookie(); sc.setVersion( version ); sc.getName().setBytes( bytes, nameStart, nameEnd-nameStart); Added: tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java?rev=1621862&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java (added) +++ tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java Mon Sep 1 18:25:06 2014 @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.util.http; + +/** + * This class is not thread-safe. + */ +public class ServerCookies { + + private ServerCookie[] serverCookies; + + private int cookieCount = 0; + + + public ServerCookies(int initialSize) { + serverCookies = new ServerCookie[initialSize]; + } + + + /** + * Register a new, initialized cookie. Cookies are recycled, and most of the + * time an existing ServerCookie object is returned. The caller can set the + * name/value and attributes for the cookie. + */ + public ServerCookie addCookie() { + if (cookieCount >= serverCookies.length) { + ServerCookie scookiesTmp[] = new ServerCookie[2*cookieCount]; + System.arraycopy(serverCookies, 0, scookiesTmp, 0, cookieCount); + serverCookies = scookiesTmp; + } + + ServerCookie c = serverCookies[cookieCount]; + if (c == null) { + c = new ServerCookie(); + serverCookies[cookieCount] = c; + } + cookieCount++; + return c; + } + + + public ServerCookie getCookie(int idx) { + return serverCookies[idx]; + } + + + public int getCookieCount() { + return cookieCount; + } + + + public void recycle() { + for (int i = 0; i < cookieCount; i++) { + if (serverCookies[i] != null) { + serverCookies[i].recycle(); + } + } + cookieCount = 0; + } +} Propchange: tomcat/trunk/java/org/apache/tomcat/util/http/ServerCookies.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org