home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.parser;
-
- import java.io.ByteArrayOutputStream;
- import java.io.DataOutputStream;
- import java.io.FilterOutputStream;
- import java.security.MessageDigest;
- import java.util.Hashtable;
- import java.util.Vector;
- import org.w3c.dom.Node;
- import org.w3c.dom.Text;
-
- public class MakeDigestVisitor extends NOOPVisitor implements Visitor {
- protected MessageDigest messageDigest;
-
- public MakeDigestVisitor(MessageDigest var1) {
- this.messageDigest = var1;
- }
-
- public void visitElementPre(TXElement var1) throws Exception {
- if (((Child)var1).getVisitorDigest() != null) {
- throw new ToNextSiblingTraversalException();
- }
- }
-
- public void visitElementPost(TXElement var1) throws Exception {
- if (((Child)var1).getVisitorDigest() == null) {
- synchronized(var1){}
-
- try {
- try {
- ByteArrayOutputStream var4 = new ByteArrayOutputStream();
- DataOutputStream var5 = new DataOutputStream(var4);
- var5.writeInt(1);
- ((FilterOutputStream)var5).write(getExpandedName(var1).getBytes("UnicodeBigUnmarked"));
- var5.write(0);
- var5.write(0);
- if (var1.attributes == null) {
- var5.writeInt(0);
- } else {
- int var6 = var1.attributes.getLength();
- int var7 = 0;
- Hashtable var8 = new Hashtable(var6);
- String[] var9 = new String[var6];
-
- for(int var10 = 0; var10 < var6; ++var10) {
- Node var11 = var1.attributes.item(var10);
- String var12 = var11.getNodeName();
- if (!var12.equals("xmlns") && !var12.startsWith("xmlns:")) {
- String var13 = getExpandedName(var11);
- var8.put(var13, var12);
- var9[var7++] = var13;
- }
- }
-
- var5.writeInt(var7);
- Util.heapSort(var9, var7);
-
- for(int var24 = 0; var24 < var7; ++var24) {
- this.messageDigest.reset();
- TXAttribute var25 = (TXAttribute)var1.getAttributeNode((String)var8.get(var9[var24]));
- this.visitAttributePre(var25);
- ((FilterOutputStream)var5).write(((Child)var25).getVisitorDigest());
- }
- }
-
- Vector var18 = new Vector();
- StringBuffer var19 = new StringBuffer();
-
- for(Child var20 = (Child)((Parent)var1).getFirstWithoutReference(); var20 != null; var20 = (Child)var20.getNextWithoutReference()) {
- byte[] var21 = var20.getVisitorDigest();
- if (var20 instanceof Text) {
- var19.append(var20.getNodeValue());
-
- while(var20.getNextWithoutReference() != null && var20.getNextWithoutReference() instanceof Text) {
- var20 = (Child)var20.getNextWithoutReference();
- var21 = var20.getVisitorDigest();
- var19.append(var20.getNodeValue());
- }
-
- if (var19.length() > 0) {
- TXText var23 = new TXText(var19.toString());
- this.messageDigest.reset();
- this.visitTextPre(var23);
- var21 = ((Child)var23).getVisitorDigest();
- }
-
- var19.setLength(0);
- }
-
- if (var20.getNodeType() != 8) {
- var18.addElement(var21);
- }
- }
-
- var5.writeInt(var18.size());
-
- for(int var22 = 0; var22 < var18.size(); ++var22) {
- ((FilterOutputStream)var5).write((byte[])var18.elementAt(var22));
- }
-
- ((FilterOutputStream)var5).close();
- this.messageDigest.reset();
- ((Child)var1).setVisitorDigest(this.messageDigest.digest(var4.toByteArray()));
- } catch (Exception var16) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#visitElementPost(): " + ((Throwable)var16).toString());
- }
- } catch (Throwable var17) {
- throw var17;
- }
-
- }
- }
-
- public void visitAttributePre(TXAttribute var1) throws Exception {
- if (((Child)var1).getVisitorDigest() == null) {
- String var2 = var1.getNodeName();
- if (!var2.equals("xmlns") && !var2.startsWith("xmlns:")) {
- synchronized(var1){}
-
- try {
- try {
- this.messageDigest.reset();
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)2);
- this.messageDigest.update(getExpandedName(var1).getBytes("UnicodeBigUnmarked"));
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- ((Child)var1).setVisitorDigest(this.messageDigest.digest(var1.getValue().getBytes("UnicodeBigUnmarked")));
- } catch (Exception var8) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#visitAttributePre(): " + ((Throwable)var8).toString());
- }
- } catch (Throwable var9) {
- throw var9;
- }
-
- }
- }
- }
-
- public void visitPIPre(TXPI var1) throws Exception {
- if (((Child)var1).getVisitorDigest() == null) {
- synchronized(var1){}
-
- try {
- try {
- this.messageDigest.reset();
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)7);
- this.messageDigest.update(var1.getNodeName().getBytes("UnicodeBigUnmarked"));
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- ((Child)var1).setVisitorDigest(this.messageDigest.digest(var1.getData().getBytes("UnicodeBigUnmarked")));
- } catch (Exception var7) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#visitPIPre(): " + ((Throwable)var7).toString());
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
- }
-
- public void visitCommentPre(TXComment var1) throws Exception {
- if (((Child)var1).getVisitorDigest() == null) {
- synchronized(var1){}
-
- try {
- try {
- this.messageDigest.reset();
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)8);
- ((Child)var1).setVisitorDigest(this.messageDigest.digest(((TXCharacterData)var1).getData().getBytes("UnicodeBigUnmarked")));
- } catch (Exception var7) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#visitCommentPre(): " + ((Throwable)var7).toString());
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
- }
-
- public void visitTextPre(TXText var1) throws Exception {
- if (((Child)var1).getVisitorDigest() == null) {
- synchronized(var1){}
-
- try {
- try {
- this.messageDigest.reset();
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)0);
- this.messageDigest.update((byte)3);
- ((Child)var1).setVisitorDigest(this.messageDigest.digest(((TXCharacterData)var1).getData().getBytes("UnicodeBigUnmarked")));
- } catch (Exception var7) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#visitTextPre(): " + ((Throwable)var7).toString());
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
- }
-
- public void visitGeneralReferencePre(GeneralReference var1) throws Exception {
- }
-
- public static String getExpandedName(Node var0) {
- Object var1 = null;
- String var8;
- if (var0.getNodeType() == 1) {
- TXDocument var2 = (TXDocument)var0.getOwnerDocument();
- synchronized(var2){}
-
- try {
- String var5 = var2.expandedNameSeparator;
- var2.expandedNameSeparator = ":";
- var8 = ((TXElement)var0).createExpandedName();
- var2.expandedNameSeparator = var5;
- } catch (Throwable var7) {
- throw var7;
- }
- } else {
- if (var0.getNodeType() != 2) {
- throw new LibraryException("com.ibm.xml.parser.MakeDigestVisitor#getExpandedName(): Unsupported node type: " + var0.getNodeType());
- }
-
- String var9 = var0.getNodeName();
- int var3 = var9.indexOf(58);
- if (var3 < 0) {
- var8 = var9;
- } else {
- var8 = ((TXAttribute)var0).getNSName() + ":" + ((TXAttribute)var0).getNSLocalName();
- }
- }
-
- if (var8 != null) {
- var8 = var8.intern();
- }
-
- return var8;
- }
- }
-