1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.xml.xpath;
18
19 import java.util.Map;
20
21 import org.springframework.beans.factory.FactoryBean;
22 import org.springframework.beans.factory.InitializingBean;
23 import org.springframework.util.Assert;
24 import org.springframework.util.CollectionUtils;
25
26
27
28
29
30
31
32
33
34
35
36 public class XPathExpressionFactoryBean implements FactoryBean<XPathExpression>, InitializingBean {
37
38 private Map<String, String> namespaces;
39
40 private String expressionString;
41
42 private XPathExpression expression;
43
44
45 public void setExpression(String expression) {
46 expressionString = expression;
47 }
48
49
50 public void setNamespaces(Map<String, String> namespaces) {
51 this.namespaces = namespaces;
52 }
53
54 public void afterPropertiesSet() throws IllegalStateException, XPathParseException {
55 Assert.notNull(expressionString, "expression is required");
56 if (CollectionUtils.isEmpty(namespaces)) {
57 expression = XPathExpressionFactory.createXPathExpression(expressionString);
58 }
59 else {
60 expression = XPathExpressionFactory.createXPathExpression(expressionString, namespaces);
61 }
62 }
63
64 public XPathExpression getObject() throws Exception {
65 return expression;
66 }
67
68 public Class<? extends XPathExpression> getObjectType() {
69 return XPathExpression.class;
70 }
71
72 public boolean isSingleton() {
73 return true;
74 }
75 }