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 ASTSelectFirst
34 extends SimpleNode
35 {
36 public ASTSelectFirst( int id )
37 {
38 super( id );
39 }
40
41 public ASTSelectFirst( OgnlParser p, int id )
42 {
43 super( p, id );
44 }
45
46 protected Object getValueBody( OgnlContext context, Object source )
47 throws OgnlException
48 {
49 Node expr = children[0];
50 List answer = new ArrayList();
51 ElementsAccessor elementsAccessor = OgnlRuntime.getElementsAccessor( OgnlRuntime.getTargetClass( source ) );
52
53 for ( Enumeration e = elementsAccessor.getElements( source ); e.hasMoreElements(); )
54 {
55 Object next = e.nextElement();
56
57 if ( OgnlOps.booleanValue( expr.getValue( context, next ) ) )
58 {
59 answer.add( next );
60 break;
61 }
62 }
63 return answer;
64 }
65
66 public String toGetSourceString( OgnlContext context, Object target )
67 {
68 throw new UnsupportedCompilationException( "Eval expressions not supported as native java yet." );
69 }
70
71 public String toSetSourceString( OgnlContext context, Object target )
72 {
73 throw new UnsupportedCompilationException( "Eval expressions not supported as native java yet." );
74 }
75
76 public <R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
77 throws OgnlException
78 {
79 return visitor.visit( this, data );
80 }
81 }