Un provider delle impostazioni gestite è un plug-in Eclipse in grado di estrarre le impostazioni da un sistema di gestione backend associato e di inviarle al framework delle impostazioni gestite nel formato appropriato.
Lotus Expeditor fornisce provider per le impostazioni specificate da Portal Policy Manager e nei file XML e per le politiche specificate in Domino (rilasciato con Notes 8.0). Se si desidera controllare le preferenze o le impostazioni relative alle politiche da un sistema backend differente, è necessario richiedere ad uno sviluppatore di creare un fornitore personalizzato.
<extension point="com.ibm.rcp.managedsettings.ManagedSettingsProvider">
<provider
class="com.isv.Provider"
weight="10"/>
<extension>
L'attributo class fa riferimento a una classe che implementa l'interfaccia com.ibm.rcp.managedsettings.Provider,
definita nel plug-in com.ibm.rcp.managedsettings. All'inizio di un aggiornamento delle impostazioni gestite, il framework richiama getProvidedSettingGroups() per determinare i gruppi di impostazioni per cui i fornitori forniscono i dati. Questa operazione viene utilizzata per identificare i gruppi di impostazioni eliminati dall'ultimo aggiornamento.
Per implementare questo metodo, è necessario determinare il modo in cui il concetto di gruppo di impostazioni fa riferimento al sistema backend per cui si sta scrivendo il fornitore. Un gruppo di impostazioni è un gruppo di impostazioni correlate. Generalmente, è il livello con cui viene eseguita la traccia delle modifiche alle impostazioni, nel caso in cui le modifiche non vengano tracciate a livello di impostazione singola. Se il sistema backend non riconosce il concetto di gruppo di impostazioni, è possibile codificare un valore singolo ed inserire tutte le impostazioni in questo gruppo di impostazioni.
public Collection getProvidedSettingGroups() throws ProviderException {
ArrayList settingGroups = new ArrayList();
String[]providedSettingGroups = BackEndSystem.getPolicyNames();
ArrayList ret = new ArrayList();
for (int i = 0; i < providedSettingGroups.length; i++){
ret.add(providedSettingGroups[i]);
}
return settingGroups;
}
I gruppi di impostazioni sono rappresentati dalla classe
SettingGroup, una struttura di dati che consente alle applicazioni di inviare
facilmente i dati delle impostazioni al framework delle impostazioni gestite.
La classe SettingGroup viene utilizzata per associare un insieme di coppie
nome-valore, indicarne lo stato bloccato o sbloccato ed indicare l'ora in
cui l'amministratore ha modificato per l'ultima volta uno dei valori.
Una volta richiamato
getProvidedSettingGroups(), il framework richiama getUpdates() ed invia a tale
metodo una associazione che specifica i gruppi di impostazioni e le date
conosciute delle ultime modifiche a tali gruppi di impostazioni.
Il metodo restituisce un elenco di oggetti
SettingGroup per ciascun gruppo di impostazioni modificato dalla data
dell'ultima modifica.
Quindi, il framework delle impostazioni gestite memorizza gli oggetti
SettingGroup restituiti nell'archivio locale sul client.
Ad esempio, se una delle voci nell'associazione è il gruppo di impostazioni A,
e la data dell'ultima modifica a tale gruppo è 1 gennaio 2006, il fornitore
restituisce un oggetto SettingGroup nell'elenco se uno dei valori delle
impostazioni nel gruppo di impostazioni A è stato modificato dopo il
giorno 1 gennaio 2006.Per consentirne la memorizzazione nel punto corretto nell'archivio delle preferenze Eclipse, le impostazioni ed i gruppi di impostazioni devono utilizzare le convenzioni di denominazione descritte in Specifica delle impostazioni. Se non è possibile specificare le impostazioni in questo modo a causa di limitazioni nel sistema backend, è necessario codificarle nel fornitore.
Se in un gruppo di impostazioni aggiornato mancano le impostazioni fornite nel precedente aggiornamento, tali impostazioni vengono considerate come non gestite e saranno sbloccate.
Esempio:
public List getUpdates(Map updateMap) throws ProviderException {
ArrayList ret = new ArrayList();
Iterator groups = updateMap.keySet().iterator();
while (groups.hasNext()){
String policySet = (String)groups.next();
Date requestChangesSince = updateMap.get(policySet);
Map settingsChanges = BackEndSystem.getPolicyChanges (policySet, requestChangesSince);
SettingGroup settingGroup =
new SettingGroup(policySet, BackEndSystem.getLastChangeDate(policySet);
Iterator settingsList = settingsChanges.entrySet().iterator();
while (settingsList.hasNext()){
Map.Entry setting = (Map.Entry) settingsList.next();
settingGroup.add(setting.getKey(), setting.getValue(), true);
}
ret.add(settingGroup);
}
return ret;
}
È possibile utilizzare l'API Account per limitare l'elenco di impostazioni e i gruppi di impostazioni a uno che si applica all'utente collegato.
Facoltativo: se il provider è a conoscenza di quando vengono effettuati gli aggiornamenti, esso può richiedere che la struttura di impostazioni gestite esegua immediatamente un aggiornamento invece che attendere la scadenza dell'intervallo di aggiornamento. La struttura di impostazioni gestite richiama Provider.addProviderUpdateListener sul provider per registrare tali notifiche. Implementare questo metodo in modo da tenere traccia dei listener. Quando il provider riconosce i propri aggiornamenti, esso deve richiamare il metodo onRequestUpdate() sui listener registrati e l'aggiornamento verrà eseguito immediatamente.