home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.internal;
-
- import com.ibm.xml.framework.AttDef;
- import com.ibm.xml.framework.Attr;
- import com.ibm.xml.framework.AttrPool;
- import com.ibm.xml.framework.ContentModel;
- import com.ibm.xml.framework.ContentSpecNode;
- import com.ibm.xml.framework.ElementDecl;
- import com.ibm.xml.framework.ElementDeclPool;
- import com.ibm.xml.framework.ParserState;
- import com.ibm.xml.framework.StringPool;
- import com.ibm.xml.framework.XMLErrorHandler;
- import com.ibm.xml.framework.XMLValidationHandler;
- import java.util.Enumeration;
- import java.util.Hashtable;
-
- public final class DefaultElementDeclPool implements ElementDeclPool {
- private static final int CHUNK_SHIFT = 5;
- private static final int CHUNK_SIZE = 32;
- private static final int CHUNK_MASK = 31;
- private static final int INITIAL_CHUNK_COUNT = 32;
- private ParserState fParserState;
- private StringPool fStringPool;
- private AttrPool fAttrPool;
- private XMLErrorHandler fErrorHandler;
- private XMLValidationHandler fValidationHandler;
- private int fRootElement = -1;
- private Attr fAttr = new Attr();
- private int fElementCount;
- private int[][] fElementName = new int[32][];
- private byte[][] fContentSpecType = new byte[32][];
- private int[][] fContentSpec = new int[32][];
- private ContentModel[][] fContentModel = new ContentModel[32][];
- private int[][] fAttlistHead = new int[32][];
- private int[][] fAttlistTail = new int[32][];
- private int fNodeCount;
- private byte[][] fNodeType = new byte[32][];
- private int[][] fNodeValue = new int[32][];
- private int fAttDefCount;
- private int[][] fAttName = new int[32][];
- private byte[][] fAttType = new byte[32][];
- private int[][] fEnumeration = new int[32][];
- private byte[][] fAttDefaultType = new byte[32][];
- private int[][] fAttValue = new int[32][];
- private int[][] fNextAttDef = new int[32][];
- private static final int INITIAL_BUCKET_SIZE = 4;
- private static final int HASHTABLE_SIZE = 128;
- private int[][] fElementNameHashtable = new int[128][];
- private int fXMLSpace = -1;
- private int fDefault = -1;
- private int fPreserve = -1;
- private Hashtable fIdDefs;
- private Hashtable fIdRefs;
- private Object fNullValue;
- private int[] localpartcache = new int[8];
- private int[] nsnamecache = new int[8];
-
- public DefaultElementDeclPool(ParserState var1) {
- this.fParserState = var1;
- this.fStringPool = var1.cacheStringPool();
- this.fAttrPool = var1.cacheAttrPool();
- this.fErrorHandler = var1.getErrorHandler();
- this.fValidationHandler = var1.getValidationHandler();
- }
-
- public void reset(ParserState var1) {
- this.fParserState = var1;
- this.fStringPool = var1.cacheStringPool();
- this.fAttrPool = var1.cacheAttrPool();
- this.fErrorHandler = var1.getErrorHandler();
- this.fValidationHandler = var1.getValidationHandler();
- int var2 = 0;
- int var3 = 0;
-
- for(int var4 = 0; var4 < this.fElementCount; ++var4) {
- this.fContentModel[var2][var3] = null;
- ++var3;
- if (var3 == 32) {
- ++var2;
- var3 = 0;
- }
- }
-
- for(int var5 = 0; var5 < 128; ++var5) {
- this.fElementNameHashtable[var5] = null;
- }
-
- this.fRootElement = -1;
- this.fElementCount = 0;
- this.fNodeCount = 0;
- this.fAttDefCount = 0;
- this.fXMLSpace = -1;
- this.fDefault = -1;
- this.fPreserve = -1;
- if (this.fIdDefs != null) {
- this.fIdDefs.clear();
- }
-
- if (this.fIdRefs != null) {
- this.fIdRefs.clear();
- }
-
- }
-
- public ElementDeclPool resetOrCopy(ParserState var1) {
- return new DefaultElementDeclPool(var1);
- }
-
- public void setRootElement(int var1) {
- this.fRootElement = var1;
- }
-
- public int getRootElement() {
- return this.fRootElement;
- }
-
- private boolean ensureElementCapacity(int var1) {
- try {
- if (this.fElementName[var1][0] != 0) {
- return false;
- }
-
- return true;
- } catch (ArrayIndexOutOfBoundsException var5) {
- byte[][] var2 = new byte[var1 * 2][];
- System.arraycopy(this.fContentSpecType, 0, var2, 0, var1);
- this.fContentSpecType = var2;
- int[][] var3 = new int[var1 * 2][];
- System.arraycopy(this.fElementName, 0, var3, 0, var1);
- this.fElementName = var3;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fContentSpec, 0, var3, 0, var1);
- this.fContentSpec = var3;
- ContentModel[][] var4 = new ContentModel[var1 * 2][];
- System.arraycopy(this.fContentModel, 0, var4, 0, var1);
- this.fContentModel = var4;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fAttlistHead, 0, var3, 0, var1);
- this.fAttlistHead = var3;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fAttlistTail, 0, var3, 0, var1);
- this.fAttlistTail = var3;
- } catch (NullPointerException var6) {
- }
-
- this.fElementName[var1] = new int[32];
- this.fContentSpecType[var1] = new byte[32];
- this.fContentSpec[var1] = new int[32];
- this.fContentModel[var1] = new ContentModel[32];
- this.fAttlistHead[var1] = new int[32];
- this.fAttlistTail[var1] = new int[32];
- return true;
- }
-
- public int getElement(int var1) {
- int var2 = var1 % 128;
- int[] var3 = this.fElementNameHashtable[var2];
- if (var3 != null) {
- int var4 = 1;
-
- for(int var5 = 0; var5 < var3[0]; ++var5) {
- if (var3[var4] == var1) {
- return var3[var4 + 1];
- }
-
- var4 += 2;
- }
- }
-
- return -1;
- }
-
- public int addElement(int var1) {
- int var2 = var1 % 128;
- int[] var3 = this.fElementNameHashtable[var2];
- if (var3 != null) {
- int var4 = 1;
-
- for(int var5 = 0; var5 < var3[0]; ++var5) {
- if (var3[var4] == var1) {
- return var3[var4 + 1];
- }
-
- var4 += 2;
- }
- }
-
- int var11 = this.fElementCount >> 5;
- int var12 = this.fElementCount & 31;
- this.ensureElementCapacity(var11);
- this.fElementName[var11][var12] = var1;
- this.fContentSpecType[var11][var12] = 0;
- this.fContentSpec[var11][var12] = -1;
- this.fContentModel[var11][var12] = null;
- this.fAttlistHead[var11][var12] = -1;
- this.fAttlistTail[var11][var12] = -1;
- if (var3 == null) {
- var3 = new int[9];
- var3[0] = 1;
- var3[1] = var1;
- var3[2] = this.fElementCount;
- this.fElementNameHashtable[var2] = var3;
- } else {
- int var6 = var3[0];
- int var7 = 1 + var6 * 2;
- if (var7 == var3.length) {
- int var8 = var6 + 4;
- int[] var9 = new int[1 + var8 * 2];
- System.arraycopy(var3, 0, var9, 0, var7);
- var3 = var9;
- this.fElementNameHashtable[var2] = var9;
- }
-
- var3[var7++] = var1;
- var3[var7++] = this.fElementCount;
- ++var6;
- var3[0] = var6;
- }
-
- return this.fElementCount++;
- }
-
- public int addElementDecl(ElementDecl var1) {
- int var2 = var1.elementName;
- int var3 = var2 % 128;
- int[] var4 = this.fElementNameHashtable[var3];
- if (var4 != null) {
- int var5 = 1;
-
- for(int var6 = 0; var6 < var4[0]; ++var6) {
- if (var4[var5] == var2) {
- int var7 = var4[var5 + 1];
- int var8 = var7 >> 5;
- int var9 = var7 & 31;
- if (this.fContentSpecType[var8][var9] != 0) {
- return -1;
- }
-
- this.fContentSpecType[var8][var9] = (byte)var1.contentSpecType;
- this.fContentSpec[var8][var9] = var1.contentSpec;
- this.fContentModel[var8][var9] = null;
- return var7;
- }
-
- var5 += 2;
- }
- }
-
- int var12 = this.fElementCount >> 5;
- int var13 = this.fElementCount & 31;
- this.ensureElementCapacity(var12);
- this.fElementName[var12][var13] = var1.elementName;
- this.fContentSpecType[var12][var13] = (byte)var1.contentSpecType;
- this.fContentSpec[var12][var13] = var1.contentSpec;
- this.fContentModel[var12][var13] = null;
- this.fAttlistHead[var12][var13] = -1;
- this.fAttlistTail[var12][var13] = -1;
- if (var4 == null) {
- var4 = new int[9];
- var4[0] = 1;
- var4[1] = var2;
- var4[2] = this.fElementCount;
- this.fElementNameHashtable[var3] = var4;
- } else {
- int var14 = var4[0];
- int var16 = 1 + var14 * 2;
- if (var16 == var4.length) {
- int var19 = var14 + 4;
- int[] var10 = new int[1 + var19 * 2];
- System.arraycopy(var4, 0, var10, 0, var16);
- var4 = var10;
- this.fElementNameHashtable[var3] = var10;
- }
-
- var4[var16++] = var2;
- var4[var16++] = this.fElementCount;
- ++var14;
- var4[0] = var14;
- }
-
- return this.fElementCount++;
- }
-
- public int getElementName(int var1) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fElementName[var2][var3];
- } else {
- return -1;
- }
- }
-
- public int getContentSpecType(int var1) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fContentSpecType[var2][var3];
- } else {
- return -1;
- }
- }
-
- public int getContentSpec(int var1) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fContentSpec[var2][var3];
- } else {
- return -1;
- }
- }
-
- public String getContentSpecAsString(int var1) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- switch (this.fContentSpecType[var2][var3]) {
- case 1:
- return "EMPTY";
- case 2:
- return "ANY";
- case 3:
- case 4:
- return this.getContentSpecNodeAsString(this.fContentSpec[var2][var3]);
- default:
- return null;
- }
- } else {
- return null;
- }
- }
-
- public ContentModel getContentModel(int var1) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fContentModel[var2][var3];
- } else {
- return null;
- }
- }
-
- public void setContentModel(int var1, ContentModel var2) {
- if (var1 >= 0 && var1 < this.fElementCount) {
- int var3 = var1 >> 5;
- int var4 = var1 & 31;
- this.fContentModel[var3][var4] = var2;
- }
- }
-
- private boolean ensureNodeCapacity(int var1) {
- try {
- if (this.fNodeType[var1][0] != 0) {
- return false;
- }
-
- return true;
- } catch (ArrayIndexOutOfBoundsException var4) {
- byte[][] var2 = new byte[var1 * 2][];
- System.arraycopy(this.fNodeType, 0, var2, 0, var1);
- this.fNodeType = var2;
- int[][] var3 = new int[var1 * 2][];
- System.arraycopy(this.fNodeValue, 0, var3, 0, var1);
- this.fNodeValue = var3;
- } catch (NullPointerException var5) {
- }
-
- this.fNodeType[var1] = new byte[32];
- this.fNodeValue[var1] = new int[32];
- return true;
- }
-
- public int addContentSpecNode(ContentSpecNode var1) {
- int var2 = this.fNodeCount >> 5;
- int var3 = this.fNodeCount & 31;
- this.ensureNodeCapacity(var2);
- switch (var1.type) {
- case 0:
- case 1:
- case 2:
- case 3:
- this.fNodeType[var2][var3] = (byte)var1.type;
- this.fNodeValue[var2][var3] = var1.value;
- return this.fNodeCount++;
- case 4:
- case 5:
- this.fNodeType[var2][var3] = (byte)var1.type;
- this.fNodeValue[var2][var3] = var1.value;
- int var4 = this.fNodeCount++;
- ++var3;
- if (var3 == 32) {
- ++var2;
- this.ensureNodeCapacity(var2);
- var3 = 0;
- }
-
- this.fNodeType[var2][var3] = (byte)(var1.type | 64);
- this.fNodeValue[var2][var3] = var1.otherValue;
- ++this.fNodeCount;
- return var4;
- default:
- return -1;
- }
- }
-
- public void getContentSpecNode(int var1, ContentSpecNode var2) {
- int var3 = var1 >> 5;
- int var4 = var1 & 31;
- var2.type = this.fNodeType[var3][var4];
- var2.value = this.fNodeValue[var3][var4];
- if (var2.type != 4 && var2.type != 5) {
- var2.otherValue = -1;
- } else {
- ++var4;
- if (var4 == 32) {
- ++var3;
- var4 = 0;
- }
-
- var2.otherValue = this.fNodeValue[var3][var4];
- }
- }
-
- private void appendContentSpecNode(int var1, StringBuffer var2, boolean var3) {
- int var4 = var1 >> 5;
- int var5 = var1 & 31;
- byte var6 = this.fNodeType[var4][var5];
- int var7 = this.fNodeValue[var4][var5];
- switch (var6) {
- case 0:
- var2.append(var7 == -1 ? "#PCDATA" : this.fStringPool.toString(var7));
- return;
- case 1:
- this.appendContentSpecNode(var7, var2, false);
- var2.append('?');
- return;
- case 2:
- this.appendContentSpecNode(var7, var2, false);
- var2.append('*');
- return;
- case 3:
- this.appendContentSpecNode(var7, var2, false);
- var2.append('+');
- return;
- case 4:
- case 5:
- if (!var3) {
- var2.append('(');
- }
-
- int var8 = var7 >> 5;
- int var9 = var7 & 31;
- byte var10 = this.fNodeType[var8][var9];
- this.appendContentSpecNode(var7, var2, var10 == var6);
- var2.append((char)(var6 == 4 ? '|' : ','));
- ++var5;
- if (var5 == 32) {
- ++var4;
- var5 = 0;
- }
-
- this.appendContentSpecNode(this.fNodeValue[var4][var5], var2, false);
- if (!var3) {
- var2.append(')');
- }
-
- return;
- default:
- }
- }
-
- public String getContentSpecNodeAsString(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- byte var4 = this.fNodeType[var2][var3];
- int var5 = this.fNodeValue[var2][var3];
- StringBuffer var6 = new StringBuffer();
- switch (var4) {
- case 0:
- var6.append("(" + (var5 == -1 ? "#PCDATA" : this.fStringPool.toString(var5)) + ")");
- break;
- case 1:
- var2 = var5 >> 5;
- var3 = var5 & 31;
- if (this.fNodeType[var2][var3] == 0) {
- var5 = this.fNodeValue[var2][var3];
- var6.append("(" + (var5 == -1 ? "#PCDATA" : this.fStringPool.toString(var5)) + ")?");
- } else {
- this.appendContentSpecNode(var1, var6, false);
- }
- break;
- case 2:
- var2 = var5 >> 5;
- var3 = var5 & 31;
- if (this.fNodeType[var2][var3] == 0) {
- var5 = this.fNodeValue[var2][var3];
- var6.append("(" + (var5 == -1 ? "#PCDATA" : this.fStringPool.toString(var5)) + ")*");
- } else {
- this.appendContentSpecNode(var1, var6, false);
- }
- break;
- case 3:
- var2 = var5 >> 5;
- var3 = var5 & 31;
- if (this.fNodeType[var2][var3] == 0) {
- var5 = this.fNodeValue[var2][var3];
- var6.append("(" + (var5 == -1 ? "#PCDATA" : this.fStringPool.toString(var5)) + ")+");
- } else {
- this.appendContentSpecNode(var1, var6, false);
- }
- break;
- case 4:
- case 5:
- this.appendContentSpecNode(var1, var6, false);
- break;
- default:
- return null;
- }
-
- return var6.toString();
- }
-
- private boolean ensureAttrCapacity(int var1) {
- try {
- if (this.fAttName[var1][0] != 0) {
- return false;
- }
-
- return true;
- } catch (ArrayIndexOutOfBoundsException var4) {
- byte[][] var2 = new byte[var1 * 2][];
- System.arraycopy(this.fAttType, 0, var2, 0, var1);
- this.fAttType = var2;
- var2 = new byte[var1 * 2][];
- System.arraycopy(this.fAttDefaultType, 0, var2, 0, var1);
- this.fAttDefaultType = var2;
- int[][] var3 = new int[var1 * 2][];
- System.arraycopy(this.fAttName, 0, var3, 0, var1);
- this.fAttName = var3;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fEnumeration, 0, var3, 0, var1);
- this.fEnumeration = var3;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fAttValue, 0, var3, 0, var1);
- this.fAttValue = var3;
- var3 = new int[var1 * 2][];
- System.arraycopy(this.fNextAttDef, 0, var3, 0, var1);
- this.fNextAttDef = var3;
- } catch (NullPointerException var5) {
- }
-
- this.fAttType[var1] = new byte[32];
- this.fAttDefaultType[var1] = new byte[32];
- this.fAttName[var1] = new int[32];
- this.fEnumeration[var1] = new int[32];
- this.fAttValue[var1] = new int[32];
- this.fNextAttDef[var1] = new int[32];
- return true;
- }
-
- public int addAttDef(int var1, AttDef var2) throws Exception {
- int var3 = var1 >> 5;
- int var4 = var1 & 31;
-
- int var6;
- int var7;
- for(int var5 = this.fAttlistHead[var3][var4]; var5 != -1; var5 = this.fNextAttDef[var6][var7]) {
- var6 = var5 >> 5;
- var7 = var5 & 31;
- if (this.fAttName[var6][var7] == var2.attName) {
- if (this.fParserState.getWarningOnDuplicateAttDef()) {
- this.fErrorHandler.error1(15, var2.attName);
- }
-
- return -1;
- }
-
- if (var2.attType == 1 && this.fAttType[var6][var7] == 1) {
- this.fErrorHandler.error1(13, var2.attName);
- return -1;
- }
- }
-
- if (this.fXMLSpace == -1) {
- this.fXMLSpace = this.fStringPool.addSymbol("xml:space".intern());
- this.fDefault = this.fStringPool.addSymbol("default".intern());
- this.fPreserve = this.fStringPool.addSymbol("preserve".intern());
- }
-
- if (var2.attName == this.fXMLSpace) {
- var6 = 0;
- if (var2.attType == 9) {
- var7 = var2.enumeration;
- if (var7 != -1) {
- var6 = this.fStringPool.stringListLength(var7) == 2 && this.fStringPool.stringInList(var7, this.fDefault) && this.fStringPool.stringInList(var7, this.fPreserve);
- }
- }
-
- if (!var6) {
- this.fErrorHandler.error(14);
- }
- }
-
- var6 = this.fAttDefCount >> 5;
- var7 = this.fAttDefCount & 31;
- this.ensureAttrCapacity(var6);
- this.fAttName[var6][var7] = var2.attName;
- this.fAttType[var6][var7] = (byte)var2.attType;
- this.fEnumeration[var6][var7] = var2.enumeration;
- this.fAttDefaultType[var6][var7] = (byte)var2.attDefaultType;
- this.fAttValue[var6][var7] = var2.attValue;
- int var8 = -1;
- if (var2.attValue != -1) {
- var8 = this.fAttlistHead[var3][var4];
- this.fAttlistHead[var3][var4] = this.fAttDefCount;
- if (var8 == -1) {
- this.fAttlistTail[var3][var4] = this.fAttDefCount;
- }
- } else {
- var8 = this.fAttlistTail[var3][var4];
- this.fAttlistTail[var3][var4] = this.fAttDefCount;
- if (var8 == -1) {
- this.fAttlistHead[var3][var4] = this.fAttDefCount;
- } else {
- this.fNextAttDef[var8 >> 5][var8 & 31] = this.fAttDefCount;
- var8 = -1;
- }
- }
-
- this.fNextAttDef[var6][var7] = var8;
- return this.fAttDefCount++;
- }
-
- public int getAttDef(int var1, int var2) {
- int var3 = 0;
- int var4 = 0;
-
- for(int var5 = 0; var5 < this.fElementCount; ++var5) {
- if (this.fElementName[var3][var4] == var1) {
- for(int var6 = this.fAttlistHead[var3][var4]; var6 != -1; var6 = this.fNextAttDef[var3][var4]) {
- var3 = var6 >> 5;
- var4 = var6 & 31;
- if (this.fAttName[var3][var4] == var2) {
- return var6;
- }
- }
-
- return -1;
- }
-
- ++var4;
- if (var4 == 32) {
- ++var3;
- var4 = 0;
- }
- }
-
- return -1;
- }
-
- public int getAttName(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fAttName[var2][var3];
- }
-
- public int getAttValue(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fAttValue[var2][var3];
- }
-
- public int getAttType(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fAttType[var2][var3];
- }
-
- public int getAttDefaultType(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fAttDefaultType[var2][var3];
- }
-
- public int getEnumeration(int var1) {
- int var2 = var1 >> 5;
- int var3 = var1 & 31;
- return this.fEnumeration[var2][var3];
- }
-
- public int addDefaultAttributes(int var1, AttrPool var2, int var3, int var4) throws Exception {
- int var5 = var1 >> 5;
- int var6 = var1 & 31;
- int var7 = this.fAttlistHead[var5][var6];
- int var8 = var3;
-
- int var10;
- int var11;
- for(int var9 = var4; var7 != -1; var7 = this.fNextAttDef[var10][var11]) {
- var10 = var7 >> 5;
- var11 = var7 & 31;
- byte var12 = this.fAttDefaultType[var10][var11];
- if (var12 != 3) {
- int var13 = this.fAttName[var10][var11];
- boolean var14 = false;
- if (var8 != -1) {
- for(int var15 = var8; var15 <= var9; ++var15) {
- var2.getAttrName(var15);
- if (var2.getAttrName(var15) == var13) {
- if (var12 == 4 && var2.getAttValue(var15) != this.fAttValue[var10][var11]) {
- this.fErrorHandler.error3(134, var13, this.fAttValue[var10][var11], var2.getAttValue(var15));
- }
-
- var14 = true;
- break;
- }
- }
- }
-
- if (!var14) {
- if (var12 == 2) {
- this.fErrorHandler.error1(133, var13);
- } else {
- this.fAttr.attName = var13;
- this.fAttr.attType = this.fAttType[var10][var11];
- this.fAttr.attValue = this.fAttValue[var10][var11];
- this.fAttr.specified = false;
- var4 = var2.addAttr(this.fAttr, -1);
- if (var3 == -1) {
- var3 = var4;
- }
- }
- }
- }
- }
-
- if (var4 != -1) {
- var2.setIsLastAttr(var4);
- }
-
- return var3;
- }
-
- public boolean addId(int var1, int var2) {
- Integer var3 = new Integer(var1);
- if (this.fIdDefs == null) {
- this.fIdDefs = new Hashtable();
- } else if (this.fIdDefs.containsKey(var3)) {
- return false;
- }
-
- if (this.fNullValue == null) {
- this.fNullValue = new Object();
- }
-
- this.fIdDefs.put(var3, this.fNullValue);
- return true;
- }
-
- public void addIdRef(int var1, int var2) {
- Integer var3 = new Integer(var1);
- if (this.fIdDefs == null || !this.fIdDefs.containsKey(var3)) {
- if (this.fIdRefs == null) {
- this.fIdRefs = new Hashtable();
- } else if (this.fIdRefs.containsKey(var3)) {
- return;
- }
-
- if (this.fNullValue == null) {
- this.fNullValue = new Object();
- }
-
- this.fIdRefs.put(var3, this.fNullValue);
- }
- }
-
- public void checkIdRefs() throws Exception {
- if (this.fIdRefs != null) {
- Enumeration var1 = this.fIdRefs.keys();
-
- while(var1.hasMoreElements()) {
- Integer var2 = (Integer)var1.nextElement();
- if (this.fIdDefs == null || !this.fIdDefs.containsKey(var2)) {
- this.fErrorHandler.error1(84, var2);
- }
- }
-
- }
- }
-
- public void checkNamespace(int var1, int var2) throws Exception {
- if (var2 != -1) {
- int var4 = this.fAttrPool.getAttrName(var2);
- String var5 = this.fStringPool.toString(var4);
- int var6 = this.checkQName(var1, var5);
- if (var6 != -1) {
- this.fErrorHandler.error1(var6, var4);
- }
-
- int var7 = this.fAttrPool.getAttValue(var2);
- String var8 = this.fStringPool.toString(var7);
- if (var8.length() == 0 && var5.startsWith("xmlns:")) {
- this.fErrorHandler.error1(142, var4);
- }
-
- if (this.localpartcache.length == 0) {
- int[] var9 = new int[0];
- System.arraycopy(this.localpartcache, 0, var9, 0, 0);
- this.localpartcache = var9;
- var9 = new int[0];
- System.arraycopy(this.nsnamecache, 0, var9, 0, 0);
- this.nsnamecache = var9;
- }
-
- this.localpartcache[0] = this.getNSLocalName(var5, var4);
- this.nsnamecache[0] = this.getNSName(var1, var5);
- if (this.nsnamecache[0] != -1) {
- for(int var14 = 0; var14 < 0; ++var14) {
- if (this.localpartcache[var14] == this.localpartcache[0]) {
- int var10 = this.nsnamecache[var14];
- if (var10 != -1 && var10 == this.nsnamecache[0]) {
- this.fErrorHandler.error4(144, var4, this.nsnamecache[0], this.localpartcache[0], this.fAttrPool.getAttrName(var2 + var14));
- }
- }
- }
- }
- }
-
- int var3 = this.getElementName(var1);
- String var11 = this.fStringPool.toString(var3);
- int var12 = this.checkQName(var1, var11);
- if (var12 != -1) {
- this.fErrorHandler.error1(var12, var3);
- }
-
- }
-
- public void checkDeclaredElements() throws Exception {
- if (this.fParserState.getValidationHandler() != null) {
- for(int var1 = 0; var1 < this.fElementCount; ++var1) {
- int var2 = this.getContentSpecType(var1);
- if (var2 == 3 || var2 == 4) {
- int var3 = var1 >> 5;
- int var4 = var1 & 31;
- int var5 = this.fContentSpec[var3][var4];
- this.checkDeclaredElements(var1, var5);
- }
- }
- }
-
- }
-
- private void checkDeclaredElements(int var1, int var2) throws Exception {
- int var3 = var2 >> 5;
- int var4 = var2 & 31;
- byte var5 = this.fNodeType[var3][var4];
- int var6 = this.fNodeValue[var3][var4];
- switch (var5) {
- case 0:
- if (var6 != -1 && this.getElement(var6) == -1) {
- int var7 = var1 >> 5;
- int var8 = var1 & 31;
- int var9 = this.fElementName[var7][var8];
- this.fErrorHandler.error2(165, var9, var6);
- return;
- }
- default:
- return;
- case 1:
- case 2:
- case 3:
- this.checkDeclaredElements(var1, var6);
- return;
- case 4:
- case 5:
- this.checkDeclaredElements(var1, var6);
- ++var4;
- if (var4 == 32) {
- ++var3;
- var4 = 0;
- }
-
- this.checkDeclaredElements(var1, this.fNodeValue[var3][var4]);
- }
- }
-
- private int checkQName(int var1, String var2) {
- int var3 = var2.indexOf(58);
- if (var3 < 0) {
- return -1;
- } else {
- var2.substring(0, var3);
- if (-1 == -1) {
- return 136;
- } else {
- return var2.indexOf(58, var3 + 1) >= 0 ? 135 : -1;
- }
- }
- }
-
- private int getNSLocalName(String var1, int var2) {
- int var3 = var1.indexOf(58);
- return var3 < 0 ? var2 : this.fStringPool.addSymbol(var1.substring(var3 + 1));
- }
-
- private int getNSName(int var1, String var2) {
- int var3 = var2.indexOf(58);
- if (var3 < 0) {
- String var10000 = "";
- } else {
- var2.substring(0, var3);
- }
-
- return -1;
- }
-
- private int getNamespaceForPrefix(int var1, String var2) {
- return -1;
- }
- }
-