1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.view.facelets.el;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import javax.el.ValueExpression;
25 import javax.el.VariableMapper;
26
27 import org.apache.myfaces.view.facelets.PageContext;
28 import org.apache.myfaces.view.facelets.TemplateContext;
29
30
31
32
33
34
35
36
37
38
39
40 public final class DefaultVariableMapper extends VariableMapperBase
41 {
42 private Map<String, ValueExpression> _vars;
43
44 private PageContext _pageContext;
45
46 private TemplateContext _templateContext;
47
48 private VariableMapper _delegate;
49
50 public boolean _trackResolveVariables;
51
52 public boolean _variableResolved;
53
54 public DefaultVariableMapper()
55 {
56 super();
57 _trackResolveVariables = false;
58 _variableResolved = false;
59 }
60
61 public DefaultVariableMapper(VariableMapper delegate)
62 {
63 super();
64 this._delegate = delegate;
65 }
66
67
68
69
70 public ValueExpression resolveVariable(String name)
71 {
72 ValueExpression returnValue = null;
73
74 if (_vars != null)
75 {
76 returnValue = _vars.get(name);
77 }
78
79
80 if (returnValue == null)
81 {
82
83 if (_pageContext != null && _pageContext.getAttributeCount() > 0)
84 {
85 if (_pageContext.getAttributes().containsKey(name))
86 {
87 returnValue = _pageContext.getAttributes().get(name);
88 if (_trackResolveVariables)
89 {
90 _variableResolved = true;
91 }
92 return returnValue;
93 }
94 }
95
96 if (_templateContext != null && !_templateContext.isParameterEmpty())
97 {
98 if (_templateContext.getParameterMap().containsKey(name))
99 {
100 returnValue = _templateContext.getParameter(name);
101 if (_trackResolveVariables)
102 {
103 _variableResolved = true;
104 }
105 return returnValue;
106 }
107 }
108
109 if (_delegate != null)
110 {
111 returnValue = _delegate.resolveVariable(name);
112 }
113 }
114 else if (_trackResolveVariables)
115 {
116
117
118 _variableResolved = true;
119 }
120
121 return returnValue;
122 }
123
124
125
126
127 public ValueExpression setVariable(String name, ValueExpression expression)
128 {
129 if (_vars == null)
130 {
131 _vars = new HashMap<String, ValueExpression>();
132 }
133
134 return _vars.put(name, expression);
135 }
136
137
138
139
140
141
142 public void setPageContext(PageContext pageContext)
143 {
144 this._pageContext = pageContext;
145 }
146
147
148
149
150
151
152 public void setTemplateContext(TemplateContext templateContext)
153 {
154 this._templateContext = templateContext;
155 }
156
157 @Override
158 public boolean isAnyFaceletsVariableResolved()
159 {
160 if (_trackResolveVariables)
161 {
162 return _variableResolved;
163 }
164 else
165 {
166
167 return true;
168 }
169 }
170
171 @Override
172 public void beforeConstructELExpression()
173 {
174 _trackResolveVariables = true;
175 _variableResolved = false;
176 }
177
178 @Override
179 public void afterConstructELExpression()
180 {
181 _trackResolveVariables = false;
182 _variableResolved = false;
183 }
184 }