001 /* 002 * Copyright 2001-2004 The Apache Software Foundation. 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 package javax.xml.soap; 017 018 /** 019 * A representation of a node (element) in a DOM representation of an XML document 020 * that provides some tree manipulation methods. 021 * This interface provides methods for getting the value of a node, for 022 * getting and setting the parent of a node, and for removing a node. 023 */ 024 public interface Node extends org.w3c.dom.Node { 025 026 /** 027 * Returns the the value of the immediate child of this <code>Node</code> 028 * object if a child exists and its value is text. 029 * @return a <code>String</code> with the text of the immediate child of 030 * this <code>Node</code> object if (1) there is a child and 031 * (2) the child is a <code>Text</code> object; 032 * <code>null</code> otherwise 033 */ 034 public abstract String getValue(); 035 036 /** 037 * Sets the parent of this <code>Node</code> object to the given 038 * <code>SOAPElement</code> object. 039 * @param parent the <code>SOAPElement</code> object to be set as 040 * the parent of this <code>Node</code> object 041 * @throws SOAPException if there is a problem in setting the 042 * parent to the given element 043 * @see #getParentElement() getParentElement() 044 */ 045 public abstract void setParentElement(SOAPElement parent) 046 throws SOAPException; 047 048 /** 049 * Returns the parent element of this <code>Node</code> object. 050 * This method can throw an <code>UnsupportedOperationException</code> 051 * if the tree is not kept in memory. 052 * @return the <code>SOAPElement</code> object that is the parent of 053 * this <code>Node</code> object or <code>null</code> if this 054 * <code>Node</code> object is root 055 * @throws java.lang.UnsupportedOperationException if the whole tree is not kept in memory 056 * @see #setParentElement(javax.xml.soap.SOAPElement) setParentElement(javax.xml.soap.SOAPElement) 057 */ 058 public abstract SOAPElement getParentElement(); 059 060 /** 061 * Removes this <code>Node</code> object from the tree. Once 062 * removed, this node can be garbage collected if there are no 063 * application references to it. 064 */ 065 public abstract void detachNode(); 066 067 /** 068 * Notifies the implementation that this <code>Node</code> 069 * object is no longer being used by the application and that the 070 * implementation is free to reuse this object for nodes that may 071 * be created later. 072 * <P> 073 * Calling the method <code>recycleNode</code> implies that the method 074 * <code>detachNode</code> has been called previously. 075 */ 076 public abstract void recycleNode(); 077 078 /** 079 * If this is a Text node then this method will set its value, otherwise it 080 * sets the value of the immediate (Text) child of this node. The value of 081 * the immediate child of this node can be set only if, there is one child 082 * node and that node is a Text node, or if there are no children in which 083 * case a child Text node will be created. 084 * 085 * @param value the text to set 086 * @throws IllegalStateException if the node is not a Text node and 087 * either has more than one child node or has a child node that 088 * is not a Text node 089 */ 090 091 public abstract void setValue(String value); 092 }