View Javadoc
1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.jaxen; 5 6 import net.sourceforge.pmd.ast.ASTCompilationUnit; 7 import net.sourceforge.pmd.ast.Node; 8 import org.jaxen.DefaultNavigator; 9 import org.jaxen.XPath; 10 import org.jaxen.util.SingleObjectIterator; 11 import org.saxpath.SAXPathException; 12 13 import java.util.ArrayList; 14 import java.util.Iterator; 15 16 /*** 17 * @author daniels 18 * 19 * To change this generated comment go to 20 * Window>Preferences>Java>Code Generation>Code Template 21 */ 22 public class DocumentNavigator extends DefaultNavigator { 23 24 /*** 25 * Constant: empty iterator. 26 */ 27 private final static Iterator EMPTY_ITERATOR = new ArrayList().iterator(); 28 29 /* (non-Javadoc) 30 * @see org.jaxen.Navigator#getAttributeName(java.lang.Object) 31 */ 32 public String getAttributeName(Object arg0) { 33 // TODO Auto-generated method stub 34 return ((Attribute) arg0).getName(); 35 } 36 37 /* (non-Javadoc) 38 * @see org.jaxen.Navigator#getAttributeNamespaceUri(java.lang.Object) 39 */ 40 public String getAttributeNamespaceUri(Object arg0) { 41 // TODO Auto-generated method stub 42 return null; 43 } 44 45 /* (non-Javadoc) 46 * @see org.jaxen.Navigator#getAttributeQName(java.lang.Object) 47 */ 48 public String getAttributeQName(Object arg0) { 49 // TODO Auto-generated method stub 50 return ((Attribute) arg0).getName(); 51 } 52 53 /* (non-Javadoc) 54 * @see org.jaxen.Navigator#getAttributeStringValue(java.lang.Object) 55 */ 56 public String getAttributeStringValue(Object arg0) { 57 // TODO Auto-generated method stub 58 return ((Attribute) arg0).getValue(); 59 } 60 61 /* (non-Javadoc) 62 * @see org.jaxen.Navigator#getCommentStringValue(java.lang.Object) 63 */ 64 public String getCommentStringValue(Object arg0) { 65 // TODO Auto-generated method stub 66 return null; 67 } 68 69 /* (non-Javadoc) 70 * @see org.jaxen.Navigator#getElementName(java.lang.Object) 71 */ 72 public String getElementName(Object node) { 73 return node.toString(); 74 } 75 76 /* (non-Javadoc) 77 * @see org.jaxen.Navigator#getElementNamespaceUri(java.lang.Object) 78 */ 79 public String getElementNamespaceUri(Object arg0) { 80 // TODO Auto-generated method stub 81 return null; 82 } 83 84 /* (non-Javadoc) 85 * @see org.jaxen.Navigator#getElementQName(java.lang.Object) 86 */ 87 public String getElementQName(Object arg0) { 88 return getElementName(arg0); 89 } 90 91 /* (non-Javadoc) 92 * @see org.jaxen.Navigator#getElementStringValue(java.lang.Object) 93 */ 94 public String getElementStringValue(Object arg0) { 95 // TODO Auto-generated method stub 96 return null; 97 } 98 99 /* (non-Javadoc) 100 * @see org.jaxen.Navigator#getNamespacePrefix(java.lang.Object) 101 */ 102 public String getNamespacePrefix(Object arg0) { 103 // TODO Auto-generated method stub 104 return null; 105 } 106 107 /* (non-Javadoc) 108 * @see org.jaxen.Navigator#getNamespaceStringValue(java.lang.Object) 109 */ 110 public String getNamespaceStringValue(Object arg0) { 111 // TODO Auto-generated method stub 112 return null; 113 } 114 115 /* (non-Javadoc) 116 * @see org.jaxen.Navigator#getTextStringValue(java.lang.Object) 117 */ 118 public String getTextStringValue(Object arg0) { 119 // TODO Auto-generated method stub 120 return null; 121 } 122 123 /* (non-Javadoc) 124 * @see org.jaxen.Navigator#isAttribute(java.lang.Object) 125 */ 126 public boolean isAttribute(Object arg0) { 127 // TODO Auto-generated method stub 128 return arg0 instanceof Attribute; 129 } 130 131 /* (non-Javadoc) 132 * @see org.jaxen.Navigator#isComment(java.lang.Object) 133 */ 134 public boolean isComment(Object arg0) { 135 // TODO Auto-generated method stub 136 return false; 137 } 138 139 /* (non-Javadoc) 140 * @see org.jaxen.Navigator#isDocument(java.lang.Object) 141 */ 142 public boolean isDocument(Object arg0) { 143 // TODO Auto-generated method stub 144 return arg0 instanceof ASTCompilationUnit; 145 } 146 147 /* (non-Javadoc) 148 * @see org.jaxen.Navigator#isElement(java.lang.Object) 149 */ 150 public boolean isElement(Object arg0) { 151 // TODO Auto-generated method stub 152 return arg0 instanceof Node; 153 } 154 155 /* (non-Javadoc) 156 * @see org.jaxen.Navigator#isNamespace(java.lang.Object) 157 */ 158 public boolean isNamespace(Object arg0) { 159 // TODO Auto-generated method stub 160 return false; 161 } 162 163 /* (non-Javadoc) 164 * @see org.jaxen.Navigator#isProcessingInstruction(java.lang.Object) 165 */ 166 public boolean isProcessingInstruction(Object arg0) { 167 // TODO Auto-generated method stub 168 return false; 169 } 170 171 /* (non-Javadoc) 172 * @see org.jaxen.Navigator#isText(java.lang.Object) 173 */ 174 public boolean isText(Object arg0) { 175 // TODO Auto-generated method stub 176 return false; 177 } 178 179 /* (non-Javadoc) 180 * @see org.jaxen.Navigator#parseXPath(java.lang.String) 181 */ 182 public XPath parseXPath(String arg0) throws SAXPathException { 183 // TODO Auto-generated method stub 184 return null; 185 } 186 187 /* (non-Javadoc) 188 * @see org.jaxen.Navigator#getParentNode(java.lang.Object) 189 */ 190 public Object getParentNode(Object arg0) { 191 if (arg0 instanceof Node) { 192 return ((Node) arg0).jjtGetParent(); 193 } else { 194 return ((Attribute) arg0).getParent(); 195 } 196 } 197 198 /* (non-Javadoc) 199 * @see org.jaxen.Navigator#getAttributeAxisIterator(java.lang.Object) 200 */ 201 public Iterator getAttributeAxisIterator(Object arg0) { 202 Node contextNode = (Node) arg0; 203 return new AttributeAxisIterator(contextNode); 204 } 205 206 /*** 207 * Get an iterator over all of this node's children. 208 * 209 * @param contextNode The context node for the child axis. 210 * @return A possibly-empty iterator (not null). 211 */ 212 public Iterator getChildAxisIterator(Object contextNode) { 213 return new NodeIterator((Node) contextNode) { 214 protected Node getFirstNode(Node node) { 215 return getFirstChild(node); 216 } 217 218 protected Node getNextNode(Node node) { 219 return getNextSibling(node); 220 } 221 }; 222 } 223 224 /*** 225 * Get a (single-member) iterator over this node's parent. 226 * 227 * @param contextNode the context node for the parent axis. 228 * @return A possibly-empty iterator (not null). 229 */ 230 public Iterator getParentAxisIterator(Object contextNode) { 231 if (isAttribute(contextNode)) { 232 return new SingleObjectIterator(((Attribute) contextNode).getParent()); 233 } else { 234 Node parent = ((Node) contextNode).jjtGetParent(); 235 if (parent != null) { 236 return new SingleObjectIterator(parent); 237 } else { 238 return EMPTY_ITERATOR; 239 } 240 } 241 } 242 243 /*** 244 * Get an iterator over all following siblings. 245 * 246 * @param contextNode the context node for the sibling iterator. 247 * @return A possibly-empty iterator (not null). 248 */ 249 public Iterator getFollowingSiblingAxisIterator(Object contextNode) { 250 return new NodeIterator((Node) contextNode) { 251 protected Node getFirstNode(Node node) { 252 return getNextNode(node); 253 } 254 255 protected Node getNextNode(Node node) { 256 return getNextSibling(node); 257 } 258 }; 259 } 260 261 /*** 262 * Get an iterator over all preceding siblings. 263 * 264 * @param contextNode The context node for the preceding sibling axis. 265 * @return A possibly-empty iterator (not null). 266 */ 267 public Iterator getPrecedingSiblingAxisIterator(Object contextNode) { 268 return new NodeIterator((Node) contextNode) { 269 protected Node getFirstNode(Node node) { 270 return getNextNode(node); 271 } 272 273 protected Node getNextNode(Node node) { 274 return getPreviousSibling(node); 275 } 276 }; 277 } 278 279 /*** 280 * Get an iterator over all following nodes, depth-first. 281 * 282 * @param contextNode The context node for the following axis. 283 * @return A possibly-empty iterator (not null). 284 */ 285 public Iterator getFollowingAxisIterator(Object contextNode) { 286 return new NodeIterator((Node) contextNode) { 287 protected Node getFirstNode(Node node) { 288 if (node == null) 289 return null; 290 else { 291 Node sibling = getNextSibling(node); 292 if (sibling == null) 293 return getFirstNode(node.jjtGetParent()); 294 else 295 return sibling; 296 } 297 } 298 299 protected Node getNextNode(Node node) { 300 if (node == null) 301 return null; 302 else { 303 Node n = getFirstChild(node); 304 if (n == null) 305 n = getNextSibling(node); 306 if (n == null) 307 return getFirstNode(node.jjtGetParent()); 308 else 309 return n; 310 } 311 } 312 }; 313 } 314 315 /*** 316 * Get an iterator over all preceding nodes, depth-first. 317 * 318 * @param contextNode The context node for the preceding axis. 319 * @return A possibly-empty iterator (not null). 320 */ 321 public Iterator getPrecedingAxisIterator(Object contextNode) { 322 return new NodeIterator((Node) contextNode) { 323 protected Node getFirstNode(Node node) { 324 if (node == null) 325 return null; 326 else { 327 Node sibling = getPreviousSibling(node); 328 if (sibling == null) 329 return getFirstNode(node.jjtGetParent()); 330 else 331 return sibling; 332 } 333 } 334 335 protected Node getNextNode(Node node) { 336 if (node == null) 337 return null; 338 else { 339 Node n = getLastChild(node); 340 if (n == null) 341 n = getPreviousSibling(node); 342 if (n == null) 343 return getFirstNode(node.jjtGetParent()); 344 else 345 return n; 346 } 347 } 348 }; 349 } 350 351 /* (non-Javadoc) 352 * @see org.jaxen.Navigator#getDocumentNode(java.lang.Object) 353 */ 354 public Object getDocumentNode(Object contextNode) { 355 if (isDocument(contextNode)) { 356 return contextNode; 357 } else { 358 return getDocumentNode(getParentNode(contextNode)); 359 } 360 } 361 362 }

This page was automatically generated by Maven