From 4a36b023a6bd2c895fafd9927e16f2582610b451 Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Sat, 20 Nov 2010 06:05:40 +0000 Subject: [PATCH] CASC-134 change to get Attributes instead of just getAttribute in case there are multiple values. --- .../java/org/jasig/cas/client/util/XmlUtils.java | 4 ++-- .../validation/Cas20ServiceTicketValidator.java | 8 +++++++- .../client/validation/Saml11TicketValidator.java | 15 ++++++--------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java index b4d1c8f..e7bd7ea 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java @@ -77,7 +77,7 @@ public final class XmlUtils { private boolean foundElement = false; - private StringBuffer buffer = new StringBuffer(); + private StringBuilder buffer = new StringBuilder(); public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) @@ -92,7 +92,7 @@ public final class XmlUtils { if (localName.equals(element)) { this.foundElement = false; elements.add(this.buffer.toString()); - this.buffer = new StringBuffer(); + this.buffer = new StringBuilder(); } } 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 dc2804f..987091e 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 @@ -152,7 +152,13 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick } for (final String name : attributeNames) { - attributes.put(name, XmlUtils.getTextForElement(xml, name)); + final List values = XmlUtils.getTextForElements(xml, name); + + if (values.size() == 1) { + attributes.put(name, values.get(0)); + } else { + attributes.put(name, values); + } } return attributes; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java index dca512f..2c5ad87 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java @@ -97,8 +97,7 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator final SAMLAttribute[] attributes = getAttributesFor(assertion, subject); final Map personAttributes = new HashMap(); - for (int i = 0; i < attributes.length; i++) { - final SAMLAttribute samlAttribute = attributes[i]; + for (final SAMLAttribute samlAttribute : attributes) { final List values = getValuesFrom(samlAttribute); personAttributes.put(samlAttribute.getName(), values.size() == 1 ? values.get(0) : values); @@ -212,16 +211,14 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator out.close(); final BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); - final StringBuffer buffer = new StringBuffer(256); + final StringBuilder buffer = new StringBuilder(256); - synchronized (buffer) { - String line; + String line; - while ((line = in.readLine()) != null) { - buffer.append(line); - } - return buffer.toString(); + while ((line = in.readLine()) != null) { + buffer.append(line); } + return buffer.toString(); } catch (final IOException e) { throw new RuntimeException(e); } finally {