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

Reply via email to