001    /*
002     * Copyright 2005 John G. Wilson
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     *
016     */
017    
018    package groovy.util.slurpersupport;
019    
020    import groovy.lang.Closure;
021    import groovy.lang.GroovyObject;
022    import groovy.lang.GroovyRuntimeException;
023    
024    import java.io.IOException;
025    import java.io.Writer;
026    import java.util.Iterator;
027    import java.util.Map;
028    
029    /**
030     * @author John Wilson
031     *
032     */
033    
034    public class NoChildren extends GPathResult {
035      /**
036       * @param parent
037       * @param name
038       * @param namespacePrefix
039       */
040      public NoChildren(final GPathResult parent, final String name, final Map namespaceTagHints) {
041        super(parent, name, "*", namespaceTagHints);
042      }
043    
044      /* (non-Javadoc)
045       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#size()
046       */
047      public int size() {
048        return 0;
049      }
050    
051      /* (non-Javadoc)
052       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#text()
053       */
054      public String text() {
055        return "";
056      }
057    
058      /* (non-Javadoc)
059       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#parents()
060       */
061      public GPathResult parents() {
062        // TODO Auto-generated method stub
063        throw new GroovyRuntimeException("parents() not implemented yet");
064      }
065    
066      /* (non-Javadoc)
067       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#childNodes()
068       */
069      public Iterator childNodes() {
070        return iterator();
071      }
072    
073      /* (non-Javadoc)
074       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#iterator()
075       */
076      public Iterator iterator() {
077        return new Iterator() {
078          public boolean hasNext() {
079            return false;
080          }
081          
082          public Object next() {
083            return null;
084          }
085          
086          public void remove() {
087            throw new UnsupportedOperationException();
088          }
089        };
090      }
091    
092      /* (non-Javadoc)
093       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#find(groovy.lang.Closure)
094       */
095      public GPathResult find(final Closure closure) {
096        return this;
097      }
098    
099      /* (non-Javadoc)
100       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#findAll(groovy.lang.Closure)
101       */
102      public GPathResult findAll(final Closure closure) {
103        return this;
104      }
105    
106      /* (non-Javadoc)
107       * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#nodeIterator()
108       */
109      public Iterator nodeIterator() {
110        return iterator();
111      }
112    
113      /* (non-Javadoc)
114       * @see groovy.lang.Writable#writeTo(java.io.Writer)
115       */
116      public Writer writeTo(final Writer out) throws IOException {
117        return out;
118      }
119    
120      /* (non-Javadoc)
121       * @see org.codehaus.groovy.sandbox.markup.Buildable#build(groovy.lang.GroovyObject)
122       */
123      public void build(final GroovyObject builder) {
124      }
125    
126    }