I have developed a moderately extensive management application for our wireless ISP business. It is based on a comprehensive RCP Address book application, that I wrote. The address book application contains about half a dozen plug-ins. And is a completely standalone product that I can export for various different platforms and works fine.

All other functionality of the management application is made up of a single master plug-in along with several additional dependent plug-ins that all extend the address book application. For instance I have a main management plug-in, a ticketing plug-in, a money plug-in and other assorted smaller plug-ins that do different things.

The reason that I am doing it like that is that I am planning on developing several completely different management applications that have completely different usage domains and I want to be able to package up the basic address book application with whatever plug-ins make sense for each domain.

For debugging address book functionality my debug configuration just starts the address book product which works fine. For debugging the management side of things I created a product out the main management module and specified the address book product as the program to run.

Q) - Is this the best/correct way to configure/debug my set of management plug-ins?

With that configuration I can export a working native address book application as well as a native management application. Everything works fine except for a preferences problem that I can't seem to solve.

My address book product has a custom extension point called AppInfo that contains some configuration items like database parameters, application name and version, and class interfaces which allow it to embed functionality provided by the extension/management plug-ins, into various address book windows. When the address book application starts, it checks to see if anyone is extending the AppInfo extension and if so pulls the parameters from it and uses them to override the default preferences for those values.

When I just run the address book application all my preferences work fine, but when I execute the management application debug configuration, any preference values retrieved from my AppInfo extension point appear to be set properly, but later in the application start up process, when the preference values are retrieved they aren't set.

Q) - Is there some reason that the preferences stored when running under the management debug configuration would be stored in a different scope than preferences in the address book debug configuration?

All of the code that examines or sets preferences is contained in the address book Application class with the exception of the PreferencePage & PreferenceInitializer classes. I would expect all of the preference related code to be executed within the context of the address book plug-in but when I programatically write values of the preferences that are provided by the management plugin they don't take (so-to-speak).

Q) - Is there a better way of allowing the management extension plug-ins to define various configuration values in the address book application?

I've messed with this for several days and I'm starting to run out of new ways to beat my head against the wall on this one.