1 | /*--
|
---|
2 |
|
---|
3 | $Id: Parent.java,v 1.13 2007/11/10 05:28:59 jhunter Exp $
|
---|
4 |
|
---|
5 | Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin.
|
---|
6 | All rights reserved.
|
---|
7 |
|
---|
8 | Redistribution and use in source and binary forms, with or without
|
---|
9 | modification, are permitted provided that the following conditions
|
---|
10 | are met:
|
---|
11 |
|
---|
12 | 1. Redistributions of source code must retain the above copyright
|
---|
13 | notice, this list of conditions, and the following disclaimer.
|
---|
14 |
|
---|
15 | 2. Redistributions in binary form must reproduce the above copyright
|
---|
16 | notice, this list of conditions, and the disclaimer that follows
|
---|
17 | these conditions in the documentation and/or other materials
|
---|
18 | provided with the distribution.
|
---|
19 |
|
---|
20 | 3. The name "JDOM" must not be used to endorse or promote products
|
---|
21 | derived from this software without prior written permission. For
|
---|
22 | written permission, please contact <request_AT_jdom_DOT_org>.
|
---|
23 |
|
---|
24 | 4. Products derived from this software may not be called "JDOM", nor
|
---|
25 | may "JDOM" appear in their name, without prior written permission
|
---|
26 | from the JDOM Project Management <request_AT_jdom_DOT_org>.
|
---|
27 |
|
---|
28 | In addition, we request (but do not require) that you include in the
|
---|
29 | end-user documentation provided with the redistribution and/or in the
|
---|
30 | software itself an acknowledgement equivalent to the following:
|
---|
31 | "This product includes software developed by the
|
---|
32 | JDOM Project (http://www.jdom.org/)."
|
---|
33 | Alternatively, the acknowledgment may be graphical using the logos
|
---|
34 | available at http://www.jdom.org/images/logos.
|
---|
35 |
|
---|
36 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
---|
37 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
---|
38 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
---|
39 | DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
|
---|
40 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
---|
41 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
---|
42 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
---|
43 | USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
---|
44 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
---|
45 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
---|
46 | OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
---|
47 | SUCH DAMAGE.
|
---|
48 |
|
---|
49 | This software consists of voluntary contributions made by many
|
---|
50 | individuals on behalf of the JDOM Project and was originally
|
---|
51 | created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
|
---|
52 | Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
|
---|
53 | on the JDOM Project, please see <http://www.jdom.org/>.
|
---|
54 |
|
---|
55 | */
|
---|
56 |
|
---|
57 | package org.jdom;
|
---|
58 |
|
---|
59 | import java.io.Serializable;
|
---|
60 | import java.util.Iterator;
|
---|
61 | import java.util.List;
|
---|
62 |
|
---|
63 | /**
|
---|
64 | * Superclass for JDOM objects which are allowed to contain
|
---|
65 | * {@link Content} content.
|
---|
66 | *
|
---|
67 | * @see org.jdom.Content
|
---|
68 | * @see org.jdom.Document
|
---|
69 | * @see org.jdom.Element
|
---|
70 | *
|
---|
71 | * @author Bradley S. Huffman
|
---|
72 | * @author Jason Hunter
|
---|
73 | * @version $Revision: 1.13 $, $Date: 2007/11/10 05:28:59 $
|
---|
74 | */
|
---|
75 | public interface Parent extends Cloneable, Serializable {
|
---|
76 |
|
---|
77 | /**
|
---|
78 | * Returns the full content of this parent as a {@link java.util.List}
|
---|
79 | * which contains objects of type {@link Content}. The returned list is
|
---|
80 | * <b>"live"</b> and in document order. Any modifications
|
---|
81 | * to it affect the element's actual contents. Modifications are checked
|
---|
82 | * for conformance to XML 1.0 rules.
|
---|
83 | * <p>
|
---|
84 | * Sequential traversal through the List is best done with an Iterator
|
---|
85 | * since the underlying implement of {@link java.util.List#size} may
|
---|
86 | * require walking the entire list and indexed lookups may require
|
---|
87 | * starting at the beginning each time.
|
---|
88 | *
|
---|
89 | * @return a list of the content of the parent
|
---|
90 | * @throws IllegalStateException if parent is a Document
|
---|
91 | * and the root element is not set
|
---|
92 | */
|
---|
93 | List getContent();
|
---|
94 |
|
---|
95 | /**
|
---|
96 | * Removes a single child node from the content list.
|
---|
97 | *
|
---|
98 | * @param child child to remove
|
---|
99 | * @return whether the removal occurred
|
---|
100 | */
|
---|
101 | boolean removeContent(Content child);
|
---|
102 |
|
---|
103 | /**
|
---|
104 | * Obtain a deep, unattached copy of this parent and it's children.
|
---|
105 | *
|
---|
106 | * @return a deep copy of this parent and it's children.
|
---|
107 | */
|
---|
108 | Object clone();
|
---|
109 |
|
---|
110 | /**
|
---|
111 | * Returns an {@link java.util.Iterator} that walks over all descendants
|
---|
112 | * in document order.
|
---|
113 | *
|
---|
114 | * @return an iterator to walk descendants
|
---|
115 | */
|
---|
116 | Iterator getDescendants();
|
---|
117 |
|
---|
118 | /**
|
---|
119 | * Return this parent's parent, or null if this parent is currently
|
---|
120 | * not attached to another parent. This is the same method as in Content but
|
---|
121 | * also added to Parent to allow more easy up-the-tree walking.
|
---|
122 | *
|
---|
123 | * @return this parent's parent or null if none
|
---|
124 | */
|
---|
125 | Parent getParent();
|
---|
126 |
|
---|
127 | /**
|
---|
128 | * Return this parent's owning document or null if the branch containing
|
---|
129 | * this parent is currently not attached to a document.
|
---|
130 | *
|
---|
131 | * @return this child's owning document or null if none
|
---|
132 | */
|
---|
133 | Document getDocument();
|
---|
134 |
|
---|
135 | }
|
---|