1 57 58 package com.sun.org.apache.xerces.internal.dom; 59 60 import org.w3c.dom.Node ; 61 62 82 public class DeferredDocumentTypeImpl 83 extends DocumentTypeImpl 84 implements DeferredNode { 85 86 90 91 static final long serialVersionUID = -2172579663227313509L; 92 93 97 98 protected transient int fNodeIndex; 99 100 104 108 DeferredDocumentTypeImpl(DeferredDocumentImpl ownerDocument, int nodeIndex) { 109 super(ownerDocument, null); 110 111 fNodeIndex = nodeIndex; 112 needsSyncData(true); 113 needsSyncChildren(true); 114 115 } 117 121 122 public int getNodeIndex() { 123 return fNodeIndex; 124 } 125 126 130 131 protected void synchronizeData() { 132 133 needsSyncData(false); 135 136 DeferredDocumentImpl ownerDocument = 138 (DeferredDocumentImpl)this.ownerDocument; 139 name = ownerDocument.getNodeName(fNodeIndex); 140 141 publicID = ownerDocument.getNodeValue(fNodeIndex); 143 systemID = ownerDocument.getNodeURI(fNodeIndex); 144 int extraDataIndex = ownerDocument.getNodeExtra(fNodeIndex); 145 internalSubset = ownerDocument.getNodeValue(extraDataIndex); 146 } 148 149 protected void synchronizeChildren() { 150 151 boolean orig = ownerDocument().getMutationEvents(); 153 ownerDocument().setMutationEvents(false); 154 155 needsSyncChildren(false); 157 158 DeferredDocumentImpl ownerDocument = 160 (DeferredDocumentImpl)this.ownerDocument; 161 162 entities = new NamedNodeMapImpl(this); 163 notations = new NamedNodeMapImpl(this); 164 elements = new NamedNodeMapImpl(this); 165 166 DeferredNode last = null; 168 for (int index = ownerDocument.getLastChild(fNodeIndex); 169 index != -1; 170 index = ownerDocument.getPrevSibling(index)) { 171 172 DeferredNode node = ownerDocument.getNodeObject(index); 173 int type = node.getNodeType(); 174 switch (type) { 175 176 case Node.ENTITY_NODE: { 178 entities.setNamedItem(node); 179 break; 180 } 181 182 case Node.NOTATION_NODE: { 184 notations.setNamedItem(node); 185 break; 186 } 187 188 case NodeImpl.ELEMENT_DEFINITION_NODE: { 190 elements.setNamedItem(node); 191 break; 192 } 193 194 case Node.ELEMENT_NODE: { 196 if (((DocumentImpl)getOwnerDocument()).allowGrammarAccess){ 197 insertBefore(node, last); 198 last = node; 199 break; 200 } 201 } 202 203 default: { 205 System.out.println("DeferredDocumentTypeImpl" + 206 "#synchronizeInfo: " + 207 "node.getNodeType() = " + 208 node.getNodeType() + 209 ", class = " + 210 node.getClass().getName()); 211 } 212 } 213 } 214 215 ownerDocument().setMutationEvents(orig); 217 218 setReadOnly(true, false); 220 221 } 223 } | Popular Tags |