Fork me on GitHub

Librairie notifygru

Introduction

Cette librairie fournit des services pour envoyer des notifications à la GRU.

Services

Le service principal est fr.paris.lutece.plugins.librarynotifygru.services.NotificationService, qui envoie un objet fr.paris.lutece.plugins.grubusiness.business.notification.Notification (voir la javadoc pour plus de détails sur cet objet).

Il requiert une implémentation de fr.paris.lutece.plugins.librarynotifygru.services.INotificationTransportProvider pour définir le transport HTTP. Deux implémentations de cette interface sont présentes dans cette librairie :

  • fr.paris.lutece.plugins.librarynotifygru.rs.service.NotificationTransportApiManagerRest, qui utilise l'ApiManager WSO2 pour sécuriser les requêtes à l'API (en utilisant des tokens)
  • fr.paris.lutece.plugins.librarynotifygru.rs.service.NotificationTransportRest, qui utilise des requêtes simples

Ces deux implémentations ont besoin de la définition de l'URL vers le service de notification. Cette URL est stockée dans l'attribut notificationEndPoint. L'implémentation NotificationTransportApiManagerRest a besoin de propriétés supplémentaires.

Configuration en utilisant le contexte Spring

Premièrement, définir le bean pour le transport HTTP à utiliser :

  • renseigner la propriété pour l'URL pointant vers le service de notification
  • renseigner les autres propriétés si le transport HTTP NotificationTransportApiManagerRest est utilisé

Ensuite, définir le bean pour le service NotificationService :

  • comme argument de constructeur, faire référence au bean pour le transport HTTP

Voici un exemple de configuration Spring avec le transport HTTP NotificationTransportRest :

<bean id="lib-notifygru.simpleTransport" class="fr.paris.lutece.plugins.librarynotifygru.rs.service.NotificationTransportRest">
    <property name="notificationEndPoint">
        <value>http://mydomain.com/url/to/notification</value>
    </property>
</bean>
<bean id="lib-notifygru.notificationService" class="fr.paris.lutece.plugins.librarynotifygru.services.NotificationService">
    <constructor-arg ref="lib-notifygru.simpleTransport"/>
</bean>
                        

Voici un exemple de configuration Spring avec le transport HTTP NotificationTransportApiManagerRest :

<bean id="lib-notifygru.apiManagerTransport" class="fr.paris.lutece.plugins.librarynotifygru.rs.service.NotificationTransportApiManagerRest">
    <property name="notificationEndPoint">
        <value>http://mydomain.com/url/to/apimanager/api/notification</value>
    </property>
    <property name="apiManagerEndPoint">
        <value>http://mydomain.com/url/to/apimanager/token</value>
    </property>
    <property name="apiManagerCredentials">
        <value>your_private_key</value>
    </property>
</bean>
<bean id="lib-notifygru.notificationService" class="fr.paris.lutece.plugins.librarynotifygru.services.NotificationService">
    <constructor-arg ref="lib-notifygru.apiManagerTransport"/>
</bean>
                        

Configuration dans le code Java

Le service peut &ecirc;tre directement cr&eacute;&eacute; dans le code Java. Voici un exemple avec le transport HTTP NotificationTransportApiManagerRest (le m&ecirc;me m&eacute;canisme peut &ecirc;tre appliqu&eacute; pour le transport HTTP NotificationTransportRest).

Premi&egrave;rement, d&eacute;finir les cl&eacute;s suivantes dans un fichier de propri&eacute;t&eacute;s :

myplugin.endpoint.notification=http://mydomain.com/url/to/apimanager/api/notification
myplugin.endpoint.token=http://mydomain.com/url/to/apimanager/token
myplugin.apimanager.credentials=your_private_key
                        

Ensuite, ajouter le code suivant dans le code Java :

private static final String PROPERTY_ENDPOINT_NOTIFICATION = "myplugin.endpoint.notification";
private static final String PROPERTY_ENDPOINT_TOKEN = "myplugin.endpoint.token";
private static final String PROPERTY_APIMANAGER_CREDENTIALS = "myplugin.apimanager.credentials";
...
NotificationTransportApiManagerRest apiManagerTransport = new NotificationTransportApiManagerRest(  );
apiManagerTransport.setNotificationEndPoint( AppPropertiesService.getProperty( PROPERTY_ENDPOINT_NOTIFICATION ) );
apiManagerTransport.setApiManagerEndPoint( AppPropertiesService.getProperty( PROPERTY_ENDPOINT_TOKEN ) );
apiManagerTransport.setApiManagerCredentials( AppPropertiesService.getProperty( PROPERTY_APIMANAGER_CREDENTIALS ) );

NotificationService notificationService = new NotificationService( apiManagerTransport );