1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.views.xslt;
23
24 import org.w3c.dom.DOMException;
25 import org.w3c.dom.NamedNodeMap;
26 import org.w3c.dom.Node;
27
28 import com.opensymphony.xwork2.util.logging.Logger;
29 import com.opensymphony.xwork2.util.logging.LoggerFactory;
30
31 /***
32 * ProxyNodeAdapter is a read-only delegating adapter for objects which already
33 * implement the Node interface. All methods are proxied to the underlying
34 * Node except getParent(), getNextSibling() and getPreviousSibling(), which
35 * are implemented by the abstract adapter node to work with the parent adapter.
36 */
37 public abstract class ProxyNodeAdapter extends AbstractAdapterNode {
38
39 private Logger log = LoggerFactory.getLogger(this.getClass());
40
41 public ProxyNodeAdapter(AdapterFactory factory, AdapterNode parent, Node value) {
42 setContext(factory, parent, "document"
43 log.debug("proxied node is: " + value);
44 log.debug("node class is: " + value.getClass());
45 log.debug("node type is: " + value.getNodeType());
46 log.debug("node name is: " + value.getNodeName());
47 }
48
49 /***
50 * Get the proxied Node value
51 */
52 protected Node node() {
53 return (Node) getPropertyValue();
54 }
55
56 /***
57 * Get and adapter to wrap the proxied node.
58 *
59 * @param node
60 */
61 protected Node wrap(Node node) {
62 return getAdapterFactory().proxyNode(this, node);
63 }
64
65 protected NamedNodeMap wrap(NamedNodeMap nnm) {
66 return getAdapterFactory().proxyNamedNodeMap(this, nnm);
67 }
68
69
70
71
72
73
74
75
76 public String getNodeName() {
77 log.trace("getNodeName");
78 return node().getNodeName();
79 }
80
81 public String getNodeValue() throws DOMException {
82 log.trace("getNodeValue");
83 return node().getNodeValue();
84 }
85
86 public short getNodeType() {
87 if (log.isTraceEnabled())
88 log.trace("getNodeType: " + getNodeName() + ": " + node().getNodeType());
89 return node().getNodeType();
90 }
91
92 public NamedNodeMap getAttributes() {
93 NamedNodeMap nnm = wrap(node().getAttributes());
94 if (log.isTraceEnabled())
95 log.trace("getAttributes: " + nnm);
96 return nnm;
97 }
98
99 public boolean hasChildNodes() {
100 log.trace("hasChildNodes");
101 return node().hasChildNodes();
102 }
103
104 public boolean isSupported(String s, String s1) {
105 log.trace("isSupported");
106
107 return node().isSupported(s, s1);
108 }
109
110 public String getNamespaceURI() {
111 log.trace("getNamespaceURI");
112 return node().getNamespaceURI();
113 }
114
115 public String getPrefix() {
116 log.trace("getPrefix");
117 return node().getPrefix();
118 }
119
120 public String getLocalName() {
121 log.trace("getLocalName");
122 return node().getLocalName();
123 }
124
125 public boolean hasAttributes() {
126 log.trace("hasAttributes");
127 return node().hasAttributes();
128 }
129
130
131
132 public String toString() {
133 return "ProxyNode for: " + node();
134 }
135 }
136