1 package org.apache.commons.ognl;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.ognl.enhance.UnsupportedCompilationException;
23
24 import java.util.ArrayList;
25 import java.util.Enumeration;
26 import java.util.List;
27
28
29
30
31
32
33 class ASTSelect
34 extends SimpleNode
35 {
36
37 public ASTSelect( int id )
38 {
39 super( id );
40 }
41
42 public ASTSelect( OgnlParser p, int id )
43 {
44 super( p, id );
45 }
46
47 protected Object getValueBody( OgnlContext context, Object source )
48 throws OgnlException
49 {
50 Node expr = children[0];
51 List answer = new ArrayList();
52
53 ElementsAccessor elementsAccessor = OgnlRuntime.getElementsAccessor( OgnlRuntime.getTargetClass( source ) );
54
55 for ( Enumeration e = elementsAccessor.getElements( source ); e.hasMoreElements(); )
56 {
57 Object next = e.nextElement();
58
59 if ( OgnlOps.booleanValue( expr.getValue( context, next ) ) )
60 {
61 answer.add( next );
62 }
63 }
64
65 return answer;
66 }
67
68 public String toGetSourceString( OgnlContext context, Object target )
69 {
70 throw new UnsupportedCompilationException( "Eval expressions not supported as native java yet." );
71 }
72
73 public String toSetSourceString( OgnlContext context, Object target )
74 {
75 throw new UnsupportedCompilationException( "Eval expressions not supported as native java yet." );
76 }
77
78 public <R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
79 throws OgnlException
80 {
81 return visitor.visit( this, data );
82 }
83 }