X_Application and hybrid XML_Documents

X-Application Version: 3.1.2
Tamino Version : 3.1.1.4
Platform : NT 4.0
WebContainer : Tomcat 4.0.3
JDK Version : 1.3.1_01

i have create a hybrid XML document partly mapped to a MS access db Northwind just for testing.
i have create the standard application out of the schema using X_application generator under TOMCAT 3-3a and then moved the application to TOMCAT4.0.3
search works fine, but when trying to modify a XML doc containing onyl MS access data i get error

999: Application Error! Please contact the X-Application-Team.

Exception Type: ApplicationException

Stacktrace:


ApplicationException: 999: Application Error! Please contact the X-Application-Team.
com.softwareag.xtools.xapplication.common.PreconditionViolation
parameter ‘docId’ must not be null
at com.softwareag.xtools.xapplication.businessdocument.BusinessDocumentPage.findDocument(BusinessDocumentPage.java:318)
at com.softwareag.xtools.xapplication.jsp.taglib.ModuleTag.locateDocument(ModuleTag.java:961)
at com.softwareag.xtools.xapplication.jsp.taglib.ModuleTag.processDocumentAction(ModuleTag.java:482)
at com.softwareag.xtools.xapplication.jsp.taglib.ModuleTag.doStartTagCore(ModuleTag.java:116)
at com.softwareag.xtools.xapplication.jsp.JspTag.doStartTag(JspTag.java:120)
at org.apache.jsp.view$jsp._jspService(view$jsp.java:72)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:429)
at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:495)
at java.lang.Thread.run(Thread.java:484)


does this mean, that X-application can not deal with XML doc’s having no INOID yet?

Hello,

X-Application used the Attribute @ino:id of a document for its identification during a session. This is the default behavior. For native stored documents of Tamino this default behavior works. For documents which are delivered by Tamino but maintained by other databases (Adabas, MS Access), this document id is missing.

What is to do. In this case?

You have to adapt just two methods of the TaminoStore class

getId()

and

getIdQuery()

Instead of using the query ?/doctype[@ino:id=…]? use a query expression which addresses the key values of your application (e.g. ?/northwind[/xyz/abd/@id=?..?]).

The approach becomes more complicate if our are using more than one non-native doctype. Than you have to check the name of the root element and to return the appropriate query expression.

For one of the next versions of X-Application we should provide a better support in this area (e.g. configuration entries, looking for Tamino features which help to identify documents or parts of documents).

Bye,
Christian.