/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* $Id: XPathFilterParameterSpec.java,v 1.4 2005/05/10 16:40:17 mullan Exp $
*/
package javax.xml.crypto.dsig.spec;
import javax.xml.crypto.dsig.Transform;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
Parameters for the
XPath Filtering Transform Algorithm.
The parameters include the XPath expression and an optional Map
of additional namespace prefix mappings. The XML Schema Definition of
the XPath Filtering transform parameters is defined as:
<element name="XPath" type="string"/>
Author: Sean Mullan, JSR 105 Expert Group See Also: Since: 1.6
/**
* Parameters for the <a href="http://www.w3.org/TR/xmldsig-core/#sec-XPath">
* XPath Filtering Transform Algorithm</a>.
* The parameters include the XPath expression and an optional <code>Map</code>
* of additional namespace prefix mappings. The XML Schema Definition of
* the XPath Filtering transform parameters is defined as:
* <pre><code>
* <element name="XPath" type="string"/>
* </code></pre>
*
* @author Sean Mullan
* @author JSR 105 Expert Group
* @since 1.6
* @see Transform
*/
public final class XPathFilterParameterSpec implements TransformParameterSpec {
private String xPath;
private Map nsMap;
Creates an XPathFilterParameterSpec
with the specified
XPath expression.
Params: - xPath – the XPath expression to be evaluated
Throws: - NullPointerException – if
xPath
is null
/**
* Creates an <code>XPathFilterParameterSpec</code> with the specified
* XPath expression.
*
* @param xPath the XPath expression to be evaluated
* @throws NullPointerException if <code>xPath</code> is <code>null</code>
*/
public XPathFilterParameterSpec(String xPath) {
if (xPath == null) {
throw new NullPointerException();
}
this.xPath = xPath;
this.nsMap = Collections.EMPTY_MAP;
}
Creates an XPathFilterParameterSpec
with the specified
XPath expression and namespace map. The map is copied to protect against
subsequent modification.
Params: - xPath – the XPath expression to be evaluated
- namespaceMap – the map of namespace prefixes. Each key is a
namespace prefix
String
that maps to a corresponding
namespace URI String
.
Throws: - NullPointerException – if
xPath
or
namespaceMap
are null
- ClassCastException – if any of the map's keys or entries are not
of type
String
/**
* Creates an <code>XPathFilterParameterSpec</code> with the specified
* XPath expression and namespace map. The map is copied to protect against
* subsequent modification.
*
* @param xPath the XPath expression to be evaluated
* @param namespaceMap the map of namespace prefixes. Each key is a
* namespace prefix <code>String</code> that maps to a corresponding
* namespace URI <code>String</code>.
* @throws NullPointerException if <code>xPath</code> or
* <code>namespaceMap</code> are <code>null</code>
* @throws ClassCastException if any of the map's keys or entries are not
* of type <code>String</code>
*/
public XPathFilterParameterSpec(String xPath, Map namespaceMap) {
if (xPath == null || namespaceMap == null) {
throw new NullPointerException();
}
this.xPath = xPath;
nsMap = new HashMap(namespaceMap);
Iterator entries = nsMap.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry me = (Map.Entry) entries.next();
if (!(me.getKey() instanceof String) ||
!(me.getValue() instanceof String)) {
throw new ClassCastException("not a String");
}
}
nsMap = Collections.unmodifiableMap(nsMap);
}
Returns the XPath expression to be evaluated.
Returns: the XPath expression to be evaluated
/**
* Returns the XPath expression to be evaluated.
*
* @return the XPath expression to be evaluated
*/
public String getXPath() {
return xPath;
}
Returns a map of namespace prefixes. Each key is a namespace prefix
String
that maps to a corresponding namespace URI
String
.
This implementation returns an
unmodifiable map
.
Returns: a Map
of namespace prefixes to namespace URIs (may
be empty, but never null
)
/**
* Returns a map of namespace prefixes. Each key is a namespace prefix
* <code>String</code> that maps to a corresponding namespace URI
* <code>String</code>.
* <p>
* This implementation returns an {@link Collections#unmodifiableMap
* unmodifiable map}.
*
* @return a <code>Map</code> of namespace prefixes to namespace URIs (may
* be empty, but never <code>null</code>)
*/
public Map getNamespaceMap() {
return nsMap;
}
}