Restored proper handling of varargs in case of unresolvable type variable
Fixed through falling back to the raw parameter type in the TypeDescriptor(MethodParameter) constructor, properly detecting the vararg array even in case of an unresolvable type variable, and through restoring getElementTypeDescriptor's original behavior for arrays, i.e. always returning a non-null descriptor.
Issue: SPR-11494
@ -631,8 +631,8 @@ public final class ResolvableType implements Serializable {
@@ -631,8 +631,8 @@ public final class ResolvableType implements Serializable {
@ -151,6 +150,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -151,6 +150,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassSpr5899Class{
publicSpr5899Class(){
@ -276,7 +276,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -276,7 +276,6 @@ public class SpelReproTests extends AbstractExpressionTests {
publicPropertiesjdbcProperties=newProperties();
publicPropertiesfoo=newProperties();
TestProperties(){
jdbcProperties.put("username","Dave");
jdbcProperties.put("alias","Dave2");
@ -285,6 +284,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -285,6 +284,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassMapAccessorimplementsPropertyAccessor{
@Override
@ -304,8 +304,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -304,8 +304,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -326,15 +325,13 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -326,15 +325,13 @@ public class SpelReproTests extends AbstractExpressionTests {
checkTemplateParsingError("abc${ {}( 'abc'","Missing closing ')' for '(' at position 8");
checkTemplateParsingError("abc${ {}[ 'abc'","Missing closing ']' for '[' at position 8");
checkTemplateParsingError("abc${ {}{ 'abc'","Missing closing '}' for '{' at position 8");
checkTemplateParsingError("abc${ ( 'abc' }",
"Found closing '}' at position 14 but most recent opening is '(' at position 6");
checkTemplateParsingError("abc${ ( 'abc' }","Found closing '}' at position 14 but most recent opening is '(' at position 6");
checkTemplateParsingError("abc${ '... }","Found non terminating string literal starting at position 6");
checkTemplateParsingError("abc${ \"... }","Found non terminating string literal starting at position 6");
checkTemplateParsingError("abc${ ) }","Found closing ')' at position 6 without an opening '('");
checkTemplateParsingError("abc${ ] }","Found closing ']' at position 6 without an opening '['");
checkTemplateParsingError("abc${ } }","No expression defined within delimiter '${}' at character 3");
@ -343,19 +340,13 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -343,19 +340,13 @@ public class SpelReproTests extends AbstractExpressionTests {
checkTemplateParsing("Hello ${'}'}]","Hello }]");
checkTemplateParsing("Hello ${'}'}","Hello }");
checkTemplateParsingError("Hello ${ ( ","No ending suffix '}' for expression starting at character 6: ${ ( ");
checkTemplateParsingError("Hello ${ ( }",
"Found closing '}' at position 11 but most recent opening is '(' at position 9");
checkTemplateParsing("#{'Unable to render embedded object: File ({#this == 2}'}",hashes,
"Unable to render embedded object: File ({#this == 2}");
checkTemplateParsing("This is the last odd number in the list: ${listOfNumbersUpToTen.$[#this%2==1]}",dollars,
"This is the last odd number in the list: 9");
checkTemplateParsingError("Hello ${ ( }","Found closing '}' at position 11 but most recent opening is '(' at position 9");
checkTemplateParsing("#{'Unable to render embedded object: File ({#this == 2}'}",hashes,"Unable to render embedded object: File ({#this == 2}");
checkTemplateParsing("This is the last odd number in the list: ${listOfNumbersUpToTen.$[#this%2==1]}",dollars,"This is the last odd number in the list: 9");
checkTemplateParsing("Hello ${'here is a curly bracket }'}",dollars,"Hello here is a curly bracket }");
checkTemplateParsing("He${'${'}llo ${'here is a curly bracket }'}}",dollars,
checkTemplateParsing("Hello ${'inner literal that''s got {[(])]}an escaped quote in it'} World","Hello inner literal that's got {[(])]}an escaped quote in it World");
checkTemplateParsingError("Hello ${","No ending suffix '}' for expression starting at character 6: ${");
}
@ -384,11 +375,8 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -384,11 +375,8 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -398,11 +386,11 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -398,11 +386,11 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -412,6 +400,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -412,6 +400,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassResource{
publicStringgetServer(){
@ -500,8 +489,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -500,8 +489,7 @@ public class SpelReproTests extends AbstractExpressionTests {
// will access the field 'wibble' and not use a getter
name=expr.getValue(eContext,String.class);
assertEquals("wobble",name);
name=expr.getValue(eContext,String.class);// will be using the cached accessor
// this time
name=expr.getValue(eContext,String.class);// will be using the cached accessor this time
assertEquals("wobble",name);
}
@ -519,8 +507,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -519,8 +507,7 @@ public class SpelReproTests extends AbstractExpressionTests {
// will access the field 'wibble' and not use a getter
expr.getValue(eContext,String.class);
assertEquals("world",g.wibble);
expr.getValue(eContext,String.class);// will be using the cached accessor this
// time
expr.getValue(eContext,String.class);// will be using the cached accessor this time
assertEquals("world",g.wibble);
}
@ -533,8 +520,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -533,8 +520,7 @@ public class SpelReproTests extends AbstractExpressionTests {
expr.getValue(eContext,String.class);// will be using the cached accessor this
// time
expr.getValue(eContext,String.class);// will be using the cached accessor this time
assertEquals("world",g.value);
}
@ -563,7 +549,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -563,7 +549,6 @@ public class SpelReproTests extends AbstractExpressionTests {
publicStringfloo="bar";
publicXX(){
m=newHashMap<String,String>();
m.put("$foo","wibble");
@ -571,6 +556,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -571,6 +556,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassGoo{
publicstaticGooinstance=newGoo();
@ -581,7 +567,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -581,7 +567,6 @@ public class SpelReproTests extends AbstractExpressionTests {
publicStringwibble="wobble";
publicStringgetKey(){
return"hello";
}
@ -591,6 +576,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -591,6 +576,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -610,12 +596,10 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -610,12 +596,10 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -635,17 +619,14 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -635,17 +619,14 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -660,11 +641,11 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -660,11 +641,11 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassMessage{
privateStringpayload;
publicStringgetPayload(){
returnpayload;
}
@ -711,7 +692,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -711,7 +692,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -864,7 +845,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -864,7 +845,6 @@ public class SpelReproTests extends AbstractExpressionTests {
publicString[]as;
publicMap<String,String>ms;
C(){
ls=newArrayList<String>();
ls.add("abc");
@ -876,11 +856,11 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -876,11 +856,11 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassD{
publicStringa;
privateD(Strings){
a=s;
}
@ -932,11 +912,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -932,11 +912,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@SuppressWarnings("unused")
classConversionPriority1{
publicintgetX(Numberi){
return20;
}
publicintgetX(inti){
return10;
}
@ -944,11 +922,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -944,11 +922,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@SuppressWarnings("unused")
classConversionPriority2{
publicintgetX(inti){
return10;
}
publicintgetX(Numberi){
return20;
}
@ -989,27 +965,22 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -989,27 +965,22 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1130,12 +1101,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1130,12 +1101,9 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1144,7 +1112,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1144,7 +1112,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1215,7 +1182,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1215,7 +1182,6 @@ public class SpelReproTests extends AbstractExpressionTests {
privateStringmapName;
publicTestPropertyAccessor(StringmapName){
this.mapName=mapName;
}
@ -1252,12 +1218,12 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1252,12 +1218,12 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1265,7 +1231,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1265,7 +1231,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1310,7 +1275,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1310,7 +1275,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1360,10 +1324,10 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1360,10 +1324,10 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1372,7 +1336,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1372,7 +1336,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
classSPR_9486_FunctionsClass{
classSPR9486_FunctionsClass{
publicintabs(intvalue){
returnMath.abs(value);
@ -1385,7 +1349,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1385,7 +1349,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1395,7 +1359,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1395,7 +1359,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1405,7 +1369,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1405,7 +1369,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1415,7 +1379,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1415,7 +1379,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1425,7 +1389,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1425,7 +1389,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1435,7 +1399,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1435,7 +1399,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1445,7 +1409,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1445,7 +1409,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1455,7 +1419,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1455,7 +1419,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1465,7 +1429,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1465,7 +1429,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1475,7 +1439,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1475,7 +1439,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1485,7 +1449,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1485,7 +1449,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1495,7 +1459,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1495,7 +1459,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1505,7 +1469,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1505,7 +1469,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1515,7 +1479,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1515,7 +1479,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1525,7 +1489,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1525,7 +1489,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1535,7 +1499,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1535,7 +1499,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1545,7 +1509,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1545,7 +1509,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1555,7 +1519,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1555,7 +1519,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1565,7 +1529,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1565,7 +1529,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1575,7 +1539,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1575,7 +1539,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1585,7 +1549,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1585,7 +1549,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1595,7 +1559,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1595,7 +1559,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1605,7 +1569,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1605,7 +1569,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1615,7 +1579,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1615,7 +1579,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1625,7 +1589,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1625,7 +1589,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1635,7 +1599,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1635,7 +1599,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1645,7 +1609,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1645,7 +1609,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1654,7 +1618,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1654,7 +1618,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1663,7 +1627,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1663,7 +1627,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1671,7 +1635,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1671,7 +1635,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1679,7 +1643,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1679,7 +1643,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1687,7 +1651,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1687,7 +1651,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1695,7 +1659,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1695,7 +1659,7 @@ public class SpelReproTests extends AbstractExpressionTests {
doTestSpr10146("/foo","EL1070E:(pos 0): Problem parsing left operand");
doTestSpr10146("*foo","EL1070E:(pos 0): Problem parsing left operand");
doTestSpr10146("%foo","EL1070E:(pos 0): Problem parsing left operand");
@ -1714,18 +1678,18 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1714,18 +1678,18 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1733,7 +1697,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1733,7 +1697,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
@Test
publicvoidSPR_10328()throwsException{
publicvoidSPR10328()throwsException{
thrown.expect(SpelParseException.class);
thrown.expectMessage("EL1071E:(pos 2): A required selection expression has not been specified");
Expressionexp=parser.parseExpression("$[]");
@ -1741,7 +1705,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1741,7 +1705,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1766,7 +1730,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1766,7 +1730,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1782,20 +1746,17 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1782,20 +1746,17 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1813,7 +1774,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1813,7 +1774,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1824,7 +1785,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1824,7 +1785,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1835,7 +1796,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1835,7 +1796,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1848,7 +1809,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1848,7 +1809,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
@Test
publicvoidSPR_11348(){
publicvoidSPR11348(){
Collection<String>coll=newHashSet<String>();
coll.add("one");
coll.add("two");
@ -1864,14 +1825,18 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1864,14 +1825,18 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1879,7 +1844,6 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1879,7 +1844,6 @@ public class SpelReproTests extends AbstractExpressionTests {
privatebooleanprimitiveProperty=true;
publicBooleanisSimpleProperty(){
returnsimpleProperty;
}
@ -1897,11 +1861,13 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1897,11 +1861,13 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1910,6 +1876,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1910,6 +1876,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassPackagePrivateClassWithGetter{
publicIntegergetProperty(){
@ -1917,28 +1884,33 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1917,28 +1884,33 @@ public class SpelReproTests extends AbstractExpressionTests {
@ -1948,6 +1920,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1948,6 +1920,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
}
staticclassSPR11142{
publicStringisSomething(){
@ -1955,6 +1928,7 @@ public class SpelReproTests extends AbstractExpressionTests {
@@ -1955,6 +1928,7 @@ public class SpelReproTests extends AbstractExpressionTests {