1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.event;
21
22 import org.apache.myfaces.tobago.util.FacesELUtils;
23
24 import javax.el.MethodExpression;
25 import javax.faces.component.StateHolder;
26 import javax.faces.context.FacesContext;
27 import javax.faces.event.AbortProcessingException;
28
29 public class MethodExpressionStateChangeListener implements SheetStateChangeListener, StateHolder {
30
31 private MethodExpression methodExpression;
32
33 private boolean isTransient = false;
34
35 public MethodExpressionStateChangeListener() {
36 }
37
38 public MethodExpressionStateChangeListener(final MethodExpression methodExpression) {
39 this.methodExpression = methodExpression;
40 }
41
42 @Override
43 public void processSheetStateChange(final SheetStateChangeEvent actionEvent) throws AbortProcessingException {
44 FacesELUtils.invokeMethodExpression(FacesContext.getCurrentInstance(), methodExpression, actionEvent);
45 }
46
47 @Override
48 public void restoreState(final FacesContext context, final Object state) {
49 methodExpression = (MethodExpression) state;
50 }
51
52 @Override
53 public Object saveState(final FacesContext context) {
54 return methodExpression;
55 }
56
57 @Override
58 public void setTransient(final boolean newTransientValue) {
59 isTransient = newTransientValue;
60 }
61
62 @Override
63 public boolean isTransient() {
64 return isTransient;
65 }
66
67 }