1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jxpath.util;
18
19 import org.apache.commons.jxpath.BasicNodeSet;
20 import org.apache.commons.jxpath.ExtendedKeyManager;
21 import org.apache.commons.jxpath.JXPathContext;
22 import org.apache.commons.jxpath.KeyManager;
23 import org.apache.commons.jxpath.NodeSet;
24 import org.apache.commons.jxpath.Pointer;
25 import org.apache.commons.jxpath.ri.InfoSetUtil;
26
27
28
29
30
31
32
33
34 public class KeyManagerUtils {
35
36
37
38 private static class SingleNodeExtendedKeyManager implements
39 ExtendedKeyManager {
40 private KeyManager delegate;
41
42
43
44
45
46 public SingleNodeExtendedKeyManager(KeyManager delegate) {
47 this.delegate = delegate;
48 }
49
50 public NodeSet getNodeSetByKey(JXPathContext context, String key,
51 Object value) {
52 Pointer pointer = delegate.getPointerByKey(context, key, InfoSetUtil.stringValue(value));
53 BasicNodeSet result = new BasicNodeSet();
54 result.add(pointer);
55 return result;
56 }
57
58 public Pointer getPointerByKey(JXPathContext context, String keyName,
59 String keyValue) {
60 return delegate.getPointerByKey(context, keyName, keyValue);
61 }
62 }
63
64
65
66
67
68
69
70
71 public static ExtendedKeyManager getExtendedKeyManager(KeyManager keyManager) {
72 return keyManager instanceof ExtendedKeyManager ? (ExtendedKeyManager) keyManager
73 : new SingleNodeExtendedKeyManager(keyManager);
74 }
75 }