Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Malformed xsd:dateTime values causing 500 responses in JSON Renderer #94

Open
skwlilac opened this issue Sep 30, 2014 · 0 comments
Open

Comments

@skwlilac
Copy link
Contributor

Malformed xsd:dateTime literals (such as below with only date fields) in elda result data causes the JSON renderer to thow excceptions and issue a 5xx response (stacktrace below).

 "2014-09-30"^^xsd:dateTime

XML, RDF(.ttl, .rdf and .nt) renderers pass-on the broken literal, but the JSON renderered raises an exception. In response to an similar problem with dateTime literals being mis-typed as xsd:date values the JSON renderer was made more forgiving of the error. ie. elda will render literal values of the form:

"2014-09-30T22:00:00"^^xsd:date

as a date using just the date part.

Elda is inconsistent in its treatment of literal values that whose lexicalForm are inconsistent with their datatyping. Generally it passes them through as received except in the case of date/dateTime values rendered as JSON.

2014-41-30 06:41:39.461  INFO [http-80-2] (RouterRestlet.java:324) - handling request http://localhost/anything.json
2014-41-30 06:41:39.482  WARN [http-80-2] (ErrorHandlerFactory.java:77) - [line: 16, col: 32] Lexical form '2013-10-03' not valid for datatype http://www.w3.org/2001/XMLSchema#dateTime
2014-41-30 06:41:39.502  INFO [http-80-2] (RouterRestlet.java:408) - rendering with formatter application/json
2014-41-30 06:41:39.542 ERROR [http-80-2] (JSONRenderer.java:89) - Failed to encode model: stacktrace follows:
com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2013-10-03' is not a valid value for 'dateTime'.
    at com.hp.hpl.jena.graph.impl.LiteralLabelImpl.getValue(LiteralLabelImpl.java:326)
    at com.hp.hpl.jena.graph.Node_Literal.getLiteralValue(Node_Literal.java:39)
    at com.hp.hpl.jena.rdf.model.impl.LiteralImpl.getValue(LiteralImpl.java:98)
    at com.epimorphics.jsonrdf.RDFUtil.getTemporalValue(RDFUtil.java:175)
    at com.epimorphics.jsonrdf.RDFUtil.formatDateTime(RDFUtil.java:154)
    at com.epimorphics.jsonrdf.impl.EncoderDefault.encodeLiteral(EncoderDefault.java:139)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:580)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.writePropertyValues(Encoder.java:557)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeResource(Encoder.java:522)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:496)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:606)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:588)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.writePropertyValues(Encoder.java:557)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeResource(Encoder.java:522)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:496)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:440)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeSingleModelRoots(Encoder.java:330)
    at com.epimorphics.jsonrdf.Encoder.encodeRecursive(Encoder.java:217)
    at com.epimorphics.jsonrdf.Encoder.encodeRecursive(Encoder.java:186)
    at com.epimorphics.lda.renderers.JSONRenderer.render(JSONRenderer.java:85)
    at com.epimorphics.lda.restlets.RouterRestlet.runEndpoint(RouterRestlet.java:410)
    at com.epimorphics.lda.restlets.RouterRestlet.requestHandler(RouterRestlet.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:745)
2014-41-30 06:41:39.572 ERROR [http-80-2] (RouterRestlet.java:443) - General failure: com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2013-10-03' is not a valid value for 'dateTime'.
com.hp.hpl.jena.shared.WrappedException: com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2013-10-03' is not a valid value for 'dateTime'.
    at com.epimorphics.lda.renderers.JSONRenderer.render(JSONRenderer.java:90)
    at com.epimorphics.lda.restlets.RouterRestlet.runEndpoint(RouterRestlet.java:410)
    at com.epimorphics.lda.restlets.RouterRestlet.requestHandler(RouterRestlet.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2013-10-03' is not a valid value for 'dateTime'.
    at com.hp.hpl.jena.graph.impl.LiteralLabelImpl.getValue(LiteralLabelImpl.java:326)
    at com.hp.hpl.jena.graph.Node_Literal.getLiteralValue(Node_Literal.java:39)
    at com.hp.hpl.jena.rdf.model.impl.LiteralImpl.getValue(LiteralImpl.java:98)
    at com.epimorphics.jsonrdf.RDFUtil.getTemporalValue(RDFUtil.java:175)
    at com.epimorphics.jsonrdf.RDFUtil.formatDateTime(RDFUtil.java:154)
    at com.epimorphics.jsonrdf.impl.EncoderDefault.encodeLiteral(EncoderDefault.java:139)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:580)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.writePropertyValues(Encoder.java:557)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeResource(Encoder.java:522)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:496)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:606)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.emitNode(Encoder.java:588)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.writePropertyValues(Encoder.java:557)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeResource(Encoder.java:522)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:496)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encode(Encoder.java:440)
    at com.epimorphics.jsonrdf.Encoder$EncoderInstance.encodeSingleModelRoots(Encoder.java:330)
    at com.epimorphics.jsonrdf.Encoder.encodeRecursive(Encoder.java:217)
    at com.epimorphics.jsonrdf.Encoder.encodeRecursive(Encoder.java:186)
    at com.epimorphics.lda.renderers.JSONRenderer.render(JSONRenderer.java:85)
    ... 39 more
2014-41-30 06:41:39.592 ERROR [http-80-2] (RouterRestlet.java:532) - Exception: com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2013-10-03' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2013-10-03' is not a valid value for 'dateTime'. 
@skwlilac skwlilac changed the title Malformed xsd:dateTime values causing 500 responses Malformed xsd:dateTime values causing 500 responses in JSON Renderer Sep 30, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant