001/*-----------------------------------------------------------------------+ 002 | com.teamscale.checks 003 | | 004 $Id$ 005 | | 006 | Copyright (c) 2009-2015 CQSE GmbH | 007 +-----------------------------------------------------------------------*/ 008package eu.cqse.check.framework.core.xpath; 009 010import java.util.Iterator; 011 012import org.conqat.lib.commons.string.StringUtils; 013import org.jaxen.DefaultNavigator; 014import org.jaxen.XPath; 015 016import eu.cqse.check.framework.shallowparser.framework.ShallowEntity; 017 018/** 019 * Jaxen implementation of the {@link DefaultNavigator} for 020 * {@link ShallowEntity}s. 021 */ 022public class ShallowEntityNavigator extends DefaultNavigator { 023 024 /** serialVersionUID */ 025 private static final long serialVersionUID = 1L; 026 027 /** {@inheritDoc} */ 028 @Override 029 public String getElementNamespaceUri(Object element) { 030 return StringUtils.EMPTY_STRING; 031 } 032 033 /** {@inheritDoc} */ 034 @Override 035 public String getElementName(Object element) { 036 return ((ShallowEntity) element).getType().name(); 037 } 038 039 /** {@inheritDoc} */ 040 @Override 041 public String getElementQName(Object element) { 042 return getElementName(element); 043 } 044 045 /** {@inheritDoc} */ 046 @Override 047 public String getAttributeNamespaceUri(Object attr) { 048 return StringUtils.EMPTY_STRING; 049 } 050 051 /** {@inheritDoc} */ 052 @Override 053 public String getAttributeName(Object attr) { 054 return ((ShallowEntity) attr).getName(); 055 } 056 057 /** {@inheritDoc} */ 058 @Override 059 public String getAttributeQName(Object attr) { 060 return getAttributeName(attr); 061 } 062 063 /** {@inheritDoc} */ 064 @Override 065 public boolean isDocument(Object object) { 066 return ((ShallowEntity) object).getParent() == null; 067 } 068 069 /** {@inheritDoc} */ 070 @Override 071 public boolean isElement(Object object) { 072 return true; 073 } 074 075 /** {@inheritDoc} */ 076 @Override 077 public boolean isAttribute(Object object) { 078 return false; 079 } 080 081 /** {@inheritDoc} */ 082 @Override 083 public boolean isNamespace(Object object) { 084 return false; 085 } 086 087 /** {@inheritDoc} */ 088 @Override 089 public boolean isComment(Object object) { 090 return false; 091 } 092 093 /** {@inheritDoc} */ 094 @Override 095 public boolean isText(Object object) { 096 return false; 097 } 098 099 /** {@inheritDoc} */ 100 @Override 101 public boolean isProcessingInstruction(Object object) { 102 return false; 103 } 104 105 /** {@inheritDoc} */ 106 @Override 107 public String getCommentStringValue(Object comment) { 108 return StringUtils.EMPTY_STRING; 109 } 110 111 /** {@inheritDoc} */ 112 @Override 113 public String getElementStringValue(Object element) { 114 return StringUtils.EMPTY_STRING; 115 } 116 117 /** {@inheritDoc} */ 118 @Override 119 public String getAttributeStringValue(Object attr) { 120 return StringUtils.EMPTY_STRING; 121 } 122 123 /** {@inheritDoc} */ 124 @Override 125 public String getNamespaceStringValue(Object ns) { 126 return StringUtils.EMPTY_STRING; 127 } 128 129 /** {@inheritDoc} */ 130 @Override 131 public String getTextStringValue(Object text) { 132 return StringUtils.EMPTY_STRING; 133 } 134 135 /** {@inheritDoc} */ 136 @Override 137 public String getNamespacePrefix(Object ns) { 138 return StringUtils.EMPTY_STRING; 139 } 140 141 /** {@inheritDoc} */ 142 @Override 143 public XPath parseXPath(String xpath) { 144 return null; 145 } 146 147 /** {@inheritDoc} */ 148 @Override 149 public Iterator<?> getChildAxisIterator(Object contextNode) { 150 return ((ShallowEntity) contextNode).getChildren().iterator(); 151 } 152 153 /** {@inheritDoc} */ 154 @Override 155 public Object getDocumentNode(Object contextNode) { 156 if (isDocument(contextNode)) { 157 return contextNode; 158 } 159 return getDocumentNode(((ShallowEntity) contextNode).getParent()); 160 } 161 162 /** {@inheritDoc} */ 163 @Override 164 public Object getParentNode(Object contextNode) { 165 return ((ShallowEntity) contextNode).getParent(); 166 } 167}