Advanced Collaboration
Advanced integration patterns, system setting providers, custom class resolvers, and inter-module communication
System Setting Providers
How It Works
Registering a Provider
function onLoad() {
boxRuntime.getConfiguration().registerSystemSettingProvider(
"my-settings",
( settingName ) => {
// Only handle your prefixed settings
if ( settingName.startsWith( "MYAPP_" ) ) {
return lookupFromDatabase( settingName )
}
// Return null to let other providers try
return null
}
)
}
function onUnload() {
boxRuntime.getConfiguration().unregisterSystemSettingProvider( "my-settings" )
}@Override
public void onLoad( IBoxContext context, ModuleRecord record ) {
record.boxRuntime.getConfiguration().registerSystemSettingProvider(
Key.of( "my-settings" ),
( settingName, ctx ) -> {
if ( settingName.startsWith( "MYAPP_" ) ) {
return lookupFromDatabase( settingName );
}
return null;
}
);
}
@Override
public void onUnload( IBoxContext context, ModuleRecord record ) {
record.boxRuntime.getConfiguration()
.unregisterSystemSettingProvider( Key.of( "my-settings" ) );
}Provider Resolution Order
Custom Class Resolvers
Built-in Resolvers
Prefix
Resolver
Purpose
Creating a Custom Resolver
Usage After Registration
Runtime Configuration APIs
Registering Additional Mappings
Modifying Runtime Settings
Best Practices
Next Steps
Last updated
Was this helpful?
