request param String[] fix

0 views
Skip to first unread message

Paul Flynn

unread,
Jan 22, 2008, 2:12:07 AM1/22/08
to joid-dev
Using JoidConsumer.authenticate() and passing in the request parameter
map, there are casts to String as opposed to String[]. The patch
below fixes the issues. This issue may only surface in Jetty 6.1.


Index: C:/Projects/ws/joid/src/org/verisign/joid/
SimpleRegistration.java
===================================================================
--- C:/Projects/ws/joid/src/org/verisign/joid/SimpleRegistration.java
(revision 84)
+++ C:/Projects/ws/joid/src/org/verisign/joid/SimpleRegistration.java
(working copy)
@@ -13,15 +13,15 @@

package org.verisign.joid;

-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
+
+import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;

/**
* Simple registration extensions, as defined by
@@ -151,8 +151,10 @@
for (Iterator iter = set.iterator(); iter.hasNext();){
Map.Entry mapEntry = (Map.Entry) iter.next();
String key = (String) mapEntry.getKey();
- String value = (String) mapEntry.getValue();
-
+ String value = null;
+ if (null != mapEntry.getValue()) {
+ value = ((String[])mapEntry.getValue())[0];
+ }
if (key.startsWith(trigger)){
sup.put(key.substring(triggerLength), value);
}
Index: C:/Projects/ws/joid/src/org/verisign/joid/
AuthenticationResponse.java
===================================================================
--- C:/Projects/ws/joid/src/org/verisign/joid/
AuthenticationResponse.java (revision 84)
+++ C:/Projects/ws/joid/src/org/verisign/joid/
AuthenticationResponse.java (working copy)
@@ -22,8 +22,9 @@
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
+
+import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
import org.apache.tsik.datatypes.DateTime;

/**
@@ -282,8 +283,10 @@
for (Iterator iter = set.iterator(); iter.hasNext();){
Map.Entry mapEntry = (Map.Entry) iter.next();
String key = (String) mapEntry.getKey();
- String value = (String) mapEntry.getValue();
-
+ String value = null;
+ if (null != mapEntry.getValue()) {
+ value = ((String[])mapEntry.getValue())[0];
+ }
if (AuthenticationResponse.OPENID_MODE.equals(key)) {
mode = value;
} else if (AuthenticationResponse.OPENID_IDENTITY.equals(key)) {
Index: C:/Projects/ws/joid/src/org/verisign/joid/Response.java
===================================================================
--- C:/Projects/ws/joid/src/org/verisign/joid/Response.java (revision
84)
+++ C:/Projects/ws/joid/src/org/verisign/joid/Response.java (working
copy)
@@ -13,14 +13,10 @@

package org.verisign.joid;

-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
+
+import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;

/**
* Represents an OpenID response. Valid for OpenID 1.1 and 2.0
namespace.
@@ -46,8 +42,12 @@
Response(Map map)
{
if (map != null) {
- this.ns = (String) map.get(Message.OPENID_NS);
- this.error = (String) map.get(Response.OPENID_ERROR);
+ if (null != map.get(Message.OPENID_NS)) {
+ this.ns = ((String[]) map.get(Message.OPENID_NS))[0];
+ }
+ if (null != map.get(Response.OPENID_ERROR)) {
+ this.error = ((String[]) map.get(Response.OPENID_ERROR))[0];
+ }
}
}

Hans Granqvist

unread,
Jan 23, 2008, 1:48:42 PM1/23/08
to joid...@googlegroups.com
Do the maps always contain vectors now?
Is this a Jetty side-effect?
Reply all
Reply to author
Forward
0 new messages