Coverage report

  %line %branch
org.apache.commons.jelly.expression.jexl.JellyJexlContext
57% 
100% 

 1  
 /*
 2  
  * Copyright 2002,2004 The Apache Software Foundation.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *      http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package org.apache.commons.jelly.expression.jexl;
 18  
 
 19  
 import java.util.Map;
 20  
 import java.util.Set;
 21  
 import java.util.Collection;
 22  
 
 23  
 import org.apache.commons.jelly.JellyContext;
 24  
 import org.apache.commons.jelly.expression.ExpressionSupport;
 25  
 
 26  
 import org.apache.commons.jexl.Expression;
 27  
 import org.apache.commons.jexl.JexlContext;
 28  
 
 29  
 import org.apache.commons.logging.Log;
 30  
 import org.apache.commons.logging.LogFactory;
 31  
 
 32  
 /**
 33  
  * Represents a <a href="http://jakarta.apache.org/commons/jexl.html">Jexl</a>
 34  
  * expression which fully supports the Expression Language in JSTL and JSP
 35  
  * along with some extra features like object method invocation.
 36  
  *
 37  
  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
 38  
  * @version $Revision: 155420 $
 39  
  */
 40  
 
 41  
 public class JexlExpression extends ExpressionSupport {
 42  
 
 43  
     /** The Log to which logging calls will be made. */
 44  
     private static final Log log = LogFactory.getLog(JexlExpression.class);
 45  
 
 46  
     /** The Jexl expression object */
 47  
     private Expression expression;
 48  
 
 49  
     public JexlExpression(Expression expression) {
 50  
         this.expression = expression;
 51  
     }
 52  
 
 53  
     public String toString() {
 54  
         return super.toString() + "[" + expression.getExpression() + "]";
 55  
     }
 56  
 
 57  
     // Expression interface
 58  
     //-------------------------------------------------------------------------
 59  
     public String getExpressionText() {
 60  
         return "${" + expression.getExpression() + "}";
 61  
     }
 62  
 
 63  
     public Object evaluate(JellyContext context) {
 64  
         try {
 65  
             JexlContext jexlContext = new JellyJexlContext( context );
 66  
             if (log.isDebugEnabled()) {
 67  
                 log.debug("Evaluating EL: " + expression.getExpression());
 68  
             }
 69  
             Object value = expression.evaluate(jexlContext);
 70  
 
 71  
             if (log.isDebugEnabled()) {
 72  
                 log.debug("value of expression: " + value);
 73  
             }
 74  
 
 75  
             return value;
 76  
         }
 77  
         catch (Exception e) {
 78  
             log.warn("Caught exception evaluating: " + expression + ". Reason: " + e, e);
 79  
             return null;
 80  
         }
 81  
     }
 82  
 }
 83  
 
 84  
 class JellyJexlContext implements JexlContext {
 85  
 
 86  
     private Map vars;
 87  
 
 88  9607
     JellyJexlContext(JellyContext context) {
 89  9607
         this.vars = new JellyMap( context );
 90  9607
     }
 91  
 
 92  
     public void setVars(Map vars) {
 93  0
         this.vars.clear();
 94  0
         this.vars.putAll( vars );
 95  0
     }
 96  
 
 97  
     public Map getVars() {
 98  13156
         return this.vars;
 99  
     }
 100  
 }
 101  
 
 102  
 
 103  
 class JellyMap implements Map {
 104  
 
 105  
     private JellyContext context;
 106  
 
 107  
     JellyMap(JellyContext context) {
 108  
         this.context = context;
 109  
     }
 110  
 
 111  
     public Object get(Object key) {
 112  
         return context.getVariable( (String) key );
 113  
     }
 114  
 
 115  
     public void clear() {
 116  
         // not implemented
 117  
     }
 118  
 
 119  
     public boolean containsKey(Object key) {
 120  
         return ( get( key ) != null );
 121  
     }
 122  
 
 123  
     public boolean containsValue(Object value) {
 124  
         return false;
 125  
     }
 126  
 
 127  
     public Set entrySet() {
 128  
         return null;
 129  
     }
 130  
 
 131  
     public boolean isEmpty() {
 132  
         return false;
 133  
     }
 134  
 
 135  
     public Set keySet() {
 136  
         return null;
 137  
     }
 138  
 
 139  
     public Object put(Object key, Object value) {
 140  
         return null;
 141  
     }
 142  
 
 143  
     public void putAll(Map t) {
 144  
         // not implemented
 145  
     }
 146  
 
 147  
     public Object remove(Object key) {
 148  
         return null;
 149  
     }
 150  
 
 151  
     public int size() {
 152  
         return -1;
 153  
     }
 154  
 
 155  
     public Collection values() {
 156  
         return null;
 157  
     }
 158  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.