| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.axiom.core; |
| |
| public interface CoreChildNode extends CoreNode { |
| /** |
| * Check if this node has a parent. |
| * |
| * @return <code>true</code> if and only if this node currently has a parent |
| */ |
| boolean coreHasParent(); |
| |
| /** |
| * Get the parent of this node. |
| * |
| * @return the parent of this node or <code>null</code> if this node doesn't have a parent |
| */ |
| CoreParentNode coreGetParent(); |
| |
| /** |
| * Get the parent element of this node. |
| * |
| * @return the parent element of this node or <code>null</code> if the node has no parent or if |
| * the parent is not an element |
| */ |
| CoreElement coreGetParentElement(); |
| |
| CoreChildNode coreGetNextSibling() throws CoreModelException; |
| CoreChildNode coreGetPreviousSibling(); |
| |
| CoreChildNode coreGetNextSibling(NodeFilter filter) throws CoreModelException; |
| CoreChildNode coreGetPreviousSibling(NodeFilter filter); |
| |
| /** |
| * Get the next sibling if it is available. The sibling is available if it is complete or if the |
| * builder has started building the node. In contrast to {@link #coreGetNextSibling()}, this |
| * method will never modify the state of the underlying parser. |
| * |
| * @return the next sibling or <code>null</code> if the node has no next sibling or the builder |
| * has not yet started to build the next sibling |
| */ |
| CoreChildNode coreGetNextSiblingIfAvailable(); |
| |
| void coreInsertSiblingAfter(CoreChildNode sibling) throws CoreModelException; |
| void coreInsertSiblingBefore(CoreChildNode sibling) throws CoreModelException; |
| |
| void coreInsertSiblingsBefore(CoreDocumentFragment fragment); |
| |
| void coreDetach(Semantics semantics); |
| void coreDetach(CoreDocument newOwnerDocument); |
| |
| void coreReplaceWith(CoreChildNode newNode, Semantics semantics) throws CoreModelException; |
| |
| /** |
| * Clone this node according to the provided policy. |
| * |
| * @param policy |
| * the policy to use when cloning this node (and its children) |
| * @param targetParent |
| * the node to which the clone should be added; may be <code>null</code> |
| * @return the clone of this node |
| */ |
| <T> CoreNode coreClone(ClonePolicy<T> policy, T options, CoreParentNode targetParent) throws CoreModelException; |
| |
| void internalSetParent(CoreParentNode parent); |
| void internalUnsetParent(CoreDocument newOwnerDocument); |
| void internalDetach(DetachPolicy detachPolicy, CoreParentNode newParent); |
| void internalSetNextSibling(CoreChildNode nextSibling); |
| void internalSetPreviousSibling(CoreChildNode previousSibling); |
| } |