##### Coverage Report - org.apache.commons.scxml.env.jsp.RootContext

Classes in this File | Line Coverage | Branch Coverage | Complexity
RootContext |
65% |
100% |
| 2.4;2.4

1 |  |
     /*
2 |  |
      *
3 |  |
      *   Copyright 2005-2006 The Apache Software Foundation.
4 |  |
      *
5 |  |
      *  Licensed under the Apache License, Version 2.0 (the "License");
6 |  |
      *  you may not use this file except in compliance with the License.
7 |  |
      *  You may obtain a copy of the License at
8 |  |
      *
9 |  |
      *      http://www.apache.org/licenses/LICENSE-2.0
10 |  |
      *
11 |  |
      *  Unless required by applicable law or agreed to in writing, software
12 |  |
      *  distributed under the License is distributed on an "AS IS" BASIS,
13 |  |
      *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 |  |
      *  See the License for the specific language governing permissions and
15 |  |
      *  limitations under the License.
16 |  |
      *
17 |  |
      */
18 |  |
     package org.apache.commons.scxml.env.jsp;
19 |  |
20 |  |
     import javax.servlet.jsp.JspContext;
21 |  |
     import javax.servlet.jsp.el.ELException;
22 |  |
     import javax.servlet.jsp.el.VariableResolver;
23 |  |
24 |  |
     /**
25 |  |
      * EL Context for root SCXML element. Wrapper around the host JSP context.
26 |  |
      * Must treat variables in the host JSP environments as read-only.
27 |  |
      *
28 |  |
      */
29 |  |
     public final class RootContext extends ELContext {
30 |  |
31 |  |
         /** Host JSP's VariableResolver. */
32 |  |
         private VariableResolver variableResolver;
33 |  |
         /** Bark if JSP Context is null. */
34 |  |
         private static final String ERR_HOST_JSP_CTX_NULL =
35 |  |
             "Host JSP Context cannot be null";
36 |  |
37 |  |
         /**
38 |  |
          * Constructor.
39 |  |
          *
40 |  |
          * @param ctx the host JspContext
41 |  |
          */
42 |  |
         public RootContext(final JspContext ctx) {
43 | 1 |
             super();
44 | 1 |
             if (ctx == null) {
45 | 0 |
                 getLog().error(ERR_HOST_JSP_CTX_NULL);
46 | 0 |
                 throw new IllegalArgumentException(ERR_HOST_JSP_CTX_NULL);
47 |  |
             } else {
48 |  |
               // only retain the VariableResolver
49 | 1 |
               this.variableResolver = ctx.getVariableResolver();
50 |  |
             }
51 | 1 |
         }
52 |  |
53 |  |
         /**
54 |  |
          * Get the value of the given variable in this Context.
55 |  |
          *
56 |  |
          * @param name The name of the variable
57 |  |
          * @return The value (or null)
58 |  |
          * @see org.apache.commons.scxml.Context#get(java.lang.String)
59 |  |
          */
60 |  |
         public Object get(final String name) {
61 | 5 |
             Object value = super.get(name);
62 | 5 |
             if (value == null) {
63 |  |
                 try {
64 | 4 |
                     value = variableResolver.resolveVariable(name);
65 | 0 |
                 } catch (ELException ele) {
66 | 0 |
                     getLog().error(ele.getMessage(), ele);
67 | 4 |
                 }
68 |  |
             }
69 | 5 |
             return value;
70 |  |
         }
71 |  |
72 |  |
         /**
73 |  |
          * Does the given variable exist in this Context.
74 |  |
          *
75 |  |
          * @param name The name of the variable
76 |  |
          * @return boolean true if the variable exists
77 |  |
          * @see org.apache.commons.scxml.Context#has(java.lang.String)
78 |  |
          */
79 |  |
         public boolean has(final String name) {
80 | 2 |
             boolean exists = super.has(name);
81 | 2 |
             Object value = null;
82 | 2 |
             if (!exists) {
83 |  |
                 try {
84 | 2 |
                     value = variableResolver.resolveVariable(name);
85 | 0 |
                 } catch (ELException ele) {
86 | 0 |
                     getLog().error(ele.getMessage(), ele);
87 | 2 |
                 }
88 | 2 |
                 if (value != null) {
89 | 2 |
                     exists = true;
90 |  |
                 }
91 |  |
             }
92 | 2 |
             return exists;
93 |  |
         }
94 |  |
95 |  |
         /**
96 |  |
          * Get the VariableResolver associated with this root context.
97 |  |
          *
98 |  |
          * @return Returns the variableResolver.
99 |  |
          */
100 |  |
         public VariableResolver getVariableResolver() {
101 | 0 |
             return variableResolver;
102 |  |
         }
103 |  |
104 |  |
         /**
105 |  |
          * Set the VariableResolver associated with this root context.
106 |  |
          *
107 |  |
          * @param variableResolver The variableResolver to set.
108 |  |
          */
109 |  |
         public void setVariableResolver(final VariableResolver variableResolver) {
110 | 0 |
             this.variableResolver = variableResolver;
111 | 0 |
         }
112 |  |
113 |  |
     }
114 |  |