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: [email protected]
For additional commands, e-mail: [email protected]