Commit 6eeda76a authored by Phillip Webb's avatar Phillip Webb

Merge branch '1.3.x'

parents caaf8e96 a2f482b7
......@@ -99,7 +99,13 @@ public class UserInfoTokenServices implements ResourceServerTokenServices {
return new OAuth2Authentication(request, token);
}
private Object getPrincipal(Map<String, Object> map) {
/**
* Return the principal that should be used for the token. The default implementation
* looks for well know {@code user*} keys in the map.
* @param map the source map
* @return the principal or {@literal "unknown"}
*/
protected Object getPrincipal(Map<String, Object> map) {
for (String key : PRINCIPAL_KEYS) {
if (map.containsKey(key)) {
return map.get(key);
......
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -343,7 +343,7 @@ public class RelaxedDataBinder extends DataBinder {
return;
}
Object extend = new LinkedHashMap<String, Object>();
if (!elementDescriptor.isMap() && path.isArrayIndex(index + 1)) {
if (!elementDescriptor.isMap() && path.isArrayIndex(index)) {
extend = new ArrayList<Object>();
}
wrapper.setPropertyValue(path.prefix(index + 1), extend);
......
......@@ -643,6 +643,16 @@ public class RelaxedDataBinderTests {
assertThat(target.getFooBaz()).isEqualTo("boo");
}
@Test
public void testIndexBounds() throws Exception {
VanillaTarget target = new VanillaTarget();
RelaxedDataBinder binder = getBinder(target, "test");
MutablePropertyValues values = new MutablePropertyValues();
values.add("test.objects[0]", "teststring");
binder.bind(values);
assertThat(target.getObjects()).containsExactly("teststring");
}
private void doTestBindCaseInsensitiveEnums(VanillaTarget target) throws Exception {
BindingResult result = bind(target, "bingo: THIS");
assertThat(result.getErrorCount()).isEqualTo(0);
......@@ -1001,6 +1011,8 @@ public class RelaxedDataBinderTests {
private List<Bingo> bingos;
private List<Object> objects;
public char[] getBar() {
return this.bar;
}
......@@ -1056,6 +1068,15 @@ public class RelaxedDataBinderTests {
public void setBingos(List<Bingo> bingos) {
this.bingos = bingos;
}
public List<Object> getObjects() {
return this.objects;
}
public void setObjects(List<Object> objects) {
this.objects = objects;
}
}
enum Bingo {
......@@ -1076,4 +1097,5 @@ public class RelaxedDataBinderTests {
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment