Netconf-cli compilable and included in project 28/13128/2
authorMarian Dubai <mdubai@cisco.com>
Tue, 25 Nov 2014 16:33:30 +0000 (17:33 +0100)
committerMarian Dubai <mdubai@cisco.com>
Wed, 26 Nov 2014 09:50:04 +0000 (10:50 +0100)
Change-Id: Ia08396f52c98ea2661e13f60a3787b18c4ae50d6
Signed-off-by: Marian Dubai <mdubai@cisco.com>
opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/Main.java
opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/NetconfDeviceConnectionManager.java
opendaylight/netconf/pom.xml

index 79c083c1ed4a24d065ff0c8223ec6fa6a9672291..64397de1184511dea00a5f3eda1362cfb55e0817 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.controller.netconf.cli;
 
  */
 package org.opendaylight.controller.netconf.cli;
 
+import static com.google.common.base.Throwables.getStackTraceAsString;
+
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.net.InetAddress;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.net.InetAddress;
@@ -105,7 +107,7 @@ public class Main {
     }
 
     private static void handleException(final Exception e, final String message) {
     }
 
     private static void handleException(final Exception e, final String message) {
-        // FIXME syserr the exception and stacktrace
+        System.console().writer().println(String.format("Error %s cause %s", message, getStackTraceAsString(e.fillInStackTrace())));
     }
 
     private static void writeStatus(final ConsoleIO io, final String blueprint, final Object... args) {
     }
 
     private static void writeStatus(final ConsoleIO io, final String blueprint, final Object... args) {
index 3dd892e16952860ea0c226221d20623c15ffa481..f4e21714cd6ecd4766ca0f3bf47cc57f0278936a 100644 (file)
@@ -22,12 +22,21 @@ import org.opendaylight.controller.netconf.cli.io.ConsoleIO;
 import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl;
 import org.opendaylight.controller.netconf.client.conf.NetconfClientConfigurationBuilder;
 import org.opendaylight.controller.sal.connect.netconf.NetconfDevice;
 import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl;
 import org.opendaylight.controller.netconf.client.conf.NetconfClientConfigurationBuilder;
 import org.opendaylight.controller.sal.connect.netconf.NetconfDevice;
+import org.opendaylight.controller.sal.connect.netconf.NetconfDevice.SchemaResourcesDTO;
+import org.opendaylight.controller.sal.connect.netconf.NetconfStateSchemas.NetconfStateSchemasResolverImpl;
 import org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator;
 import org.opendaylight.controller.sal.connect.netconf.listener.NetconfDeviceCommunicator;
+import org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer;
 import org.opendaylight.controller.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.controller.sal.connect.util.RemoteDeviceId;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.repo.util.FilesystemSchemaSourceCache;
 import org.opendaylight.yangtools.yang.model.util.repo.AbstractCachingSchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.FilesystemSchemaCachingProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.SchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.SchemaSourceProviders;
 import org.opendaylight.yangtools.yang.model.util.repo.AbstractCachingSchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.FilesystemSchemaCachingProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.SchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.util.repo.SchemaSourceProviders;
+import org.opendaylight.yangtools.yang.parser.repo.SharedSchemaRepository;
+import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
 
 /**
  * Manages connect/disconnect to 1 remote device
 
 /**
  * Manages connect/disconnect to 1 remote device
@@ -42,6 +51,8 @@ public class NetconfDeviceConnectionManager implements Closeable {
     private final NioEventLoopGroup nettyThreadGroup;
     private final NetconfClientDispatcherImpl netconfClientDispatcher;
 
     private final NioEventLoopGroup nettyThreadGroup;
     private final NetconfClientDispatcherImpl netconfClientDispatcher;
 
+    private static final String CACHE = "cache/schema";
+
     // Connection
     private NetconfDeviceConnectionHandler handler;
     private NetconfDevice device;
     // Connection
     private NetconfDeviceConnectionHandler handler;
     private NetconfDevice device;
@@ -70,7 +81,15 @@ public class NetconfDeviceConnectionManager implements Closeable {
 
         handler = new NetconfDeviceConnectionHandler(commandDispatcher, schemaContextRegistry,
                 console, name);
 
         handler = new NetconfDeviceConnectionHandler(commandDispatcher, schemaContextRegistry,
                 console, name);
-        device = NetconfDevice.createNetconfDevice(deviceId, getGlobalNetconfSchemaProvider(), executor, handler);
+
+        final SharedSchemaRepository repository = new SharedSchemaRepository("repo");
+        final SchemaContextFactory schemaContextFactory = repository.createSchemaContextFactory(SchemaSourceFilter.ALWAYS_ACCEPT);
+        final FilesystemSchemaSourceCache<YangTextSchemaSource> cache = new FilesystemSchemaSourceCache<>(repository, YangTextSchemaSource.class, new File(CACHE));
+        repository.registerSchemaSourceListener(cache);
+        repository.registerSchemaSourceListener(TextToASTTransformer.create(repository, repository));
+
+        device = new NetconfDevice(new SchemaResourcesDTO(repository, schemaContextFactory, new NetconfStateSchemasResolverImpl()),
+                deviceId, handler, executor, new NetconfMessageTransformer());
         listener = new NetconfDeviceCommunicator(deviceId, device);
         configBuilder.withSessionListener(listener);
         listener.initializeRemoteConnection(netconfClientDispatcher, configBuilder.build());
         listener = new NetconfDeviceCommunicator(deviceId, device);
         configBuilder.withSessionListener(listener);
         listener.initializeRemoteConnection(netconfClientDispatcher, configBuilder.build());
index 885bdb4fddd3fde27fba74753dee116616eb65d6..8b14adf252aff560b3473b1c8054fbf4f7f029f3 100644 (file)
@@ -19,8 +19,7 @@
 
   <modules>
     <module>netconf-api</module>
 
   <modules>
     <module>netconf-api</module>
-      <!--FIXME make compilable-->
-    <!--<module>netconf-cli</module>-->
+    <module>netconf-cli</module>
     <module>netconf-config</module>
     <module>netconf-impl</module>
     <module>config-netconf-connector</module>
     <module>netconf-config</module>
     <module>netconf-impl</module>
     <module>config-netconf-connector</module>