jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DeferredNotationImpl.java
changeset 25868 686eef1e7a79
parent 12457 c348e06f0e82
child 44797 8b3b3b911b8a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DeferredNotationImpl.java	Sun Aug 17 15:51:56 2014 +0100
@@ -0,0 +1,117 @@
+/*
+ * reserved comment block
+ * DO NOT REMOVE OR ALTER!
+ */
+/*
+ * Copyright 1999-2002,2004 The Apache Software Foundation.
+ *
+ * Licensed 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 com.sun.org.apache.xerces.internal.dom;
+
+/**
+ * Notations are how the Document Type Description (DTD) records hints
+ * about the format of an XML "unparsed entity" -- in other words,
+ * non-XML data bound to this document type, which some applications
+ * may wish to consult when manipulating the document. A Notation
+ * represents a name-value pair, with its nodeName being set to the
+ * declared name of the notation.
+ * <P>
+ * Notations are also used to formally declare the "targets" of
+ * Processing Instructions.
+ * <P>
+ * Note that the Notation's data is non-DOM information; the DOM only
+ * records what and where it is.
+ * <P>
+ * See the XML 1.0 spec, sections 4.7 and 2.6, for more info.
+ * <P>
+ * Level 1 of the DOM does not support editing Notation contents.
+ *
+ * @xerces.internal
+ *
+ * @since  PR-DOM-Level-1-19980818.
+ */
+public class DeferredNotationImpl
+    extends NotationImpl
+    implements DeferredNode {
+
+    //
+    // Constants
+    //
+
+    /** Serialization version. */
+    static final long serialVersionUID = 5705337172887990848L;
+
+    //
+    // Data
+    //
+
+    /** Node index. */
+    protected transient int fNodeIndex;
+
+    //
+    // Constructors
+    //
+
+    /**
+     * This is the deferred constructor. Only the fNodeIndex is given here.
+     * All other data, can be requested from the ownerDocument via the index.
+     */
+    DeferredNotationImpl(DeferredDocumentImpl ownerDocument, int nodeIndex) {
+        super(ownerDocument, null);
+
+        fNodeIndex = nodeIndex;
+        needsSyncData(true);
+
+    } // <init>(DeferredDocumentImpl,int)
+
+    //
+    // DeferredNode methods
+    //
+
+    /** Returns the node index. */
+    public int getNodeIndex() {
+        return fNodeIndex;
+    }
+
+    //
+    // Protected methods
+    //
+
+    /**
+     * Synchronizes the data. This is special because of the way
+     * that the "fast" notation stores its information internally.
+     */
+    protected void synchronizeData() {
+
+        // no need to synchronize again
+        needsSyncData(false);
+
+        // name
+        DeferredDocumentImpl ownerDocument =
+            (DeferredDocumentImpl)this.ownerDocument();
+        name = ownerDocument.getNodeName(fNodeIndex);
+
+        ownerDocument.getNodeType(fNodeIndex);
+        // public and system ids
+        publicId = ownerDocument.getNodeValue(fNodeIndex);
+        systemId = ownerDocument.getNodeURI(fNodeIndex);
+        int extraDataIndex = ownerDocument.getNodeExtra(fNodeIndex);
+        ownerDocument.getNodeType(extraDataIndex);
+        baseURI = ownerDocument.getNodeName(extraDataIndex);
+
+
+    } // synchronizeData()
+
+} // class DeferredNotationImpl