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.