blob: 9da51a100d23ab863c9f3b68cb971354873a04f4 [file] [log] [blame]
/**
* Copyright (c) 2013-2016 Angelo ZERR.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package org.eclipse.wst.json.core.document;
import org.eclipse.json.jsonpath.IJSONPath;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
/**
* The JSON node API.
*
*/
public interface IJSONNode extends IndexedRegion, INodeNotifier {
short DOCUMENT_NODE = -1;
short OBJECT_NODE = 0;
short ARRAY_NODE = 1;
short PAIR_NODE = 2;
short VALUE_STRING_NODE = 3;
short VALUE_NUMBER_NODE = 4;
short VALUE_BOOLEAN_NODE = 5;
short VALUE_NULL_NODE = 6;
short OBJECT_KEY_NODE = 7;
/**
* Returns the structured document that underlies this node's model.
*
* Returns null if this node is not actively part of a source document. In
* contrast, in the pure DOM world, "owning document" is not null even after
* a node is deleted from the DOM.
*
* ISSUE: we need to fix our implementation to match this spec.
*
* @return the structured document.
*/
IStructuredDocument getStructuredDocument();
/**
* Gets the last structured document region of this node.
*
* ISSUE: need to resolve getEnd/getLast confusion.
*
* @return IStructuredDocumentRegion - returns the last structured document
* region associated with
*/
IStructuredDocumentRegion getEndStructuredDocumentRegion();
/**
* Gets the first structured document region of this node.
*
* ISSUE: need to resolve getFirst/getStart confusion
*
* @return the first structured document region of this node.
*/
IStructuredDocumentRegion getFirstStructuredDocumentRegion();
/**
* Gets the last structured document region of this node.
*
* ISSUE: need to resolve getEnd/getLast confusion.
*
* @return IStructuredDocumentRegion - returns the last structured document
* region associated with
*/
IStructuredDocumentRegion getLastStructuredDocumentRegion();
String getNodeName();
String getNodeValue() throws JSONException;
void setNodeValue(String paramString) throws JSONException;
IJSONNode removeChild(IJSONNode oldChild) throws JSONException;
IJSONNode cloneNode(boolean deep);
IJSONDocument getOwnerDocument();
IJSONNode getFirstChild();
IJSONNode getLastChild();
IJSONNode getPreviousSibling();
IJSONNode getNextSibling();
IJSONNode getParentNode();
short getNodeType();
IStructuredDocumentRegion getStartStructuredDocumentRegion();
IJSONNode insertBefore(IJSONNode node, IJSONNode next) throws JSONException;
/**
* Returns the model associated with this node. Returns null if not part of
* an active model.
*
* @return IDOMModel - returns the IDOMModel this node is part of.
*/
IJSONModel getModel();
boolean hasChildNodes();
IJSONPair getOwnerPairNode();
IJSONNode getParentOrPairNode();
IJSONPath getPath();
}