FileDocCategorySizeDatePackage
CanonicalizerSpi.javaAPI DocJava SE 6 API5942Tue Jun 10 00:23:00 BST 2008com.sun.org.apache.xml.internal.security.c14n

CanonicalizerSpi

public abstract class CanonicalizerSpi extends Object
Base class which all Caninicalization algorithms extend. $todo$ cange JavaDoc
author
Christian Geuer-Pollmann

Fields Summary
protected boolean
reset
Reset the writter after a c14n
Constructors Summary
Methods Summary
public byte[]engineCanonicalize(byte[] inputBytes)
Method canonicalize

param
inputBytes
return
the c14n bytes.
throws
CanonicalizationException
throws
java.io.IOException
throws
javax.xml.parsers.ParserConfigurationException
throws
org.xml.sax.SAXException


      java.io.ByteArrayInputStream bais = new ByteArrayInputStream(inputBytes);
      InputSource in = new InputSource(bais);
      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();

      // needs to validate for ID attribute nomalization
      dfactory.setNamespaceAware(true);

      DocumentBuilder db = dfactory.newDocumentBuilder();

      /*
       * for some of the test vectors from the specification,
       * there has to be a validatin parser for ID attributes, default
       * attribute values, NMTOKENS, etc.
       * Unfortunaltely, the test vectors do use different DTDs or
       * even no DTD. So Xerces 1.3.1 fires many warnings about using
       * ErrorHandlers.
       *
       * Text from the spec:
       *
       * The input octet stream MUST contain a well-formed XML document,
       * but the input need not be validated. However, the attribute
       * value normalization and entity reference resolution MUST be
       * performed in accordance with the behaviors of a validating
       * XML processor. As well, nodes for default attributes (declared
       * in the ATTLIST with an AttValue but not specified) are created
       * in each element. Thus, the declarations in the document type
       * declaration are used to help create the canonical form, even
       * though the document type declaration is not retained in the
       * canonical form.
       *
       */

      // ErrorHandler eh = new C14NErrorHandler();
      // db.setErrorHandler(eh);
      Document document = db.parse(in);
      byte result[] = this.engineCanonicalizeSubTree(document);
      return result;
   
public abstract byte[]engineCanonicalizeSubTree(org.w3c.dom.Node rootNode)
C14n a node tree.

param
rootNode
return
the c14n bytes
throws
CanonicalizationException

public abstract byte[]engineCanonicalizeSubTree(org.w3c.dom.Node rootNode, java.lang.String inclusiveNamespaces)
C14n a node tree.

param
rootNode
param
inclusiveNamespaces
return
the c14n bytes
throws
CanonicalizationException

public byte[]engineCanonicalizeXPathNodeSet(org.w3c.dom.NodeList xpathNodeSet)
Method engineCanonicalizeXPathNodeSet

param
xpathNodeSet
return
the c14n bytes
throws
CanonicalizationException


      return this
         .engineCanonicalizeXPathNodeSet(XMLUtils
            .convertNodelistToSet(xpathNodeSet));
   
public byte[]engineCanonicalizeXPathNodeSet(org.w3c.dom.NodeList xpathNodeSet, java.lang.String inclusiveNamespaces)
Method engineCanonicalizeXPathNodeSet

param
xpathNodeSet
param
inclusiveNamespaces
return
the c14n bytes
throws
CanonicalizationException


      return this
         .engineCanonicalizeXPathNodeSet(XMLUtils
            .convertNodelistToSet(xpathNodeSet), inclusiveNamespaces);
   
public abstract byte[]engineCanonicalizeXPathNodeSet(java.util.Set xpathNodeSet)
C14n a nodeset

param
xpathNodeSet
return
the c14n bytes
throws
CanonicalizationException

public abstract byte[]engineCanonicalizeXPathNodeSet(java.util.Set xpathNodeSet, java.lang.String inclusiveNamespaces)
C14n a nodeset

param
xpathNodeSet
param
inclusiveNamespaces
return
the c14n bytes
throws
CanonicalizationException

public abstract booleanengineGetIncludeComments()
Returns the URI if include comments

return
true if include.

public abstract java.lang.StringengineGetURI()
Returns the URI of this engine.

return
the URI

public abstract voidsetWriter(java.io.OutputStream os)
Sets the writter where the cannocalization ends. ByteArrayOutputStream if none is setted.

param
os