Author: heiko.braun(a)jboss.com
Date: 2009-10-21 15:57:19 -0400 (Wed, 21 Oct 2009)
New Revision: 846
Modified:
bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/HttpClient.java
bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/XmlHttpProxy.java
Log:
Fix BPMC-25: XmlProxy chokes on cookies
Modified: bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/HttpClient.java
===================================================================
--- bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/HttpClient.java 2009-10-21 13:29:22
UTC (rev 845)
+++ bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/HttpClient.java 2009-10-21 19:57:19
UTC (rev 846)
@@ -82,8 +82,11 @@
{
if(this.callback!=null)
{
- for(XmlHttpProxy.Cookie c : callback.getCookies())
+ Map<String, XmlHttpProxy.Cookie> cookies = callback.getCookies();
+ Iterator it = cookies.keySet().iterator();
+ while(it.hasNext())
{
+ XmlHttpProxy.Cookie c = cookies.get(it.next());
if(headers==null) headers = new HashMap();
headers.put(
"Cookie", c.name + "=" + c.value // + "; Path="
+ c.path
Modified: bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/XmlHttpProxy.java
===================================================================
--- bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/XmlHttpProxy.java 2009-10-21
13:29:22 UTC (rev 845)
+++ bpm-console/trunk/gui/war/src/main/java/jmaki/xhp/XmlHttpProxy.java 2009-10-21
19:57:19 UTC (rev 846)
@@ -39,11 +39,11 @@
public XmlHttpProxy() {}
- private Set<Cookie> cookies = new HashSet<Cookie>();
+ private Map<String, Cookie> cookies = new HashMap<String, Cookie>();
public interface CookieCallback
{
- Set<Cookie> getCookies();
+ Map<String, Cookie> getCookies();
}
public XmlHttpProxy(String proxyHost, int proxyPort) {
@@ -142,7 +142,7 @@
CookieCallback callback = new CookieCallback()
{
- public Set<Cookie> getCookies()
+ public Map<String, Cookie> getCookies()
{
return accessCookies();
}
@@ -184,8 +184,12 @@
}
}
- for(Cookie exists : cookies)
+
+ List<String> toBeRemoved = new ArrayList<String>();
+ Iterator it = cookies.keySet().iterator();
+ while(it.hasNext())
{
+ Cookie exists = cookies.get(it.next());
if(exists.name.equals(c.name))
{
String msg = exists.value.equals(c.value) ?
@@ -194,11 +198,17 @@
System.out.println("Cookie '"+exists.name+"' exists:
" + msg);
// avoid doubles
- cookies.remove(exists);
+ toBeRemoved.add(exists.name);
}
}
-
- cookies.add(c);
+
+ // clean up
+ for(String s : toBeRemoved)
+ {
+ cookies.remove(s);
+ }
+
+ cookies.put(c.name, c);
}
if(null==in)
@@ -260,7 +270,7 @@
}
}
- private Set<Cookie> accessCookies()
+ private Map<String,Cookie> accessCookies()
{
return cookies;
}
Show replies by date