Hey all,
I've modified the connectivity APIs to give extenders the ability to
prevent certain properties from being persisted within workspace (namely
authentication information, which was the driver for this change). The
following is a summary of the changes:
1. Added a "propertiesPersistenceHook" attribute to connectionProfile and
profileExtension elements. This gives extension providers the ability to
associate an IPropertiesPersistenceHook implementation with their profile
or profile extension.
2. Added IPropertiesPersistenceHook interface. This gives providers an
opportunity to scrub the property set prior to being saved. This also
gives providers the opportunity to expand the property set during loading.
It also provides methods to the framework for determining whether or not a
property set is complete so the framework can open a property page to allow
the user to specify properties that were not persisted (e.g. password).
3. Modified IConnectionProfile by adding arePropertiesComplete() and
arePropertiesComplete(String) methods. These methods may be used by
clients in determining whether or not all properties are complete. (Note,
complete does not mean that a connection attempt will be successful, it
simply means that the properties are complete enough that an attempt can be
made.)
4. Updated generic DB plugins to use the new API.
5. Updated connect action to prompt the user in the event a property set
is incomplete. (Note, the initial property page will be the property page
returned by the profile's propertiesPersistenceHook. If the base
properties are complete, the initial page will be the page by the
propertiesPersistenceHook for the first profile extension which is not
complete.)
Attached is the patch containing the changes. (Note, this also includes
some various fixes for errors found in the persistence of extended
properties contributed through profile extensions.)
(See attached file: pwd_prompt.patch)
Please let me know if you have any questions, comments, concerns, etc...
Happy coding,
Rob