Coverage report

| %line | %branch
--- | --- | ---

org.apache.commons.jelly.expression.xpath.XPathExpression

0%

0%

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.xpath;

17

18

     import java.util.Hashtable;

19

     import java.util.Iterator;

20

     import java.util.Map;

21

22

     import org.apache.commons.jelly.JellyContext;

23

     import org.apache.commons.jelly.expression.Expression;

24

     import org.apache.commons.jelly.expression.ExpressionSupport;

25

     import org.apache.commons.jelly.impl.TagScript;

26

     import org.apache.commons.logging.Log;

27

     import org.apache.commons.logging.LogFactory;

28

     import org.jaxen.SimpleNamespaceContext;

29

     import org.jaxen.VariableContext;

30

     import org.jaxen.XPath;

31

     import org.jaxen.JaxenException;

32

     import org.jaxen.dom4j.Dom4jXPath;

33

34

     /** An expression which returns an XPath object.

35

       *

36

       * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>

37

       * @version $Revision: 155420 $

38

       */

39

     public class XPathExpression extends ExpressionSupport implements VariableContext {

40

41

         /** The Log to which logging calls will be made. */

42

0

         private Log log = LogFactory.getLog(XPathExpression.class);

43

44

         private String text;

45

         private Expression xpathExpr;

46

         private JellyContext context;

47

         private Map uris;

48

49

0

         public XPathExpression() {

50

0

         }

51

52

         public XPathExpression(String text,

53

                                Expression xpathExpr,

54

0

                                TagScript tagScript) {

55

0

             this.text = text;

56

0

             this.xpathExpr = xpathExpr;

57

58

0

             Map namespaceContext = tagScript.getNamespaceContext();

59

60

0

             this.uris = createUriMap(namespaceContext);

61

0

         }

62

63

         public String toString() {

64

0

             return getExpressionText();

65

         }

66

67

         // Expression interface

68

         //-------------------------------------------------------------------------

69

         public String getExpressionText() {

70

0

             return this.text;

71

         }

72

73

         public Object evaluate(JellyContext context) {

74

0

             this.context = context;

75

76

             try

77

             {

78

0

                 XPath xpath = new Dom4jXPath( this.xpathExpr.evaluateAsString( context ) );

79

80

0

                 xpath.setVariableContext(this);

81

82

0

                 if (log.isDebugEnabled()) {

83

0

                     log.debug( "Setting the namespace context to be: " + uris );

84

                 }

85

86

0

                 xpath.setNamespaceContext( new SimpleNamespaceContext( this.uris ) );

87

88

0

                 return xpath;

89

             }

90

0

             catch (JaxenException e)

91

             {

92

0

                 log.error( "Error constructing xpath",

93

                            e );

94

             }

95

96

0

             return null;

97

         }

98

99

         // VariableContext interface

100

         //-------------------------------------------------------------------------

101

         public Object getVariableValue(

102

             String namespaceURI,

103

             String prefix,

104

             String localName) {

105

106

0

             Object value = context.getVariable(localName);

107

108

             //log.debug( "Looking up XPath variable of name: " + localName + " value is: " + value );

109

110

0

             return value;

111

         }

112

113

         // Implementation methods

114

         //-------------------------------------------------------------------------

115

116

         /**

117

          * Factory method to create a synchronized Map of non-null and non-blank

118

          * namespace prefixes to namespace URIs

119

          */

120

         protected Map createUriMap(Map namespaceContext) {

121

             // now lets clone the Map but ignoring default or null prefixes

122

0

             Map uris = new Hashtable(namespaceContext.size());

123

0

             for (Iterator iter = namespaceContext.entrySet().iterator(); iter.hasNext(); ) {

124

0

                 Map.Entry entry = (Map.Entry) iter.next();

125

0

                 String prefix = (String) entry.getKey();

126

0

                 if (prefix != null && prefix.length() != 0) {

127

0

                     uris.put(prefix, entry.getValue());

128

                 }

129

0

             }

130

0

             return uris;

131

         }

132

     }

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