Giter Club home page Giter Club logo

Comments (4)

mangstadt avatar mangstadt commented on August 30, 2024

Hi Peter,

ez-vcard logs the invalid version number as a parse warning, and then treats it as an extended (custom) property:

List<List<ParseWarning>> warnings = new ArrayList<>();
Path path = Paths.get("peter.vcf");
VCard vcard = Ezvcard.parse(path).warnings(warnings).first();

System.out.println(vcard.getExtendedProperty("VERSION").getValue());
System.out.println(warnings);

Outputs:

1.0
[[Line 2 (VERSION property): (27) Skipped.  Unknown version number found. Treating it as a regular property.  The entire line is: "VERSION:1.0"]]

Regards,
Mike

from ez-vcard.

mangstadt avatar mangstadt commented on August 30, 2024

From Peter via email:

Hi Mike,

thank you very much for your support. Your solution works fine for me, however, I’am still struggling with the version property…

When Property VERSION is absent, neither a parse warning nor a validation warning is issued.

Please see this example:

BEGIN:VCARD
N;LANGUAGE=en:Doe;John
FN:John Doe
ORG:Big Company
TITLE:Boss
TEL;WORK;VOICE:0123456789
X-MS-OL-DEFAULT-POSTAL-ADDRESS:0
EMAIL;PREF;INTERNET:[email protected]
REV:20231122T151319Z
END:VCARD

Using Ezvcard.parse(path).warnings(warnings).first() the list of warnings is empty.

Using ValidationWarnings = Ezvcard.parse(path).first().validate(vcardVersion) the ValidationWarnings object is empty too.

vcard.getExtendedProperty("VERSION") return a NULL value when property VERSION is absent but it also returns a NULL value, when property VERSION is set to a proper value, e.g. “2.1”. So this method is not useful too.

Would you please check again? Is there any possibility to check if property VERSION is provided at all?

Kind regards

Peter

from ez-vcard.

mangstadt avatar mangstadt commented on August 30, 2024

Hi Peter,

There is currently no direct way of detecting whether a VERSION property is missing from a vCard.

As a workaround, you could parse the vCard twice using different default versions and compare the versions of the parsed vCards.

Path path = Paths.get("peter.vcf");

VCardVersion v1;
try (VCardReader reader = new VCardReader(path, VCardVersion.V2_1)) {
  VCard vcard = reader.readNext();
  v1 = vcard.getVersion();
}

VCardVersion v2;
try (VCardReader reader = new VCardReader(path, VCardVersion.V3_0)) {
  VCard vcard = reader.readNext();
  v2 = vcard.getVersion();
}

boolean versionPropertyIsMissing = (v1 != v2);

Regards,
Mike

from ez-vcard.

mangstadt avatar mangstadt commented on August 30, 2024

From Peter via email:

Hi Mike,

thank you very much for your code example. The workaround is great! I have checked the functionality within my application. Now everything is fine.

Kind regards

Peter

from ez-vcard.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.