Hi,
We are using xalan for xpath search.
The following error occurs when the code uses XPath to find the actionclass for
a given
page id and even id
//FRACAS/PAGEID[VALUE='1']/EVENTID[VALUE='1']/ACTIONCLASS
This error occurs occasionally(randomly).
2003-12-05 16:18:30,723 [ExecuteThread: '1' for queue: 'default'] DEBUG
com.gepower.ps.eps - Inside getActionBean in ActionFactory.
2003-12-05 16:18:30,724 [ExecuteThread: '1' for queue: 'default'] DEBUG
com.gepower.ps.eps - Inside getActionConfig in ActionConfig. Retrieving Action
config for module : FRACAS
2003-12-05 16:18:30,724 [ExecuteThread: '1' for queue: 'default'] DEBUG
com.gepower.ps.eps - Using Xpath ===>
//FRACAS/PAGEID[VALUE='1']/EVENTID[VALUE='1']/ACTIONCLASS
2003-12-05 16:18:30,727 [ExecuteThread: '1' for queue: 'default'] WARN
com.gepower.ps.eps - Severity=3 ErrorCode=EPS0000 Message=Configuration
error.. java.lang.NullPointerException
at org.apache.xpath.DOMHelper.getLocalNameOfNode(DOMHelper.java:818)
at org.apache.xpath.DOM2Helper.getLocalNameOfNode(DOM2Helper.java:328)
at org.apache.xpath.patterns.NodeTest.execute(NodeTest.java:488)
at
org.apache.xpath.axes.PredicatedNodeTest.acceptNode(PredicatedNodeTest.java:388)
at org.apache.xpath.axes.AxesWalker.nextNode(AxesWalker.java:1165)
at
org.apache.xpath.axes.LocPathIterator.nextNode(LocPathIterator.java:689)
at org.apache.xpath.XPathAPI.selectSingleNode(XPathAPI.java:123)
at org.apache.xpath.XPathAPI.selectSingleNode(XPathAPI.java:100)
at com.gepower.ps.eps.framework.ActionFactory.getActionBean(Unknown
Source)
at com.gepower.ps.eps.framework.GenericModule.getActionBean(Unknown
Source)
at com.gepower.ps.eps.framework.GenericModule.doProcess(Unknown Source)
at
com.gepower.ps.eps.fracas.FracasRequestCmd.perform(FracasRequestCmd.java:57)
at
com.ge.dialect.cb.DefaultController.processInteraction(DefaultController.java:776)
at
The xml document being searched for is given below
--------------------------------------------------
<?xml version="1.0"?>
<FRACAS>
<PAGEID>
<VALUE>1</VALUE>
<EVENTID>
<VALUE>1</VALUE>
<ACTIONCLASS>com.gepower.ps.eps.fracas.FracasAct</ACTIONCLASS>
<XSLNAME>FracasHome.xsl</XSLNAME>
</EVENTID>
</PAGEID>
<PAGEID>
<VALUE>2</VALUE>
<EVENTID>
<VALUE>1</VALUE>
<ACTIONCLASS>com.gepower.ps.eps.fracas.FracasAct</ACTIONCLASS>
<XSLNAME>FracasCollect.xsl</XSLNAME>
</EVENTID>
</PAGEID>
<PAGEID>
<VALUE>3</VALUE>
<EVENTID>
<VALUE>1</VALUE>
<ACTIONCLASS>com.gepower.ps.eps.fracas.FracasAct</ACTIONCLASS>
<XSLNAME>FracasDownLoad.xsl</XSLNAME>
</EVENTID>
</PAGEID>
</FRACAS>
The code fragment where the exception occurs is given below
-----------------------------------------------------------
ActionConfig.getActionConfig(inputBean.get_moduleName()) returns the
cached
Document object.
The application is a web based application running on weblogic6.1.
XPathAPI.selectSingleNode(doc, xpathStrClassName); //****Error occurs
here****/
------------------------------------------------------------------------------
public static AbsAction getActionBean(GenericInputBean inputBean)
throws EPSException {
EPSLogger.debug("Inside getActionBean in ActionFactory.");
Document doc =
ActionConfig.getActionConfig(inputBean.get_moduleName());
if (doc != null) {
String sModuleName = inputBean.get_moduleName();
int iPageId = inputBean.get_pageId();
int iEventId = inputBean.get_eventId();
// parse the xml file for the iPageId, evenid and get
the
//<CLASSNAME> node data from the document
//Using XPath
StringBuffer sbXpathClassName = new
StringBuffer(Constants.SBSIZE);
sbXpathClassName.append("//");
sbXpathClassName.append(sModuleName.toUpperCase());
sbXpathClassName.append("/PAGEID[VALUE='" + iPageId +
"']");
sbXpathClassName.append(
"/EVENTID[VALUE='" + iEventId +
"']/ACTIONCLASS");
String xpathStrClassName = sbXpathClassName.toString();
EPSLogger.debug("Using Xpath ===> " +
xpathStrClassName);
try {
// Get the matching elements
Node classNameNode =
XPathAPI.selectSingleNode(doc,
xpathStrClassName); //****Error occurs here****/
String className =
classNameNode.getFirstChild().getNodeValue();
/* if (className == null) {
throw new Exception("Classname
not found.");
}*/
EPSLogger.debug(
"In ActionFactory loading class ===> "
+ className);
Class cdaClass = Class.forName(className);
We need a solution very urgently.
Thanks in advance.
prabhakar a j