+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.netconf.cli;
-
-import com.google.common.base.Optional;
-import jline.console.completer.Completer;
-import jline.console.completer.NullCompleter;
-import org.opendaylight.controller.md.sal.dom.api.DOMNotification;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.netconf.cli.commands.CommandDispatcher;
-import org.opendaylight.controller.netconf.cli.io.ConsoleContext;
-import org.opendaylight.controller.netconf.cli.io.ConsoleIO;
-import org.opendaylight.controller.sal.connect.api.RemoteDeviceHandler;
-import org.opendaylight.controller.sal.connect.netconf.listener.NetconfSessionPreferences;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * Implementation of RemoteDeviceHandler. Integrates cli with
- * sal-netconf-connector.
- */
-public class NetconfDeviceConnectionHandler implements RemoteDeviceHandler<NetconfSessionPreferences> {
-
- private final CommandDispatcher commandDispatcher;
- private final SchemaContextRegistry schemaContextRegistry;
- private final ConsoleIO console;
- private final String deviceId;
-
- private boolean up = false;
-
- public NetconfDeviceConnectionHandler(final CommandDispatcher commandDispatcher,
- final SchemaContextRegistry schemaContextRegistry, final ConsoleIO console, final String deviceId) {
- this.commandDispatcher = commandDispatcher;
- this.schemaContextRegistry = schemaContextRegistry;
- this.console = console;
- this.deviceId = deviceId;
- }
-
- @Override
- public synchronized void onDeviceConnected(final SchemaContext context,
- final NetconfSessionPreferences preferences, final DOMRpcService rpcService) {
- console.enterRootContext(new ConsoleContext() {
-
- @Override
- public Optional<String> getPrompt() {
- return Optional.of(deviceId);
- }
-
- @Override
- public Completer getCompleter() {
- return new NullCompleter();
- }
- });
-
- // TODO Load schemas for base netconf + inet types from remote device if
- // possible
- // TODO detect netconf base version
- // TODO detect inet types version
- commandDispatcher.addRemoteCommands(rpcService, context);
- schemaContextRegistry.setRemoteSchemaContext(context);
- up = true;
- this.notify();
- }
-
- /**
- * @return true if connection was fully established
- */
- public synchronized boolean isUp() {
- return up;
- }
-
- @Override
- public synchronized void onDeviceDisconnected() {
- console.leaveRootContext();
- commandDispatcher.removeRemoteCommands();
- schemaContextRegistry.setRemoteSchemaContext(null);
- up = false;
- }
-
- @Override
- public void onDeviceFailed(Throwable throwable) {
- // FIXME
- }
-
- @Override
- public void onNotification(DOMNotification domNotification) {
-
- }
-
- @Override
- public void close() {
- // FIXME
- }
-}