home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.parsers;
-
- import com.ibm.xml.dom.TextImpl;
- import com.ibm.xml.framework.ElementDeclPool;
- import com.ibm.xml.framework.ParserState;
- import com.ibm.xml.framework.StringPool;
- import com.ibm.xml.framework.XMLParser;
- import com.ibm.xml.framework.XMLValidationHandler;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
-
- public class RevalidatingDOMParser extends DOMParser {
- private static final boolean DEBUG_VALIDATE = false;
-
- public final Node validate(Node var1) {
- if (var1.getNodeType() != 1) {
- throw new IllegalArgumentException("Can't revalidate a non element");
- } else {
- XMLValidationHandler var2 = ((XMLParser)this).getValidationHandler();
- ParserState var3 = ((XMLParser)this).getParserState();
- StringPool var4 = var3.getStringPool();
- ElementDeclPool var5 = var3.getElementDeclPool();
- return this.recursiveValidate(var1, var2, var4, var5);
- }
- }
-
- private final Node recursiveValidate(Node var1, XMLValidationHandler var2, StringPool var3, ElementDeclPool var4) {
- int[] var5 = new int[this.countChildren(var1)];
- Node[] var6 = new Node[var5.length];
- int var7 = this.expandChildren(var1, var5, var6, 0, var3);
- int var8 = -1;
- int var9 = var3.addSymbol(var1.getNodeName());
- int var10 = var4.getElement(var9);
-
- try {
- var8 = var2.checkContent(var10, var7, var5);
- } catch (Exception var16) {
- }
-
- Node var11 = null;
- if (var8 != -1) {
- var11 = var6[var8];
- String var12 = var4.getContentSpecAsString(var10);
- int var13 = var3.addString(var12);
- int var14 = var8 != var7 ? 27 : 164;
-
- try {
- ((XMLParser)this).getParserState().getErrorHandler().error2(var14, var9, var13);
- } catch (Exception var15) {
- }
- } else {
- for(int var19 = 0; var19 < var7; ++var19) {
- if (var5[var19] != -1) {
- Node var20 = var6[var19];
- if (var20 != null) {
- var20 = this.recursiveValidate(var20, var2, var3, var4);
- if (var20 != null) {
- var11 = var20;
- break;
- }
- }
- }
- }
- }
-
- Object var17 = null;
- Object var18 = null;
- return var11;
- }
-
- private final int expandChildren(Node var1, int[] var2, Node[] var3, int var4, StringPool var5) {
- if (var1.hasChildNodes()) {
- NodeList var6 = var1.getChildNodes();
- int var7 = var6.getLength();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- Node var9 = var6.item(var8);
- short var10 = var9.getNodeType();
- if (var10 == 1) {
- var2[var4] = var5.addSymbol(var9.getNodeName());
- var3[var4] = var9;
- ++var4;
- } else if (var10 == 3) {
- if (!(var9 instanceof TextImpl) || !((TextImpl)var9).isIgnorableWhitespace()) {
- var2[var4] = -1;
- var3[var4] = var9;
- ++var4;
- }
- } else if (var10 == 5) {
- var4 = this.expandChildren(var9, var2, var3, var4, var5);
- }
- }
- }
-
- return var4;
- }
-
- private final int countChildren(Node var1) {
- int var2 = 0;
- if (var1.hasChildNodes()) {
- NodeList var3 = var1.getChildNodes();
- var2 += var3.getLength();
-
- for(int var4 = var2 - 1; var4 >= 0; --var4) {
- Node var5 = var3.item(var4);
- if (var5.getNodeType() == 5) {
- var2 += this.countChildren(var5) - 1;
- }
- }
- }
-
- return var2;
- }
-
- private static void print(Node var0, String var1) {
- }
-
- private static String normalize(String var0) {
- return null;
- }
-
- private static String type(int var0) {
- return null;
- }
- }
-