[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlbeans-dev
Subject: [jira] [Created] (XMLBEANS-473) XML "dateTime" type issue with JDBC
From: "Sunil Polineni (Created) (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date: 2011-12-20 20:23:30
Message-ID: 940740730.32298.1324412610726.JavaMail.tomcat () hel ! zones ! apache ! org
[Download RAW message or body]
XML "dateTime" type issue with JDBC Control
-------------------------------------------
Key: XMLBEANS-473
URL: https://issues.apache.org/jira/browse/XMLBEANS-473
Project: XMLBeans
Issue Type: Bug
Components: XmlObject
Affects Versions: Version 2.2
Reporter: Sunil Polineni
This issue happens when you define a database control method which SELECTs data and \
returns an XML Bean document. If one of the selected columns in your XML schema is of \
type "dateTime", then the XML text that is returned is missing the required "T" time \
separator character. Therefore, any subsequent attempts to call the getters on the \
resulting XML Bean document object (which normally should return java.util.Calendar \
objects) results in exceptions.
@JdbcControl.SQL(statement="SELECT THE_ID as \"theId\", THE_DATE as \"theDate\" FROM \
JDBC_TEST WHERE THE_ID = {id}") XJdbcTestDocument runJdbcTest(String id) throws \
SQLException;
XJdbcTestDocument is generated from the below xml file
=========================================
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="java:///JdbcTestXMLSchema"
xmlns:tns="http://www.example.org/JdbcTestXMLSchema"
elementFormDefault="qualified">
<element name="XJdbcTest">
<complexType>
<choice maxOccurs="unbounded">
<element name="XJdbcTestRow">
<complexType>
<sequence>
<element name="theId" type="string" minOccurs="0"/>
<element name="theDate" type="dateTime" minOccurs="0" \
nillable="true"/> </sequence>
</complexType>
</element>
</choice>
</complexType>
</element>
</schema>
=============================================
The <xml-fragment>1998-05-31 00:00:00.0</xml-fragment> is missing "T" it should be \
<xml-fragment>1998-05-31T00:00:00.0</xml-fragment> when this is being returned by a \
JDB Control and getting below exception
javax.el.ELException: org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: \
Invalid date value: 1998-05-31 00:00:00.0 at \
javax.el.BeanELResolver.getValue(BeanELResolver.java:266) at \
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143) at \
com.sun.el.parser.AstValue.getValue(AstValue.java:118) at \
com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192) at \
weblogic.servlet.jsp.ELHelper.evaluate(ELHelper.java:32) at \
jsp_servlet.__jdbcresults._jspService(__jdbcresults.java:205)
I think When JDBC Control maps result set to XML, it by default uses SQL object's \
toString() method to convert from SQL object to String.
To override/customize this behavior we can use ResultSetMapper
http://beehive.apache.org/docs/1.0.1/system-controls/jdbc/apidocs/javadoc/org/apache/beehive/controls/system/jdbc/ResultSetMapper.html
but this requires some good amount change in the code.
Can you please advise whether if there is any other alternative?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: \
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more \
information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic