Revision 46056
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/InstanceUtils.java | ||
---|---|---|
29 | 29 |
} |
30 | 30 |
} |
31 | 31 |
Class<?> theClass = instance.getClass(); |
32 |
Method method = theClass.getMethod(methodName, parameterTypes); |
|
32 |
Method method; |
|
33 |
try { |
|
34 |
method = theClass.getMethod(methodName, parameterTypes); |
|
35 |
} catch(NoSuchMethodException ex) { |
|
36 |
// Esto es para esquivar casos como tener un ArrayList de objects y |
|
37 |
// hacer algo como arr.add(10). Dice que no hay ningun metodo add |
|
38 |
// que reciba un Integer, por que realmente el add esta declarado como |
|
39 |
// que recibe un object. |
|
40 |
// Ver TestInterpreter metodo testListAppend. |
|
41 |
for (Method m : theClass.getMethods()) { |
|
42 |
if( StringUtils.equals(m.getName(), methodName) && parameterTypes.length == m.getParameterTypes().length) { |
|
43 |
parameterTypes = m.getParameterTypes(); |
|
44 |
} |
|
45 |
} |
|
46 |
method = theClass.getMethod(methodName, parameterTypes); |
|
47 |
} |
|
33 | 48 |
Object value = method.invoke(instance, parameters); |
34 | 49 |
return value; |
35 | 50 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/test/java/org/gvsig/expresionevaluator/impl/TestInterpreter.java | ||
---|---|---|
668 | 668 |
assertEquals("SQL", v); |
669 | 669 |
} |
670 | 670 |
|
671 |
public void testListAppend() { |
|
672 |
String source = "list().add(10)"; |
|
673 |
|
|
674 |
SymbolTable symbolTable = createSymbolTable(); |
|
675 |
Compiler compiler = createCompiler(); |
|
676 |
Interpreter interpreter = createInterpreter(symbolTable); |
|
677 |
|
|
678 |
Code code = compiler.compileExpression(source); |
|
679 |
Object v = interpreter.run(code); |
|
680 |
assertEquals( true, v); |
|
681 |
} |
|
671 | 682 |
|
683 |
public void testListSet() { |
|
684 |
String source = "list(1,2,3).set(1,20)"; |
|
685 |
|
|
686 |
SymbolTable symbolTable = createSymbolTable(); |
|
687 |
Compiler compiler = createCompiler(); |
|
688 |
Interpreter interpreter = createInterpreter(symbolTable); |
|
689 |
|
|
690 |
Code code = compiler.compileExpression(source); |
|
691 |
Object v = interpreter.run(code); |
|
692 |
assertEquals( 2, v); |
|
693 |
} |
|
694 |
|
|
672 | 695 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/test/java/org/gvsig/expresionevaluator/impl/TestCompiler.java | ||
---|---|---|
555 | 555 |
assertEquals( "ARRAY[ ARRAY[ 2, 'Val', '2018' ], ARRAY[ 3, 'ali', '2018' ], ARRAY[ 5, 'Val', '2020' ], ARRAY[ 7, 'ali', '2020' ] ]", code.toString()); |
556 | 556 |
} |
557 | 557 |
|
558 |
public void testListAdd() { |
|
559 |
String source = "list().add(10)"; |
|
560 |
|
|
561 |
Compiler compiler = createCompiler(); |
|
562 |
|
|
563 |
Code code = compiler.compileExpression(source); |
|
564 |
code.link(this.createSymbolTable()); |
|
565 |
assertEquals( "list().add(10)", code.toString()); |
|
566 |
} |
|
567 |
|
|
568 |
public void testListSet() { |
|
569 |
String source = "list(1,2,3).set(1,20)"; |
|
570 |
|
|
571 |
Compiler compiler = createCompiler(); |
|
572 |
|
|
573 |
Code code = compiler.compileExpression(source); |
|
574 |
code.link(this.createSymbolTable()); |
|
575 |
assertEquals( "list(1, 2, 3).set(1, 20)", code.toString()); |
|
576 |
} |
|
577 |
|
|
558 | 578 |
} |
Also available in: Unified diff