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 */ 039 public NoChildren(final GPathResult parent, final String name, final Map namespaceTagHints) { 040 super(parent, name, "*", namespaceTagHints); 041 } 042 043 /* (non-Javadoc) 044 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#size() 045 */ 046 public int size() { 047 return 0; 048 } 049 050 /* (non-Javadoc) 051 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#text() 052 */ 053 public String text() { 054 return ""; 055 } 056 057 /* (non-Javadoc) 058 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#parents() 059 */ 060 public GPathResult parents() { 061 // TODO Auto-generated method stub 062 throw new GroovyRuntimeException("parents() not implemented yet"); 063 } 064 065 /* (non-Javadoc) 066 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#childNodes() 067 */ 068 public Iterator childNodes() { 069 return iterator(); 070 } 071 072 /* (non-Javadoc) 073 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#iterator() 074 */ 075 public Iterator iterator() { 076 return new Iterator() { 077 public boolean hasNext() { 078 return false; 079 } 080 081 public Object next() { 082 return null; 083 } 084 085 public void remove() { 086 throw new UnsupportedOperationException(); 087 } 088 }; 089 } 090 091 /* (non-Javadoc) 092 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#find(groovy.lang.Closure) 093 */ 094 public GPathResult find(final Closure closure) { 095 return this; 096 } 097 098 /* (non-Javadoc) 099 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#findAll(groovy.lang.Closure) 100 */ 101 public GPathResult findAll(final Closure closure) { 102 return this; 103 } 104 105 /* (non-Javadoc) 106 * @see org.codehaus.groovy.sandbox.util.slurpersupport.GPathResult#nodeIterator() 107 */ 108 public Iterator nodeIterator() { 109 return iterator(); 110 } 111 112 /* (non-Javadoc) 113 * @see groovy.lang.Writable#writeTo(java.io.Writer) 114 */ 115 public Writer writeTo(final Writer out) throws IOException { 116 return out; 117 } 118 119 /* (non-Javadoc) 120 * @see org.codehaus.groovy.sandbox.markup.Buildable#build(groovy.lang.GroovyObject) 121 */ 122 public void build(final GroovyObject builder) { 123 } 124 125 protected void replaceNode(final Closure newValue) { 126 // No elements match GPath expression - do nothing 127 } 128 129 protected void replaceBody(final Object newValue) { 130 // No elements match GPath expression - do nothing 131 } 132 133 protected void appendNode(final Object newValue) { 134 // TODO consider creating an element for this 135 } 136 }