home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.internal;
-
- import com.ibm.xml.framework.AttrPool;
- import com.ibm.xml.framework.ContentModel;
- import com.ibm.xml.framework.ContentSpecNode;
- import com.ibm.xml.framework.ElementDeclPool;
- import com.ibm.xml.framework.InsertableElementsInfo;
- import com.ibm.xml.framework.ParserState;
- import com.ibm.xml.framework.StringPool;
- import com.ibm.xml.framework.XMLErrorHandler;
- import com.ibm.xml.framework.XMLValidationHandler;
-
- public class DefaultValidationHandler implements XMLValidationHandler {
- private ElementDeclPool fDeclPool;
- private XMLErrorHandler fErrHandler;
- private AttrPool fAttrPool;
- private StringPool fStringPool;
- private ParserState fParserState;
- private static final boolean DEBUG_PRINT_ATTRIBUTES = false;
- private static final boolean DEBUG_PRINT_CONTENT = false;
-
- public DefaultValidationHandler(ParserState var1) {
- this.fDeclPool = var1.cacheElementDeclPool();
- this.fErrHandler = var1.getErrorHandler();
- this.fAttrPool = var1.cacheAttrPool();
- this.fStringPool = var1.cacheStringPool();
- this.fParserState = var1;
- if (this.fDeclPool != null && this.fErrHandler != null && this.fAttrPool != null && this.fStringPool != null && this.fParserState != null) {
- boolean var2 = false;
- } else {
- boolean var10000 = true;
- }
-
- }
-
- public void reset(ParserState var1) {
- this.fDeclPool = var1.cacheElementDeclPool();
- this.fErrHandler = var1.getErrorHandler();
- this.fAttrPool = var1.cacheAttrPool();
- this.fStringPool = var1.cacheStringPool();
- this.fParserState = var1;
- }
-
- public void checkRootElementName(int var1) throws Exception {
- int var2 = this.fDeclPool.getRootElement();
- if (var2 != -1) {
- int var3 = this.fDeclPool.getElementName(var2);
- if (var1 != var3) {
- this.fErrHandler.error2(126, var3, var1);
- }
-
- }
- }
-
- public void checkAttributes(int var1, int var2) throws Exception {
- if (this.fParserState.getCheckNamespace()) {
- this.fDeclPool.checkNamespace(var1, var2);
- }
-
- }
-
- public int checkContent(int var1, int var2, int[] var3) throws Exception {
- int var4 = this.fDeclPool.getElementName(var1);
- int var5 = this.fDeclPool.getContentSpecType(var1);
- if (var5 == 1) {
- if (var2 != 0) {
- return 0;
- }
- } else if (var5 != 2) {
- if (var5 != 3 && var5 != 4) {
- if (var5 == 0) {
- this.fErrHandler.error1(166, var4);
- } else {
- this.fErrHandler.error(152);
- }
- } else {
- Object var6 = null;
-
- try {
- ContentModel var9 = this.getContentModel(var1);
- return var9.validateContent(var2, var3);
- } catch (CMException var8) {
- var8.send(this.fErrHandler);
- }
- }
- }
-
- return -1;
- }
-
- public void checkIDRefNames() throws Exception {
- this.fDeclPool.checkIdRefs();
- }
-
- public int whatCanGoHere(int var1, boolean var2, InsertableElementsInfo var3) throws Exception {
- if (var3.insertAt > var3.childCount || var3.curChildren == null || var3.childCount < 1 || var3.childCount > var3.curChildren.length) {
- this.fErrHandler.error(158);
- }
-
- int var4 = 0;
-
- try {
- ContentModel var5 = this.getContentModel(var1);
- var4 = var5.whatCanGoHere(var2, var3);
- } catch (CMException var6) {
- var6.send(this.fErrHandler);
- }
-
- return var4;
- }
-
- private final ContentModel createChildModel(int var1) throws CMException {
- ContentSpecNode var2 = new ContentSpecNode();
- this.fDeclPool.getContentSpecNode(this.fDeclPool.getContentSpec(var1), var2);
- if (var2.value == -1) {
- throw new CMException(159);
- } else if (var2.type == 0) {
- return new SimpleContentModel(var2.value, -1, var2.type);
- } else {
- if (var2.type != 4 && var2.type != 5) {
- if (var2.type != 1 && var2.type != 2 && var2.type != 3) {
- throw new CMException(152);
- }
-
- ContentSpecNode var5 = new ContentSpecNode();
- this.fDeclPool.getContentSpecNode(var2.value, var5);
- if (var5.type == 0) {
- return new SimpleContentModel(var5.value, -1, var2.type);
- }
- } else {
- ContentSpecNode var3 = new ContentSpecNode();
- ContentSpecNode var4 = new ContentSpecNode();
- this.fDeclPool.getContentSpecNode(var2.value, var3);
- this.fDeclPool.getContentSpecNode(var2.otherValue, var4);
- if (var3.type == 0 && var4.type == 0) {
- return new SimpleContentModel(var3.value, var4.value, var2.type);
- }
- }
-
- return new DFAContentModel(var1, this.fStringPool, this.fDeclPool);
- }
- }
-
- ContentModel getContentModel(int var1) throws CMException {
- ContentModel var2 = this.fDeclPool.getContentModel(var1);
- if (var2 != null) {
- return var2;
- } else {
- int var3 = this.fDeclPool.getContentSpecType(var1);
- if (var3 == 3) {
- var2 = new MixedContentModel(this.fDeclPool, var1);
- } else {
- if (var3 != 4) {
- throw new CMException(152);
- }
-
- var2 = this.createChildModel(var1);
- }
-
- this.fDeclPool.setContentModel(var1, var2);
- return var2;
- }
- }
- }
-