[jboss-cvs] JBossAS SVN: r111107 - projects/specs/trunk/jboss-jstl-api_1.2_spec/src/main/java/org/apache/taglibs/standard/tag/common/xml.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 6 00:39:04 EDT 2011
Author: jason.greene at jboss.com
Date: 2011-04-06 00:39:04 -0400 (Wed, 06 Apr 2011)
New Revision: 111107
Modified:
projects/specs/trunk/jboss-jstl-api_1.2_spec/src/main/java/org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.java
Log:
Remove dep on internal JDK class
Modified: projects/specs/trunk/jboss-jstl-api_1.2_spec/src/main/java/org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.java
===================================================================
--- projects/specs/trunk/jboss-jstl-api_1.2_spec/src/main/java/org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.java 2011-04-06 04:10:11 UTC (rev 111106)
+++ projects/specs/trunk/jboss-jstl-api_1.2_spec/src/main/java/org/apache/taglibs/standard/tag/common/xml/JSTLXPathFactory.java 2011-04-06 04:39:04 UTC (rev 111107)
@@ -58,7 +58,12 @@
package org.apache.taglibs.standard.tag.common.xml;
-import com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl;
+import javax.xml.xpath.XPathFactory;
+import javax.xml.xpath.XPathFactoryConfigurationException;
+import javax.xml.xpath.XPathFunctionResolver;
+import javax.xml.xpath.XPathVariableResolver;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
/**
* This factory class is added to provide access to our own implementation
@@ -67,9 +72,74 @@
*
* @author dhirup
*/
-public class JSTLXPathFactory extends XPathFactoryImpl {
-
+public class JSTLXPathFactory extends XPathFactory {
+
+ private XPathFactory actual;
+
+ public JSTLXPathFactory() {
+
+ ClassLoader old = getContextClassLoader();
+ try {
+ // Use the defining class loader
+ setContextClassLoader(JSTLXPathFactory.class.getClassLoader());
+ actual = XPathFactory.newInstance();
+ } finally {
+ setContextClassLoader(old);
+ }
+
+ if (actual == null)
+ throw new IllegalStateException("Could not load default XPathFactory");
+ }
+
+ private static ClassLoader getContextClassLoader() {
+ return (ClassLoader)
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader cl = null;
+ try {
+ cl = Thread.currentThread().getContextClassLoader();
+ } catch (SecurityException eat) {
+ }
+ return cl;
+ }
+ });
+ }
+
+ private static void setContextClassLoader(ClassLoader cl) {
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ClassLoader cl = null;
+ try {
+ Thread.currentThread().setContextClassLoader(cl);
+ } catch (SecurityException eat) {
+ }
+
+ return null;
+ }
+ });
+ }
+
public javax.xml.xpath.XPath newXPath() {
return new org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl(null, null);
- }
+ }
+
+ public boolean isObjectModelSupported(String objectModel) {
+ return actual.isObjectModelSupported(objectModel);
+ }
+
+ public void setFeature(String name, boolean value) throws XPathFactoryConfigurationException {
+ actual.setFeature(name, value);
+ }
+
+ public boolean getFeature(String name) throws XPathFactoryConfigurationException {
+ return actual.getFeature(name);
+ }
+
+ public void setXPathVariableResolver(XPathVariableResolver resolver) {
+ actual.setXPathVariableResolver(resolver);
+ }
+
+ public void setXPathFunctionResolver(XPathFunctionResolver resolver) {
+ actual.setXPathFunctionResolver(resolver);
+ }
}
More information about the jboss-cvs-commits
mailing list