Coverage report

| %line | %branch
--- | --- | ---
org.apache.commons.jelly.expression.ExpressionSupport |
67% |
90% |

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 |  |
     package org.apache.commons.jelly.expression;
17 |  |
18 |  |
     import java.util.Collections;
19 |  |
     import java.util.Collection;
20 |  |
     import java.util.Enumeration;
21 |  |
     import java.util.Iterator;
22 |  |
     import java.util.List;
23 |  |
     import java.util.Map;
24 |  |
25 |  |
     import org.apache.commons.collections.iterators.ArrayIterator;
26 |  |
     import org.apache.commons.collections.iterators.EnumerationIterator;
27 |  |
     import org.apache.commons.collections.iterators.SingletonIterator;
28 |  |
29 |  |
     import org.apache.commons.jelly.JellyContext;
30 |  |
     import org.apache.commons.lang.StringUtils;
31 |  |
32 |  |
     /** <p><code>ExpressionSupport</code>
33 |  |
       * an abstract base class for Expression implementations
34 |  |
       * which provides default implementations of some of the
35 |  |
       * typesafe evaluation methods.</p>
36 |  |
       *
37 |  |
       * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
38 |  |
       * @version $Revision: 155420 $
39 |  |
       */
40 | 63258 |
     public abstract class ExpressionSupport implements Expression {
41 |  |
42 | 299 |
         protected static final Iterator EMPTY_ITERATOR = Collections.EMPTY_LIST.iterator();
43 |  |
44 |  |
         // inherit javadoc from interface
45 |  |
         public String evaluateAsString(JellyContext context) {
46 | 3055 |
             Object value = evaluateRecurse(context);
47 |  |
             // sometimes when Jelly is used inside Maven the value
48 |  |
             // of an expression can actually be an expression.
49 |  |
             // e.g. ${foo.bar} can lookup "foo.bar" in a Maven context
50 |  |
             // which could actually be an expression
51 |  |
52 | 3055 |
             if ( value != null ) {
53 | 3029 |
                 return value.toString();
54 |  |
             }
55 | 26 |
             return null;
56 |  |
         }
57 |  |
58 |  |
59 |  |
         // inherit javadoc from interface
60 |  |
         public Object evaluateRecurse(JellyContext context) {
61 | 15197 |
             Object value = evaluate(context);
62 | 15197 |
             if (value instanceof Expression) {
63 | 0 |
                 Expression expression = (Expression) value;
64 | 0 |
                 return expression.evaluateRecurse(context);
65 |  |
             }
66 | 15197 |
             return value;
67 |  |
         }
68 |  |
69 |  |
         // inherit javadoc from interface
70 |  |
         public boolean evaluateAsBoolean(JellyContext context) {
71 | 4589 |
             Object value = evaluateRecurse(context);
72 | 4589 |
             if ( value instanceof Boolean ) {
73 | 2496 |
                 Boolean b = (Boolean) value;
74 | 2496 |
                 return b.booleanValue();
75 |  |
             }
76 | 2093 |
             else if ( value instanceof String ) {
77 |  |
                 // return Boolean.getBoolean( (String) value );
78 | 0 |
                 String str = (String) value;
79 |  |
80 | 0 |
                 return ( str.equalsIgnoreCase( "on" )
81 |  |
                      ||
82 |  |
                      str.equalsIgnoreCase( "yes" )
83 |  |
                      ||
84 |  |
                      str.equals( "1" )
85 |  |
                      ||
86 |  |
                      str.equalsIgnoreCase( "true" ) );
87 |  |
88 |  |
             }
89 | 2093 |
             return false;
90 |  |
         }
91 |  |
92 |  |
         // inherit javadoc from interface
93 |  |
         public Iterator evaluateAsIterator(JellyContext context) {
94 | 52 |
             Object value = evaluateRecurse(context);
95 | 52 |
             if ( value == null ) {
96 | 0 |
                 return EMPTY_ITERATOR;
97 | 52 |
             } else if ( value instanceof Iterator ) {
98 | 0 |
                 return (Iterator) value;
99 | 52 |
             } else if ( value instanceof List ) {
100 | 0 |
                 List list = (List) value;
101 | 0 |
                 return list.iterator();
102 | 52 |
             } else if ( value instanceof Map ) {
103 | 0 |
                 Map map = (Map) value;
104 | 0 |
                 return map.entrySet().iterator();
105 | 52 |
             } else if ( value.getClass().isArray() ) {
106 | 26 |
                 return new ArrayIterator( value );
107 | 26 |
             } else if ( value instanceof Enumeration ) {
108 | 0 |
                 return new EnumerationIterator((Enumeration ) value);
109 | 26 |
             } else if ( value instanceof Collection ) {
110 | 0 |
               Collection collection = (Collection) value;
111 | 0 |
               return collection.iterator();
112 | 26 |
             } else if ( value instanceof String ) {
113 | 26 |
                String[] array = StringUtils.split((String) value, "," );
114 | 26 |
                array = StringUtils.stripAll( array );
115 | 26 |
                return new ArrayIterator( array );
116 |  |
             } else {
117 |  |
                 // XXX: should we return single iterator?
118 | 0 |
                 return new SingletonIterator( value );
119 |  |
             }
120 |  |
         }
121 |  |
     }

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