dmitri 02/05/28 17:41:53
Modified: jxpath/src/java/org/apache/commons/jxpath/ri
JXPathContextReferenceImpl.java
Log:
Removed run-time dependency on DOM
Revision Changes Path
1.18 +34 -6
jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java
Index: JXPathContextReferenceImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- JXPathContextReferenceImpl.java 8 May 2002 23:19:31 -0000 1.17
+++ JXPathContextReferenceImpl.java 29 May 2002 00:41:53 -0000 1.18
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java,v
1.17 2002/05/08 23:19:31 dmitri Exp $
- * $Revision: 1.17 $
- * $Date: 2002/05/08 23:19:31 $
+ * $Header:
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/JXPathContextReferenceImpl.java,v
1.18 2002/05/29 00:41:53 dmitri Exp $
+ * $Revision: 1.18 $
+ * $Date: 2002/05/29 00:41:53 $
*
* ====================================================================
* The Apache Software License, Version 1.1
@@ -77,14 +77,13 @@
import org.apache.commons.jxpath.ri.model.beans.CollectionPointerFactory;
import org.apache.commons.jxpath.ri.model.beans.DynamicPointerFactory;
import org.apache.commons.jxpath.ri.model.container.ContainerPointerFactory;
-import org.apache.commons.jxpath.ri.model.dom.DOMPointerFactory;
import org.apache.commons.jxpath.util.TypeUtils;
/**
* The reference implementation of JXPathContext.
*
* @author Dmitri Plotnikov
- * @version $Revision: 1.17 $ $Date: 2002/05/08 23:19:31 $
+ * @version $Revision: 1.18 $ $Date: 2002/05/29 00:41:53 $
*/
public class JXPathContextReferenceImpl extends JXPathContext
{
@@ -100,7 +99,12 @@
nodeFactories.add(new CollectionPointerFactory());
nodeFactories.add(new BeanPointerFactory());
nodeFactories.add(new DynamicPointerFactory());
- nodeFactories.add(new DOMPointerFactory());
+ Object domFactory = allocateConditionally(
+ "org.apache.commons.jxpath.ri.model.dom.DOMPointerFactory",
+ "org.w3c.dom.Node");
+ if (domFactory != null){
+ nodeFactories.add(domFactory);
+ }
nodeFactories.add(new ContainerPointerFactory());
createNodeFactoryArray();
}
@@ -458,5 +462,29 @@
}
throw new JXPathException(
"Undefined function: " + functionName.toString());
+ }
+
+ /**
+ * Checks if existenceCheckClass exists on the class path. If so,
+ * allocates an instance of the specified class, otherwise
+ * returns null.
+ */
+ public static Object allocateConditionally(
+ String className,
+ String existenceCheckClassName){
+ try {
+ try {
+ Class.forName(existenceCheckClassName);
+ }
+ catch (ClassNotFoundException ex){
+ return null;
+ }
+
+ Class cls = Class.forName(className);
+ return cls.newInstance();
+ }
+ catch (Exception ex){
+ throw new JXPathException("Cannot allocate " + className, ex);
+ }
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>