All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xpath.jaxp.XPathFactoryImpl Maven / Gradle / Ivy

There is a newer version: 1.2.0.3-jre17-rc1
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you 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.
 */
// $Id: XPathFactoryImpl.java 1225277 2011-12-28 18:50:56Z mrglavas $

package org.apache.xpath.jaxp;

import org.apache.xpath.res.XPATHErrorResources;
import org.apache.xalan.res.XSLMessages;

import javax.xml.XMLConstants;
import javax.xml.xpath.XPathFactory;
import javax.xml.xpath.XPathFactoryConfigurationException;
import javax.xml.xpath.XPathFunctionResolver;
import javax.xml.xpath.XPathVariableResolver;

/**
 * The XPathFactory builds XPaths.
 *
 * @version $Revision: 1225277 $
 * @author  Ramesh Mandava
 */
public class XPathFactoryImpl extends XPathFactory {
	
	/**
	 * 

Name of class as a constant to use for debugging.

*/ private static final String CLASS_NAME = "XPathFactoryImpl"; /** *

XPathFunctionResolver for this XPathFactory and created XPaths.

*/ private XPathFunctionResolver xPathFunctionResolver = null; /** *

XPathVariableResolver for this XPathFactory and created XPaths

*/ private XPathVariableResolver xPathVariableResolver = null; /** *

State of secure processing feature.

*/ private boolean featureSecureProcessing = false; /** *

Is specified object model supported by this * XPathFactory?

* * @param objectModel Specifies the object model which the returned * XPathFactory will understand. * * @return true if XPathFactory supports * objectModel, else false. * * @throws NullPointerException If objectModel is null. * @throws IllegalArgumentException If objectModel.length() == 0. */ public boolean isObjectModelSupported(String objectModel) { if (objectModel == null) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_OBJECT_MODEL_NULL, new Object[] { this.getClass().getName() } ); throw new NullPointerException( fmsg ); } if (objectModel.length() == 0) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_OBJECT_MODEL_EMPTY, new Object[] { this.getClass().getName() } ); throw new IllegalArgumentException( fmsg ); } // know how to support default object model, W3C DOM if (objectModel.equals(XPathFactory.DEFAULT_OBJECT_MODEL_URI)) { return true; } // don't know how to support anything else return false; } /** *

Returns a new XPath object using the underlying * object model determined when the factory was instantiated.

* * @return New XPath */ public javax.xml.xpath.XPath newXPath() { return new org.apache.xpath.jaxp.XPathImpl( xPathVariableResolver, xPathFunctionResolver, featureSecureProcessing ); } /** *

Set a feature for this XPathFactory and * XPaths created by this factory.

* *

* Feature names are fully qualified {@link java.net.URI}s. * Implementations may define their own features. * An {@link XPathFactoryConfigurationException} is thrown if this * XPathFactory or the XPaths * it creates cannot support the feature. * It is possible for an XPathFactory to expose a feature * value but be unable to change its state. *

* *

See {@link javax.xml.xpath.XPathFactory} for full documentation * of specific features.

* * @param name Feature name. * @param value Is feature state true or false. * * @throws XPathFactoryConfigurationException if this * XPathFactory or the XPaths * it creates cannot support this feature. * @throws NullPointerException if name is * null. */ public void setFeature(String name, boolean value) throws XPathFactoryConfigurationException { // feature name cannot be null if (name == null) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_FEATURE_NAME_NULL, new Object[] { CLASS_NAME, value ? Boolean.TRUE : Boolean.FALSE } ); throw new NullPointerException( fmsg ); } // secure processing? if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) { featureSecureProcessing = value; // all done processing feature return; } // unknown feature String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_FEATURE_UNKNOWN, new Object[] { name, CLASS_NAME, value ? Boolean.TRUE : Boolean.FALSE } ); throw new XPathFactoryConfigurationException( fmsg ); } /** *

Get the state of the named feature.

* *

* Feature names are fully qualified {@link java.net.URI}s. * Implementations may define their own features. * An {@link XPathFactoryConfigurationException} is thrown if this * XPathFactory or the XPaths * it creates cannot support the feature. * It is possible for an XPathFactory to expose a feature * value but be unable to change its state. *

* * @param name Feature name. * * @return State of the named feature. * * @throws XPathFactoryConfigurationException if this * XPathFactory or the XPaths * it creates cannot support this feature. * @throws NullPointerException if name is * null. */ public boolean getFeature(String name) throws XPathFactoryConfigurationException { // feature name cannot be null if (name == null) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_GETTING_NULL_FEATURE, new Object[] { CLASS_NAME } ); throw new NullPointerException( fmsg ); } // secure processing? if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) { return featureSecureProcessing; } // unknown feature String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_GETTING_UNKNOWN_FEATURE, new Object[] { name, CLASS_NAME } ); throw new XPathFactoryConfigurationException( fmsg ); } /** *

Establish a default function resolver.

* *

Any XPath objects constructed from this factory will use * the specified resolver by default.

* *

A NullPointerException is thrown if * resolver is null.

* * @param resolver XPath function resolver. * * @throws NullPointerException If resolver is * null. */ public void setXPathFunctionResolver(XPathFunctionResolver resolver) { // resolver cannot be null if (resolver == null) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_NULL_XPATH_FUNCTION_RESOLVER, new Object[] { CLASS_NAME } ); throw new NullPointerException( fmsg ); } xPathFunctionResolver = resolver; } /** *

Establish a default variable resolver.

* *

Any XPath objects constructed from this factory will use * the specified resolver by default.

* *

A NullPointerException is thrown if resolver is null.

* * @param resolver Variable resolver. * * @throws NullPointerException If resolver is * null. */ public void setXPathVariableResolver(XPathVariableResolver resolver) { // resolver cannot be null if (resolver == null) { String fmsg = XSLMessages.createXPATHMessage( XPATHErrorResources.ER_NULL_XPATH_VARIABLE_RESOLVER, new Object[] { CLASS_NAME } ); throw new NullPointerException( fmsg ); } xPathVariableResolver = resolver; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy