I'm using jpim to write a vcard crawler for the Aperture Framework. I've just noticed an issue with the treatment of the UID property.
1. There is no UIDItemHandler - the UID elements are ignored when unmarshalling contacts. Every time a contact is unmarshalled - it has a new identifier.
2. The AbstractIdentifiable.setUID method accepts only uid strings that begin with "jpim-" - even if there were an UIDItemHandler UID's that weren't alloted by jpim would be ignored.
Aperture depends on the UIDs to create URIs for contacts.
1. We must retain the UID's that are present in existing vcard files. Aperture cannot change the files because they are managed by external applications.
2. The UID's must not change between invocations of the unmarshaller, because we keep track of the identifiers we know to detect additions, modifications and deletions.
I'd be willing to contribute a patch. I would imagine it as some kind of an additional flag in the unmarshaller, or in the IO factory that would override the current behavior and
1. allow for null uids
2. ensure that existing uids are unchanged and that they are returned when getUID() is invoked.
An UIDItemHandler would also be necessary.
Of course the current behaviour would be the default one and would not change.
Please tell me if it's possible.
This is important for us.