@Test public void testXml() throws Exception { QueryRegistry queryRegistry = SampleData.createFetchQuery(); FetchQuery query = (FetchQuery) queryRegistry.getQuery(); assertEquals(Timestamp.Precision.YEAR, query.getCreationTime().getFrom().getPrecision()); query.getCreationTime().getFrom().setPrecision(null); Element element = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument().createElement("dummy"); JAXBContext jaxbContext = JAXBContext.newInstance(QueryRegistry.class); jaxbContext.createMarshaller().marshal(query, element); String s = new String(XmlUtils.serialize(element.getFirstChild())); assertTrue(s.contains("<xds:from dateTime=\"1980-01-01T00:00:00Z\"/>")); assertTrue(s.contains("<xds:to dateTime=\"1981-01-01T00:00:00Z\" precision=\"YEAR\"/>")); s = s.replace("precision=\"YEAR\"", "precision=\"some garbage\""); ByteArrayInputStream stream = new ByteArrayInputStream(s.getBytes()); FetchQuery query1 = (FetchQuery) jaxbContext.createUnmarshaller().unmarshal(stream); assertEquals(Timestamp.Precision.SECOND, query1.getCreationTime().getFrom().getPrecision()); assertEquals(Timestamp.Precision.SECOND, query1.getCreationTime().getTo().getPrecision()); }