ExternalConfigurationProviderPlugin - custom implementation

Any implementation class that you create for plugin ExternalConfigurationProviderPlugin must implement the ExternalConfigurationProviderPlugin interface. In addition, your implementation class must contain a public lookupValue(namespace, key) method that behaves in the same way as the default implementation of this method in implementation class FileBasedConfigurationProviderWrapper.

It is up to you to determine where and how PolicyCenter takes the value for substitution. If you do not provide your own plugin implementation:
  • PolicyCenter ignores all placeholders without default values.
  • PolicyCenter replaces all placeholders with default values with the given default value.

Custom plugin considerations

You must name your plugin implementation ExternalConfigurationProviderPlugin.gwp exactly, as PolicyCenter loads the plugin by name.

Guidewire recommends that you be mindful of performance considerations in your implementation of this plugin. It is a good idea to use caching so as to avoid expensive I/O reads as PolicyCenter accesses the plugin for every substitution that it finds in all supported files.

As the ExternalConfigurationProviderPlugin plugin is a special type of plugin (an early-load plugin), it needs to be available even before PolicyCenter parses the first configuration file (config.xml) for the first time. Thus, your implementation of this plugin must follow the following implementation rules:
  • File ExternalConfigurationProviderPlugin.gwp cannot itself contain placeholders.
  • Plugin ExternalConfigurationProviderPlugin must be either a Gosu- or Java-based plugin. It explicitly cannot be an OSGI plugin.
Your custom plugin implementation must also adhere to the following restrictions:
  • The implementation class cannot use Guidewire entities.
  • The implementation class cannot access the PolicyCenter database.
  • The implementation class cannot use server lifecycle-dependent code.
  • The implementation class cannot use server lifecycle-dependent APIs.