2  * ============LICENSE_START========================================================================
 
   3  * ONAP : ccsdk feature sdnr wt
 
   4  * =================================================================================================
 
   5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
 
   6  * =================================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 
   8  * in compliance with the License. You may obtain a copy of the License at
 
  10  * http://www.apache.org/licenses/LICENSE-2.0
 
  12  * Unless required by applicable law or agreed to in writing, software distributed under the License
 
  13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 
  14  * or implied. See the License for the specific language governing permissions and limitations under
 
  16  * ============LICENSE_END==========================================================================
 
  18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.xml;
 
  20 import java.util.concurrent.Future;
 
  21 import org.eclipse.jdt.annotation.NonNull;
 
  22 import org.onap.ccsdk.features.sdnr.wt.devicemanager.eventdatahandler.ODLEventListenerHandler;
 
  23 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 
  24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.EventlogEntity;
 
  25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventInputBuilder;
 
  26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutput;
 
  27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
 
  28 import org.opendaylight.yangtools.yang.common.RpcResult;
 
  29 import org.slf4j.Logger;
 
  30 import org.slf4j.LoggerFactory;
 
  33  * Wrapper for forwarding web-socket notifications to the web-socket service, that is running as bundle.
 
  35 @SuppressWarnings("deprecation")
 
  36 public class WebSocketServiceClientImpl2 implements WebSocketServiceClientInternal {
 
  38     private static final Logger LOG = LoggerFactory.getLogger(ODLEventListenerHandler.class);
 
  40     private final WebsocketmanagerService websocketmanagerService;
 
  41     private final XmlMapper xmlMapper;
 
  44      * Implementation of Websocket notification processor.
 
  46      * @param rpcProviderRegistry to get MDSAL services.
 
  49     public WebSocketServiceClientImpl2(@NonNull RpcProviderRegistry rpcProviderRegistry) {
 
  51         this.websocketmanagerService = rpcProviderRegistry.getRpcService(WebsocketmanagerService.class);
 
  52         this.xmlMapper = new XmlMapper();
 
  56      * New: Implementation of Websocket notification processor.
 
  58      * @param websocketmanagerService2 to be used
 
  60     public WebSocketServiceClientImpl2(WebsocketmanagerService websocketmanagerService2) {
 
  62         this.websocketmanagerService = websocketmanagerService2;
 
  63         this.xmlMapper = new XmlMapper();
 
  67     public <T extends MwtNotificationBase & GetEventType> void sendViaWebsockets(@NonNull String nodeName,
 
  68             @NonNull T notificationXml) {
 
  69         LOG.info("Send websocket event {} for mountpoint {}", notificationXml.getClass().getSimpleName(), nodeName);
 
  72             WebsocketEventInputBuilder wsBuilder = new WebsocketEventInputBuilder();
 
  73             wsBuilder.setNodeName(nodeName);
 
  74             wsBuilder.setEventType(notificationXml.getEventType());
 
  75             wsBuilder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
 
  76             Future<RpcResult<WebsocketEventOutput>> result = websocketmanagerService.websocketEvent(wsBuilder.build());
 
  77             LOG.info("Send websocket result: {}", result.get().getResult().getResponse());
 
  78         } catch (Exception e) {
 
  79             LOG.warn("Can not send websocket event {} for mountpoint {} {}", notificationXml.getClass().getSimpleName(),
 
  80                     nodeName, e.toString());
 
  85     public void close() throws Exception {}