in src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java [128:165]
private NoSqlData deserializeUnsupportedTypes(NoSqlData data) {
if (data == null) {
return null;
}
Map<String,Object> deserializedMap = new HashMap<String, Object>();
for (Map.Entry<String, Object> entry : data.getProperties().entrySet()) {
Object deserializedValue = entry.getValue();
if (entry.getValue() instanceof String) {
String value = (String)entry.getValue();
// Calendar.class
if (value.indexOf(PREFIX_CALENDAR) == 0) {
String calendarValue = value.substring(PREFIX_CALENDAR.length());
try {
Date date = getISO8601Format().parse((String)calendarValue);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
deserializedValue = calendar;
}
catch (ParseException ex) {
log.warn("Unable to parse serialized calendar value: " + entry.getValue(), ex);
}
}
// byte[].class
else if (value.indexOf(PREFIX_BYTE_ARRAY) == 0) {
String byteArrayValue = value.substring(PREFIX_BYTE_ARRAY.length());
deserializedValue = DatatypeConverter.parseBase64Binary(byteArrayValue);
}
}
deserializedMap.put(entry.getKey(), deserializedValue);
}
return new NoSqlData(data.getPath(), deserializedMap);
}