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
23
24
25
26
27 public class ASTInstanceof
28 extends SimpleNode
29 implements NodeType
30 {
31 private String targetType;
32
33 public ASTInstanceof( int id )
34 {
35 super( id );
36 }
37
38 public ASTInstanceof( OgnlParser p, int id )
39 {
40 super( p, id );
41 }
42
43 void setTargetType( String targetType )
44 {
45 this.targetType = targetType;
46 }
47
48 String getTargetType()
49 {
50 return targetType;
51 }
52
53 protected Object getValueBody( OgnlContext context, Object source )
54 throws OgnlException
55 {
56 Object value = children[0].getValue( context, source );
57 return OgnlRuntime.isInstance( context, value, targetType ) ? Boolean.TRUE : Boolean.FALSE;
58 }
59
60 public Class getGetterClass()
61 {
62 return boolean.class;
63 }
64
65 public Class getSetterClass()
66 {
67 return null;
68 }
69
70 public String toGetSourceString( OgnlContext context, Object target )
71 {
72 try
73 {
74
75 String ret = "";
76
77 if ( ASTConst.class.isInstance( children[0] ) )
78 {
79 ret = ( (Boolean) getValueBody( context, target ) ).toString();
80 }
81 else
82 {
83 ret = children[0].toGetSourceString( context, target ) + " instanceof " + targetType;
84 }
85 context.setCurrentType( Boolean.TYPE );
86
87 return ret;
88
89 }
90 catch ( Throwable t )
91 {
92 throw OgnlOps.castToRuntime( t );
93 }
94 }
95
96 public String toSetSourceString( OgnlContext context, Object target )
97 {
98 return toGetSourceString( context, target );
99 }
100
101 public <R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
102 throws OgnlException
103 {
104 return visitor.visit( this, data );
105 }
106 }