JaliosXperience
fr en
Link

Comment récuperer channel dans un ChannelListener ?

Sébastien Biero - on 6/18/07 at 10:01 AM

Bonjour, j'ai essayé de m'inspirer de l'exemple donné dans la section 5.2 de ce guide, mais le code ne se compilant pas dans l'état, il m'a fallu le modifier.

Je pense avoir compris le principe grâce à cet exemple clair, mais c'est au niveau de la récupération de channel que je bloque. Je n'arrive pas à récupérer channel dans mon ChannelListener et car la méthode Channel.getChannel() me retourne null.

Comment récuperer l'objet channel de l'instance du site ?

Olivier Jaquemet - on 6/18/07 at 10:27 AM

Un ChannelListener peut implémenter trois méthodes :

  • initBeforeStoreLoad()
  • initAfterStoreLoad()
  • handleFinalize()

Dans ces trois méthodes, l'utilisation de Channel.getChannel() ne devrait pas vous renvoyez null, le singleton Channel ayant déjà été initialisé. C'est d'ailleur également valable pour la méthode init(Plugin) d'un PluginComponent.
Attention cependant, le Channel étant en cours de chargement, tous les services ne sont pas forcément encore disponible. Par exemple l'accès aux propriétés n'est pas encore possible dans la méthode init.

De manière générale, le Channel étant initialisé avant le chargement de toutes les autres classes, la méthode la plus simple pour récupérér le Channel consiste à le récupérer en static en début de votre classe :

  private static final Channel channel = Channel.getChannel();
Seul exception à cette règle, si vous développer une Servlet ou une ServletFilter.

N'hésitez pas à télécharger le plugin podcast et à regarder les sources (dans le fichier jar) pour voir quelques exemples d'utilisation plus détaillées.

Sébastien Biero - on 6/18/07 at 10:29 AM

Je m'excuse, getChannel() retourne bien une channel, mais c'est la méthode channel.getRootCategory() qui retourne null.

Dans l'exemple de la section 5.2, on a channel.getCategory() que j'ai remplacé par channel.getRootCategory(), car sinon ça ne compilait pas, car getCategory() a besoin d'arguments.

Sébastien Biero - on 6/18/07 at 10:30 AM

merci pour les infos, j'étais déjà en train de rédiger mon post alors je n'avais pas vu la réponse.

Olivier Jaquemet - on 6/18/07 at 10:36 AM

L'article est corrigé et contient maitenant getRootCategory(). Merci.

Login   Home   fr en
JALIOS SA - SIREN 440 126 035