hi ingomar
I am implementing a primitive replication based on XMLImport/Export on 2.2.10.Having written nodes into a Repo using Session.importXML I get the following exception when accessing any document through WebDav: java.io.IOException: not a long: 2011-12-20T09:24:30.608+01:00 org.apache.jackrabbit.server.io.DefaultHandler.exportProperties(DefaultHandler.java:497) org.apache.jackrabbit.server.io.DefaultHandler.exportContent(DefaultHandler.java:399) org.apache.jackrabbit.server.io.DefaultHandler.exportContent(DefaultHandler.java:421) org.apache.jackrabbit.server.io.IOManagerImpl.exportContent(IOManagerImpl.java:177) org.apache.jackrabbit.webdav.simple.DavResourceImpl.spool(DavResourceImpl.java:282) org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.spoolResource(AbstractWebdavServlet.java:507) org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doGet(AbstractWebdavServlet.java:473) org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.execute(AbstractWebdavServlet.java:314) org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:263) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) I looked at DefaultHandler, this seems to try to interpret "jcr:created" as Long: protected void exportProperties(ExportContext context, boolean isCollection, Node contentNode) throws IOException { try { // only non-collections: 'jcr:created' is present on the parent 'fileNode' only if (!isCollection&& contentNode.getDepth()> 0&& contentNode.getParent().hasProperty(JcrConstants.JCR_CREATED)) { long cTime = contentNode.getParent().getProperty(JcrConstants.JCR_CREATED).getValue().getLong(); jcr:created is defined as date.
properties of type DATE should be converted to long. but the conversion might fail. JCR specification section "3.6.4.3 From DATE To" states for conversion to LONG: "LONG: The date is converted to the number of milliseconds since 00:00 (UTC) 1 January 1970 (1970-01-01T00:00:00.000Z). If this number is out-of-range for a long, a ValueFormatException is thrown."
Where is the problem? Parsing the value? The value itself?
so, either the property is of some other type that cannot be converted to LONG here (that might happen if it gets set to an unstructured node without specifying the desired type) or the value is out-of-range as stated above. however, i would argue that defaulthandler should be prepared for that and either omit the jcr:created property or add some default value instead of throwing an exception... the same is btw true for the jcr:lastmodified. can you please create a issue in JIRA for that? thanks. angela
Cheers, Ingomar
