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}