public void readProperty( String group, String propertyName, VCardParameters parameters, VCardDataType dataType, JCardValue value) { if ("version".equalsIgnoreCase(propertyName)) { // don't unmarshal "version" because we don't treat it as a property versionFound = true; VCardVersion version = VCardVersion.valueOfByStr(value.asSingle()); if (version != VCardVersion.V4_0) { warnings.add(reader.getLineNum(), propertyName, 30); } return; } VCardPropertyScribe<? extends VCardProperty> scribe = index.getPropertyScribe(propertyName); if (scribe == null) { scribe = new RawPropertyScribe(propertyName); } Result<? extends VCardProperty> result; try { result = scribe.parseJson(value, dataType, parameters); for (String warning : result.getWarnings()) { warnings.add(reader.getLineNum(), warning, propertyName); } } catch (SkipMeException e) { warnings.add(reader.getLineNum(), propertyName, 22, e.getMessage()); return; } catch (CannotParseException e) { scribe = new RawPropertyScribe(propertyName); result = scribe.parseJson(value, dataType, parameters); VCardProperty property = result.getProperty(); String valueStr = ((RawProperty) property).getValue(); warnings.add(reader.getLineNum(), propertyName, 25, valueStr, e.getMessage()); } catch (EmbeddedVCardException e) { warnings.add(reader.getLineNum(), propertyName, 31); return; } VCardProperty property = result.getProperty(); property.setGroup(group); vcard.addProperty(property); }