Lines 24-40
Link Here
|
24 |
import javax.servlet.jsp.el.FunctionMapper; |
24 |
import javax.servlet.jsp.el.FunctionMapper; |
25 |
import javax.servlet.jsp.el.VariableResolver; |
25 |
import javax.servlet.jsp.el.VariableResolver; |
26 |
|
26 |
|
27 |
import org.apache.commons.el.ExpressionEvaluatorImpl; |
|
|
28 |
import org.eclipse.core.resources.IProject; |
27 |
import org.eclipse.core.resources.IProject; |
29 |
import org.eclipse.core.resources.IStorage; |
28 |
import org.eclipse.core.resources.IStorage; |
30 |
import org.eclipse.core.runtime.CoreException; |
29 |
import org.eclipse.core.runtime.CoreException; |
|
|
30 |
import org.eclipse.core.runtime.IConfigurationElement; |
31 |
import org.eclipse.core.runtime.IExtension; |
32 |
import org.eclipse.core.runtime.IExtensionPoint; |
33 |
import org.eclipse.core.runtime.Platform; |
31 |
import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; |
34 |
import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; |
32 |
import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils; |
35 |
import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils; |
33 |
import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil; |
36 |
import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil; |
|
|
37 |
import org.eclipse.jst.pagedesigner.IJMTConstants; |
34 |
import org.eclipse.jst.pagedesigner.PDPlugin; |
38 |
import org.eclipse.jst.pagedesigner.PDPlugin; |
35 |
import org.eclipse.jst.pagedesigner.jsp.core.el.JSFELParserHelper; |
|
|
36 |
import org.eclipse.jst.pagedesigner.jsp.core.pagevar.IPageVariablesProvider; |
39 |
import org.eclipse.jst.pagedesigner.jsp.core.pagevar.IPageVariablesProvider; |
37 |
import org.eclipse.jst.pagedesigner.jsp.core.pagevar.IVariableInfo; |
40 |
import org.eclipse.jst.pagedesigner.jsp.core.pagevar.IVariableInfo; |
|
|
41 |
import org.w3c.dom.Element; |
38 |
|
42 |
|
39 |
/** |
43 |
/** |
40 |
* This is a static class. But it has "session" concept in it. To make it static |
44 |
* This is a static class. But it has "session" concept in it. To make it static |
Lines 124-134
Link Here
|
124 |
*/ |
128 |
*/ |
125 |
public Object evaluateExpression(String expression, Class expectedClass, |
129 |
public Object evaluateExpression(String expression, Class expectedClass, |
126 |
Map options) throws ELException { |
130 |
Map options) throws ELException { |
|
|
131 |
/* |
127 |
expression = JSFELParserHelper.toJspElExpression(expression); |
132 |
expression = JSFELParserHelper.toJspElExpression(expression); |
128 |
ExpressionEvaluatorImpl evaluator = new ExpressionEvaluatorImpl(); |
133 |
ExpressionEvaluatorImpl evaluator = new ExpressionEvaluatorImpl(); |
129 |
FunctionMapper mapper = new EmptyFunctionMapper(); |
134 |
FunctionMapper mapper = new EmptyFunctionMapper(); |
130 |
|
135 |
|
131 |
return evaluator.evaluate(expression, expectedClass, resolver, mapper); |
136 |
return evaluator.evaluate(expression, expectedClass, resolver, mapper); |
|
|
137 |
*/ |
138 |
String ret = expression; |
139 |
if (options != null) { |
140 |
Object objElement = options.get("ELEMENT"); //$NON-NLS-1$ |
141 |
if (objElement instanceof Element) { |
142 |
ret = ELValueResolver.resolve((Element)objElement, expression); |
143 |
} |
144 |
} |
145 |
return ret; |
132 |
} |
146 |
} |
133 |
|
147 |
|
134 |
class SimpleVariableResolver implements VariableResolver { |
148 |
class SimpleVariableResolver implements VariableResolver { |
Lines 202-205
Link Here
|
202 |
return null; |
216 |
return null; |
203 |
} |
217 |
} |
204 |
} |
218 |
} |
|
|
219 |
|
220 |
static class ELValueResolver { |
221 |
|
222 |
static List<IELValueResolver> elValueResolvers; |
223 |
|
224 |
public static String resolve(final Element element, final String elExpression) { |
225 |
String value = elExpression; |
226 |
if (elValueResolvers == null) { |
227 |
readELValueResolvers(); |
228 |
} |
229 |
for (IELValueResolver elValueResolver: elValueResolvers) { |
230 |
value = elValueResolver.resolve(element, value); |
231 |
} |
232 |
return value; |
233 |
} |
234 |
|
235 |
private static void readELValueResolvers() { |
236 |
elValueResolvers = new ArrayList<IELValueResolver>(); |
237 |
final IExtensionPoint pdExtPt = |
238 |
Platform.getExtensionRegistry().getExtensionPoint( |
239 |
PDPlugin.getPluginId(), IJMTConstants.EXTENSION_POINT_PAGEDESIGNER); |
240 |
final IExtension[] extensions = pdExtPt.getExtensions(); |
241 |
for (final IExtension extension: extensions) { |
242 |
final IConfigurationElement[] configElements = extension.getConfigurationElements(); |
243 |
for (final IConfigurationElement configElement: configElements) { |
244 |
if (configElement.getName().equals("elValueResolver")) { //$NON-NLS-1$ |
245 |
try { |
246 |
final Object objValueResolver = configElement.createExecutableExtension("class"); //$NON-NLS-1$ |
247 |
if (objValueResolver instanceof IELValueResolver) { |
248 |
if (configElement.getContributor().getName().startsWith("org.eclipse.jst")) { //$NON-NLS-1$ |
249 |
//add WTP-provided resolvers first, so contributor-provided resolvers get last kick of the can |
250 |
elValueResolvers.add(0, (IELValueResolver)objValueResolver); |
251 |
} else { |
252 |
elValueResolvers.add((IELValueResolver)objValueResolver); |
253 |
} |
254 |
} |
255 |
} catch(CoreException ce) { |
256 |
PDPlugin.log("Error reading extensions for: " + configElement.toString(), ce); //$NON-NLS-1$ |
257 |
} |
258 |
} |
259 |
} |
260 |
} |
261 |
} |
262 |
|
263 |
} |
264 |
|
205 |
} |
265 |
} |