1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.orchestra.viewController.jsf;
20
21 import javax.faces.context.FacesContext;
22 import javax.faces.el.EvaluationException;
23 import javax.faces.el.VariableResolver;
24
25 import org.apache.myfaces.orchestra.viewController.DefaultViewControllerManager;
26 import org.apache.myfaces.orchestra.viewController.ViewControllerManager;
27
28
29
30
31
32 public class ViewControllerVariableResolver extends VariableResolver
33 {
34 private final static String VIEW_CONTROLLER_VARIABLE = "oxViewController";
35 private final static ViewControllerManager DEFAULT_VCM = new DefaultViewControllerManager();
36
37 private final VariableResolver original;
38
39 public ViewControllerVariableResolver(VariableResolver original)
40 {
41 this.original = original;
42 }
43
44 public Object resolveVariable(FacesContext facesContext, String variableName) throws EvaluationException
45 {
46 if (VIEW_CONTROLLER_VARIABLE.equals(variableName))
47 {
48 ViewControllerManager manager = getViewControllerManager(facesContext);
49 return manager.getViewController(facesContext.getViewRoot().getViewId());
50 }
51
52 return original.resolveVariable(facesContext, variableName);
53 }
54
55 static ViewControllerManager getViewControllerManager(FacesContext context)
56 {
57 ViewControllerManager manager = (ViewControllerManager) context.getApplication()
58 .getVariableResolver().resolveVariable(
59 context, ViewControllerManager.VIEW_CONTROLLER_MANAGER_NAME);
60 if (manager != null)
61 {
62 return manager;
63 }
64
65 return DEFAULT_VCM;
66 }
67 }