Salve a tutti, sto cercando di scrivere un'espressione SpEL per ottenere un Set a partire da una Stringa (che verrà splittata).
Faccio questo perché devo passare dei valori filtro (stringhe) ad un bean attraverso i parametri del job. Il problema è che questo bean (che non ho scritto io e che non posso modificare) accetta solo Set<String> e attraverso i JobParameters non posso passare altro che String, Long, Date e poco altro...
Detto questo, ho fatto questo piccolo test per verificare l'espressione ma non capisco perché il risultato è sbagliato:
codice:
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("new java.util.TreeSet(T(java.util.Arrays).asList(new java.lang.String('7;9').split(';')))");
System.out.println("Value type = " + exp.getValueType());
TreeSet<String> set = (TreeSet<String>) exp.getValue();
System.out.println("SET= " + set);
for ( Object o : set )
{
System.out.println("OGGETTO = " + o);
System.out.println("CLASSE = " + o.getClass());
}
Come output mi aspetto di vedere i due valori 7 e 9, di classe String. Questo invece è quello che ottengo:
Value type = class java.util.TreeSet
SET= [[Ljava.lang.String;@4f4db0e3]
OGGETTO = [Ljava.lang.String;@4f4db0e3
CLASSE = class [Ljava.lang.String;
In pratica sembra che la chiamata a asList non venga fatta, infatti mi trovo l'array non splittato all'interno del TreeSet. Perché? Cosa sbaglio? Grazie