summaryrefslogtreecommitdiffstats
path: root/libjava/gnu/java/net/protocol/http/SimpleCookieManager.java
diff options
context:
space:
mode:
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-11 20:19:56 +0000
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-11 20:19:56 +0000
commit22ba31fd0ccd22d752ff53bdff8bce7be753c874 (patch)
treeb57d5d648fcfa2eb2485ab53c50224d99fa4fff5 /libjava/gnu/java/net/protocol/http/SimpleCookieManager.java
parent7d9982de8d8406891d65b98a2a8bc1771005a4cd (diff)
downloadppe42-gcc-22ba31fd0ccd22d752ff53bdff8bce7be753c874.tar.gz
ppe42-gcc-22ba31fd0ccd22d752ff53bdff8bce7be753c874.zip
2005-01-11 Michael Koch <konqueror@gmx.de>
PR libgcj/14012, PR libgcj/14013, PR libgcj/15157, PR libgcj/15509 * gnu/java/net/BASE64.java, gnu/java/net/EmptyX509TrustManager.java, gnu/java/net/LineInputStream.java, gnu/java/net/protocol/http/Authenticator.java, gnu/java/net/protocol/http/ByteArrayRequestBodyWriter.java, gnu/java/net/protocol/http/ByteArrayResponseBodyReader.java, gnu/java/net/protocol/http/ChunkedInputStream.java, gnu/java/net/protocol/http/Cookie.java, gnu/java/net/protocol/http/CookieManager.java, gnu/java/net/protocol/http/Credentials.java, gnu/java/net/protocol/http/HTTPConnection.java, gnu/java/net/protocol/http/HTTPDateFormat.java, gnu/java/net/protocol/http/HTTPURLConnection.java, gnu/java/net/protocol/http/Headers.java, gnu/java/net/protocol/http/Request.java, gnu/java/net/protocol/http/RequestBodyWriter.java, gnu/java/net/protocol/http/Response.java, gnu/java/net/protocol/http/ResponseBodyReader.java, gnu/java/net/protocol/http/ResponseHeaderHandler.java, gnu/java/net/protocol/http/SimpleCookieManager.java, gnu/java/net/protocol/http/event/ConnectionEvent.java, gnu/java/net/protocol/http/event/ConnectionListener.java, gnu/java/net/protocol/http/event/RequestEvent.java, gnu/java/net/protocol/http/event/RequestListener.java: New files. * gnu/java/net/protocol/http/Connection.java: Removed. * gnu/java/net/protocol/http/Handler.java, javax/net/ssl/HttpsURLConnection.java: Updated. * Makefile.am: Added new files and remove old ones. * Makefile.in: Regenerated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93195 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/net/protocol/http/SimpleCookieManager.java')
-rw-r--r--libjava/gnu/java/net/protocol/http/SimpleCookieManager.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/libjava/gnu/java/net/protocol/http/SimpleCookieManager.java b/libjava/gnu/java/net/protocol/http/SimpleCookieManager.java
new file mode 100644
index 00000000000..19649074a99
--- /dev/null
+++ b/libjava/gnu/java/net/protocol/http/SimpleCookieManager.java
@@ -0,0 +1,140 @@
+/* CookieManager.java --
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.net.protocol.http;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A simple non-persistent cookie manager. This class can be extended to
+ * provide cookie persistence.
+ *
+ * @author Chris Burdess (dog@gnu.org)
+ */
+public class SimpleCookieManager
+ implements CookieManager
+{
+
+ /**
+ * The cookie cache.
+ * This is a dictionary mapping domains to maps of cookies by name.
+ */
+ protected Map cookies;
+
+ /**
+ * Constructor.
+ */
+ public SimpleCookieManager()
+ {
+ cookies = new HashMap();
+ }
+
+ public void setCookie(Cookie cookie)
+ {
+ String domain = cookie.getDomain();
+ Map map =(Map) cookies.get(domain);
+ if (map == null)
+ {
+ map = new HashMap();
+ cookies.put(domain, map);
+ }
+ String name = cookie.getName();
+ map.put(name, cookie); // will replace a cookie of the same name
+ }
+
+ public Cookie[] getCookies(String host, boolean secure, String path)
+ {
+ List matches = new ArrayList();
+ Date now = new Date();
+ if (Character.isLetter(host.charAt(0)))
+ {
+ int di = host.indexOf('.');
+ while (di != -1)
+ {
+ addCookies(matches, host, secure, path, now);
+ host = host.substring(di);
+ di = host.indexOf('.', 1);
+ }
+ }
+ addCookies(matches, host, secure, path, now);
+ Cookie[] ret = new Cookie[matches.size()];
+ matches.toArray(ret);
+ return ret;
+ }
+
+ private void addCookies(List matches, String domain, boolean secure,
+ String path, Date now)
+ {
+ Map map = (Map) cookies.get(domain);
+ if (map != null)
+ {
+ List expired = new ArrayList();
+ for (Iterator i = map.entrySet().iterator(); i.hasNext(); )
+ {
+ Map.Entry entry = (Map.Entry) i.next();
+ Cookie cookie = (Cookie) entry.getValue();
+ Date expires = cookie.getExpiryDate();
+ if (expires != null && expires.before(now))
+ {
+ expired.add(entry.getKey());
+ continue;
+ }
+ if (secure && !cookie.isSecure())
+ {
+ continue;
+ }
+ if (path.startsWith(cookie.getPath()))
+ {
+ matches.add(cookie);
+ }
+ }
+ // Good housekeeping
+ for (Iterator i = expired.iterator(); i.hasNext(); )
+ {
+ map.remove(i.next());
+ }
+ }
+ }
+
+}
+
OpenPOWER on IntegriCloud