if (type.isSimpleType()) {
if (isDateType(type)) {
- // Dates or date/times in ISO 8601-based representations
- // directly supported by Nuxeo will be successfully decoded.
- result = type.decode(element.getText());
- // All other date or date/time values must first be converted
- // to a supported ISO 8601-based representation.
- if (result == null) {
- dateStr = DateTimeFormatUtils.toIso8601Timestamp(element.getText(),
- ctx.getTenantId());
- if (dateStr != null) {
- result = type.decode(dateStr);
- } else {
- throw new IllegalArgumentException("Unrecognized date value '"
- + element.getText() + "' in field '" + element.getName() + "'");
+ String value = element.getText();
+ if (value == null || value.trim().isEmpty()) {
+ result = type.decode("");
+ } else {
+ // Dates or date/times in ISO 8601-based representations
+ // directly supported by Nuxeo will be successfully decoded.
+ result = type.decode(element.getText());
+ // All other date or date/time values must first be converted
+ // to a supported ISO 8601-based representation.
+ if (result == null) {
+ dateStr = DateTimeFormatUtils.toIso8601Timestamp(element.getText(),
+ ctx.getTenantId());
+ if (dateStr != null) {
+ result = type.decode(dateStr);
+ } else {
+ throw new IllegalArgumentException("Unrecognized date value '"
+ + element.getText() + "' in field '" + element.getName() + "'");
+ }
}
}
} else {
}
Assert.assertTrue(movement.getLocationDate().equals(TIMESTAMP_UTC));
Assert.assertTrue(movement.getPlannedRemovalDate().equals(TIMESTAMP_UTC));
- Assert.assertTrue(movement.getRemovalDate().equals(TIMESTAMP_UTC));
+ Assert.assertNull(movement.getRemovalDate());
}
// Failure outcomes
logger.debug("to be updated object");
logger.debug(objectAsXmlString(movement, MovementsCommon.class));
}
+ String currentTimestamp = GregorianCalendarDateTimeUtils.timestampUTC();
+ movement.setPlannedRemovalDate(""); // Test deletion of existing date or date/time value
+ movement.setRemovalDate(currentTimestamp);
+
// Submit the request to the service and store the response.
MultipartOutput output = new MultipartOutput();
OutputPart commonPart = output.addPart(movement, MediaType.APPLICATION_XML_TYPE);
invalidStatusCodeMessage(REQUEST_TYPE, statusCode));
Assert.assertEquals(statusCode, EXPECTED_STATUS_CODE);
-
input = (MultipartInput) res.getEntity();
MovementsCommon updatedMovement =
(MovementsCommon) extractPart(input,
client.getCommonPartName(), MovementsCommon.class);
Assert.assertNotNull(updatedMovement);
+ if(logger.isDebugEnabled()){
+ logger.debug("updated object");
+ logger.debug(objectAsXmlString(movement, MovementsCommon.class));
+ }
+
+ Assert.assertEquals(updatedMovement.getMovementReferenceNumber(),
+ movement.getMovementReferenceNumber(),
+ "Data in updated object did not match submitted data.");
Assert.assertEquals(updatedMovement.getMovementNote(),
- movement.getMovementNote(),
- "Data in updated object did not match submitted data.");
+ movement.getMovementNote(),
+ "Data in updated object did not match submitted data.");
+ Assert.assertNull(updatedMovement.getPlannedRemovalDate());
+ Assert.assertEquals(updatedMovement.getRemovalDate(),
+ movement.getRemovalDate(),
+ "Data in updated object did not match submitted data.");
}
movement.setMovementNote("movementNote value");
movement.setMovementReferenceNumber(movementReferenceNumber);
movement.setPlannedRemovalDate(TIMESTAMP_UTC);
- movement.setRemovalDate(TIMESTAMP_UTC);
+ movement.setRemovalDate(""); // Test empty date value
movement.setReasonForMove("reasonForMove value");
MultipartOutput multipart = new MultipartOutput();
OutputPart commonPart =