Java 类javax.xml.crypto.NodeSetData 实例源码

项目:xmlsec-gost    文件:TestUtils.java   
public Data dereference(URIReference ref, XMLCryptoContext ctxt) {
    return new NodeSetData() {
        public Iterator<Node> iterator() {
            return Collections.singletonList(data).iterator();
        }
    };
}
项目:xmlsec-gost    文件:DOMRetrievalMethod.java   
@Override
public Data dereference(XMLCryptoContext context)
    throws URIReferenceException
{
    if (context == null) {
        throw new NullPointerException("context cannot be null");
    }

    /*
     * If URIDereferencer is specified in context; use it, otherwise use
     * built-in.
     */
    URIDereferencer deref = context.getURIDereferencer();
    if (deref == null) {
        deref = DOMURIDereferencer.INSTANCE;
    }

    Data data = deref.dereference(this, context);

    // pass dereferenced data through Transforms
    try {
        for (Transform transform : transforms) {
            data = transform.transform(data, context);
        }
    } catch (Exception e) {
        throw new URIReferenceException(e);
    }

    // guard against RetrievalMethod loops
    if (data instanceof NodeSetData && Utils.secureValidation(context)) {
        NodeSetData nsd = (NodeSetData)data;
        Iterator<?> i = nsd.iterator();
        if (i.hasNext()) {
            Node root = (Node)i.next();
            if ("RetrievalMethod".equals(root.getLocalName())) {
                throw new URIReferenceException(
                    "It is forbidden to have one RetrievalMethod point " +
                    "to another when secure validation is enabled");
            }
        }
    }

    return data;
}