View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.flow;
20  
21  import javax.el.ValueExpression;
22  import javax.faces.context.FacesContext;
23  import javax.faces.flow.SwitchCase;
24  
25  /**
26   *
27   * @since 2.2
28   * @author Leonardo Uribe
29   */
30  public class SwitchCaseImpl extends SwitchCase implements Freezable
31  {
32      private String _fromOutcome;
33      
34      private Boolean _condition;
35      private ValueExpression _conditionEL;
36  
37      private boolean _initialized;
38  
39      @Override
40      public String getFromOutcome()
41      {
42          return _fromOutcome;
43      }
44  
45      @Override
46      public Boolean getCondition(FacesContext context)
47      {
48          if (_conditionEL != null)
49          {
50              Object value = _conditionEL.getValue(context.getELContext());
51              if (value instanceof String)
52              {
53                  return Boolean.valueOf((String) value);
54              }
55              return (Boolean) value;
56          }
57          return _condition;
58      }
59      
60      public void freeze()
61      {
62          _initialized = true;
63      }
64      
65      private void checkInitialized() throws IllegalStateException
66      {
67          if (_initialized)
68          {
69              throw new IllegalStateException("Flow is inmutable once initialized");
70          }
71      }
72  
73      public void setFromOutcome(String fromOutcome)
74      {
75          checkInitialized();
76          this._fromOutcome = fromOutcome;
77      }
78  
79      public void setCondition(Boolean condition)
80      {
81          checkInitialized();
82          this._condition = condition;
83          this._conditionEL = null;
84      }
85  
86      public void setCondition(ValueExpression conditionEL)
87      {
88          checkInitialized();
89          this._conditionEL = conditionEL;
90          this._condition = null;
91      }
92  }