Interface SPI de l'accesseur

L'interface SPI de l'accesseur permet un accès par saisie au modèle de document d'état. Elle permet au programmeur d'interroger et de modifier les informations d'état de navigation. L'interface SPI de l'accesseur fait partie du module com.ibm.portal.state.accessors.*

L'interface SPI de l'accesseur est une couche abstraite entourant l'accès à certains noeuds du modèle de document hiérarchisé. Pour plus de détails sur le modèle de document hiérarchique, voir Modèle d'objet. Pour chaque aspect d'un état comme par exemple, l'état de sélection de page, l'état d'expansion et l'état de portlet, l'interface SPI propose une classe d'ID d'accès. Cette classe fournit des contrôles d'accesseur en lecture seule ou en lecture-écriture conçus pour l'aspect d'état correspondant. Les accesseurs lisent à partir des positions respectives du modèle de document d'état, ou y écrivent, et exécutent les conversions de type requises.

Les informations d'état de navigation se trouvent dans le modèle de document d'état et sont disponibles lorsque la classe d'ID d'accès est utilisée. Une fois que le noeud est localisé, la classe d'ID d'accès transmet sa référence à l'accesseur ou au contrôleur d'accesseur. Ces derniers sont indépendants de la structure du modèle de document ; vous pouvez réutiliser des accesseurs même si les informations sont déplacées sur un autre noeud du document d'état.

SelectionAccessorFactory propose les interfaces suivantes, comme indiqué dans l'exemple :
SelectionAccessor getSelectionAccessor(StateHolder)
Cette méthode renvoie une interface SelectionAccessor qui permet de lire les informations de sélection de page dans le cadre StateHolder.
SelectionAccessorController getSelectionAccessorController(StateHolderController)
Cette méthode renvoie une interface SelectionAccessorController qui permet aux programmeurs de modifier les informations de sélection de page. Le contrôleur utilise l'interface StateHolderController pour modifier en conséquence l'état de navigation.
Le modèle Flyweight, avec StateHolder ou StateHolderController utilisé comme argument, est généralement utilisé dans les interfaces de classe d'ID d'accès. L'état de navigation sur lequel agit l'accesseur ne peut pas être l'état de base récupéré de l'URL de requête ; en général, il s'agit du clone d'état créé pour un objet EngineURL particulier. Pour obtenir le cadre de l'état spécifique de l'URL, appelez getState() sur l'objet EngineURL. L'exemple suivant montre comment, à l'aide de SelectionAccessorController, faire pointer vers une page précise du portail (par exemple, la page "Stock Market") un objet EngineURL créé :
final EngineURL url = ...;
final SelectionAccessorFactory selectionFct = ...;

final SelectionAccessorController selectionCtrl = 
    selectionFct.getSelectionAccessorController(url.getState());

try {
    selectionCtrl.setSelection("wps.StockMarket");
} catch (StateException e) {
    // include error handling here
} finally {
    selectionCtrl.dispose();
}

Utilisation de SelectionAccessorController pour créer un lien de page

L'interface de base de l'accesseur est dérivée de l'interface com.ibm.portal.Disposable. Avec la méthode dispose(), vous pouvez indiquer à quel moment vous n'avez plus besoin de l'accesseur. La méthode dispose() permet à la classe d'ID d'accès d'enregistrer les accesseurs et les contrôleurs d'accesseur dans des pools d'objets pour améliorer les performances (en réduisant la durée de l'initialisation et de la récupération de place).

L'interface SPI d'état de navigation contient les classes d'ID d'accès suivantes, chacune traitant un aspect d'état particulier :
SelectionAccessorFactory
La classe SelectionAccessorFactory permet aux accesseurs de lire et d'écrire des informations de sélection de page du portail. Pour créer une adresse URL pointant vers une autre page, il est nécessaire que la classe d'ID d'accès en fasse la demande à SelectionAccessorController pour que la nouvelle sélection soit intégrée dans l'état auquel est associé l'objet EngineURL créé.
PortletAccessorFactory
La classe PortletAccessorFactory permet aux accesseurs de lire et d'écrire des informations sur l'état de navigation associé aux portlets, du type mode du portlet, état de la fenêtre et paramètres de rendu. Il est notamment possible d'utiliser PortletAccessorController pour modifier l'état de navigation d'un portlet (par exemple, le mode du portlet).
PortletTargetAccessorFactory
La classe PortletTargetAccessorFactory permet aux accesseurs de lire et d'écrire des informations sur les actions associées à un portlet. Il est notamment possible d'utiliser PortletAccessorController pour déclarer un portlet comme cible d'une action. Cette action permet au programmeur de créer des adresses URL qui déclenchent des actions du portlet.
SoloAccessorFactory
La classe SoloAccessorFactory permet aux accesseurs de lire et d'écrire les informations de l'état basique (Solo). Si le portail se trouve dans un état basique, il ne restitue qu'un portlet donné de la page du portail en cours : tous les contrôles de navigation et toutes les barres d'outils sont cachés. SoloAccessorController peut être utilisé pour créer des adresses URL qui activent/désactivent l'état basique d'un portlet donné.
ThemeTemplateAccessorFactory
La classe ThemeTemplateAccessorFactory prend en charge la lecture et l'écriture d'informations sur le modèle de thème. ThemeTemplateAccessorController peut notamment être utilisé pour créer des adresses URL qui basculent sur un modèle de thème donné.
LocaleAccessorFactory
La classe LocaleAccessorFactory permet aux accesseurs de lire et d'écrire des informations sur l'environnement local. LocaleAccessorController peut être utilisé pour définir un environnement local spécial dans l'état de navigation, et donc dans une adresse URL.
Remarque : Un environnement local extrait à partir de ce type d'adresse URL a priorité sur les environnements locaux préférés de l'utilisateur ou sur les environnements locaux définis dans le navigateur de l'utilisateur.
ExpansionStatesAccessorFactory
La classe ExpansionStatesAccessorFactory permet aux accesseurs de lire et d'écrire des informations sur les états de développement ; par exemple, pour déterminer si un nœud de navigation d'un contrôle de l'arborescence de navigation est développé ou réduit. ExpansionStatesAccessorController est généralement utilisé pour générer des adresses URL permettant de faire basculer l'état d'expansion d'un nœud de navigation.
ShowToolsAccessorFactory
La classe ShowToolsAccessorFactory permet aux accesseurs de lire et d'écrire des informations associées aux outils. ShowToolsAccessorController est généralement utilisé pour créer une adresse URL qui s'intègre aux icônes d'outil pour les fenêtres de portlet offrant des fonctions du type déplacement/suppression du portlet respectif.
StatePartitionAccessorFactory
La classe StatePartitionAccessorFactory permet aux accesseurs de lire et d'écrire des identificateurs de partition d'état. StatePartitionAccessorController peut être utilisé pour inclure un identificateur de partition d'état dans l'état de navigation. Un nouvel identificateur de partition d'état est inclus dans les adresses URL qui ouvrent de nouvelles fenêtres de navigateur ou des iFrames.
EngineActionAccessorFactory
La classe EngineActionAccessorFactory fournit des contrôleurs permettant de créer des adresses URL d'action moteur. EngineActionAccessorController permet notamment de définir des paramètres d'action.
Remarque : EngineActionAccessorFactory n'offre pas d'accesseur en lecture seule car le portail gère les actions moteur.