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 ASTProject
34 extends SimpleNode
35 {
36
37 public ASTProject( int id )
38 {
39 super( id );
40 }
41
42 public ASTProject( 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
58 answer.add( expr.getValue( context, e.nextElement() ) );
59 }
60
61 return answer;
62 }
63
64 public String toGetSourceString( OgnlContext context, Object target )
65 {
66 throw new UnsupportedCompilationException( "Projection expressions not supported as native java yet." );
67 }
68
69 public String toSetSourceString( OgnlContext context, Object target )
70 {
71 throw new UnsupportedCompilationException( "Projection expressions not supported as native java yet." );
72 }
73
74 public <R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
75 throws OgnlException
76 {
77 return visitor.visit( this, data );
78 }
79 }