From 67bb0a6ef83801a26d3e3898884aa10a429f6245 Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Mon, 7 Jan 2013 23:10:24 -0500 Subject: [PATCH] CASC-196 re-add support for multi-valued attributes --- .../Cas20ServiceTicketValidator.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java index f4ffa50..99637ac 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java @@ -36,10 +36,7 @@ import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.io.StringReader; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Implementation of the TicketValidator that will validate Service Tickets in compliance with the CAS 2. @@ -226,7 +223,21 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick this.foundAttributes = false; this.currentAttribute = null; } else if (this.foundAttributes) { - this.attributes.put(currentAttribute, value.toString()); + final Object o = this.attributes.get(this.currentAttribute); + + if (o == null) { + this.attributes.put(this.currentAttribute, this.value.toString()); + } else { + final List items; + if (o instanceof List) { + items = (List) o; + } else { + items = new LinkedList(); + items.add(o); + this.attributes.put(this.currentAttribute, items); + } + items.add(this.value.toString()); + } } }