private NoSqlData deserializeUnsupportedTypes()

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);
    }