1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.flow;
20
21 import javax.el.ValueExpression;
22 import javax.faces.context.FacesContext;
23 import javax.faces.flow.ReturnNode;
24
25
26
27
28
29
30 public class ReturnNodeImpl extends ReturnNode implements Freezable
31 {
32 private String _fromOutcome;
33 private ValueExpression _fromOutcomeEL;
34 private String _id;
35
36 private boolean _initialized;
37
38 public ReturnNodeImpl(String returnNodeId)
39 {
40 this._id = returnNodeId;
41 }
42
43 @Override
44 public String getFromOutcome(FacesContext context)
45 {
46 if (_fromOutcomeEL != null)
47 {
48 return (String) _fromOutcomeEL.getValue(context.getELContext());
49 }
50 return _fromOutcome;
51 }
52
53 @Override
54 public String getId()
55 {
56 return _id;
57 }
58
59 public void freeze()
60 {
61 _initialized = true;
62 }
63
64 private void checkInitialized() throws IllegalStateException
65 {
66 if (_initialized)
67 {
68 throw new IllegalStateException("Flow is inmutable once initialized");
69 }
70 }
71
72 public void setFromOutcome(String fromOutcome)
73 {
74 checkInitialized();
75 this._fromOutcome = fromOutcome;
76 this._fromOutcomeEL = null;
77 }
78
79 public void setFromOutcome(ValueExpression fromOutcome)
80 {
81 checkInitialized();
82 this._fromOutcomeEL = fromOutcome;
83 this._fromOutcome = null;
84 }
85
86 public void setId(String id)
87 {
88 checkInitialized();
89 this._id = id;
90 }
91 }