/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.sun.org.apache.xml.internal.security.transforms.implementations;
import com.sun.org.apache.xml.internal.dtm.DTMManager;
import com.sun.org.apache.xml.internal.security.utils.I18n;
import com.sun.org.apache.xpath.internal.CachedXPathAPI;
import com.sun.org.apache.xpath.internal.XPathContext;
import org.w3c.dom.Node;
/**
* {@link FuncHereContext} extends {@link XPathContext} for supplying context
* for the here()
function. The here() function needs to know
* where in an XML instance the XPath text string appeared. This can be
* in {@link org.w3c.dom.Text}, {@link org.w3c.dom.Attr}ibutes and {@ProcessingInstrinction} nodes. The
* correct node must be supplied to the constructor of {@link FuncHereContext}.
* The supplied Node MUST contain the XPath which is to be executed.
*
*
* From: Scott_Boag\@lotus.com * To: Christian Geuer-Pollmann* * @author $Author: mullan $ * @see com.sun.org.apache.xml.internal.security.transforms.implementations.FuncHere * @see com.sun.org.apache.xml.internal.security.utils.XPathFuncHereAPI * @see XML Signature - The here() function */ public class FuncHereContext extends XPathContext { /** * This constuctor is disabled because if we use the here() function we * always need to know in which node the XPath occured. */ private FuncHereContext() {} /** * Constructor FuncHereContext * * @param owner */ public FuncHereContext(Node owner) { super(owner); } /** * Constructor FuncHereContext * * @param owner * @param xpathContext */ public FuncHereContext(Node owner, XPathContext xpathContext) { super(owner); try { super.m_dtmManager = xpathContext.getDTMManager(); } catch (IllegalAccessError iae) { throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0") + " Original message was \"" + iae.getMessage() + "\""); } } /** * Constructor FuncHereContext * * @param owner * @param previouslyUsed */ public FuncHereContext(Node owner, CachedXPathAPI previouslyUsed) { super(owner); try { super.m_dtmManager = previouslyUsed.getXPathContext().getDTMManager(); } catch (IllegalAccessError iae) { throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0") + " Original message was \"" + iae.getMessage() + "\""); } } /** * Constructor FuncHereContext * * @param owner * @param dtmManager */ public FuncHereContext(Node owner, DTMManager dtmManager) { super(owner); try { super.m_dtmManager = dtmManager; } catch (IllegalAccessError iae) { throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0") + " Original message was \"" + iae.getMessage() + "\""); } } }* CC: xalan-dev@xml.apache.org * Subject: Re: Cleanup of XPathContext & definition of XSLTContext * Date: Tue, 21 Aug 2001 18:36:24 -0400 * * > My point is to say to get this baby to run, the XPath must have a * > possibility to retrieve the information where itself occured in a * > document. * * It sounds to me like you have to derive an XMLSigContext from the * XPathContext? * * > and supplied the Node which contains the xpath string as "owner". Question: * > Is this the correct use of the owner object? It works, but I don't know * > whether this is correct from the xalan-philosophy... * * Philosophically it's fine. The owner is the TransformerImpl if XPath is * running under XSLT. If it is not running under XSLT, it can be whatever * you want. * * -scott *