diff options
author | Adam Domurad <[email protected]> | 2012-08-17 10:40:22 -0400 |
---|---|---|
committer | Adam Domurad <[email protected]> | 2012-08-17 10:40:22 -0400 |
commit | e6dfb0a5fab464a93c7c38e3cb72cefc0c4e84ea (patch) | |
tree | cb7899e65c15491feb348a1701280bd8f1262e13 /plugin/icedteanp/java/sun | |
parent | 43ee427be2697090f2f6b0686bdfb3bac1c4964d (diff) |
Fixes PR588, Icedtea-web now saves cookies set in java cookie jar
Diffstat (limited to 'plugin/icedteanp/java/sun')
-rw-r--r-- | plugin/icedteanp/java/sun/applet/PluginCookieManager.java | 26 | ||||
-rw-r--r-- | plugin/icedteanp/java/sun/applet/PluginMain.java | 7 |
2 files changed, 32 insertions, 1 deletions
diff --git a/plugin/icedteanp/java/sun/applet/PluginCookieManager.java b/plugin/icedteanp/java/sun/applet/PluginCookieManager.java index 72a94dc..21bdbc0 100644 --- a/plugin/icedteanp/java/sun/applet/PluginCookieManager.java +++ b/plugin/icedteanp/java/sun/applet/PluginCookieManager.java @@ -45,7 +45,16 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import com.sun.jndi.toolkit.url.UrlUtil; + public class PluginCookieManager extends CookieManager { + private PluginStreamHandler streamHandler; + + public PluginCookieManager(PluginStreamHandler streamHandler) { + this.streamHandler = streamHandler; + } + + @Override public Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders) throws IOException { // pre-condition check @@ -84,4 +93,21 @@ public class PluginCookieManager extends CookieManager { return false; } + + @Override + public void put(URI uri, + Map<String, List<String>> responseHeaders) throws IOException { + super.put(uri, responseHeaders); + + for (Map.Entry<String, List<String>> headerEntry : responseHeaders.entrySet()) { + String type = headerEntry.getKey(); + if ("Set-Cookie".equalsIgnoreCase(type) || "Set-Cookie2".equalsIgnoreCase(type)) { + List<String> cookies = headerEntry.getValue(); + for (String cookie : cookies) { + streamHandler.write("plugin PluginSetCookie reference -1 " + UrlUtil.encode(uri.toString(), "UTF-8") + " " + cookie); + } + } + + } + } } diff --git a/plugin/icedteanp/java/sun/applet/PluginMain.java b/plugin/icedteanp/java/sun/applet/PluginMain.java index 09fce18..fa2de4b 100644 --- a/plugin/icedteanp/java/sun/applet/PluginMain.java +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java @@ -118,6 +118,9 @@ public class PluginMain { // Streams set. Start processing. streamHandler.startProcessing(); + + setCookieHandler(streamHandler); + } catch (Exception e) { e.printStackTrace(); System.err.println("Something very bad happened. I don't know what to do, so I am going to exit :("); @@ -199,8 +202,10 @@ public class PluginMain { } // override the proxy selector set by JNLPRuntime ProxySelector.setDefault(new PluginProxySelector()); + } - CookieManager ckManager = new PluginCookieManager(); + private static void setCookieHandler(PluginStreamHandler streamHandler) { + CookieManager ckManager = new PluginCookieManager(streamHandler); CookieHandler.setDefault(ckManager); } } |