X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-topology-singleton%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Ftopology%2Fsingleton%2Fimpl%2Futils%2FNetconfTopologyUtils.java;h=eb34152e937e75de09e00651849ba617a6fc6618;hb=e60546d08fbc89e4780406c4123ba25c3e7698ef;hp=1324e8ad44d7c3025c9fcb8403797397dff06bcf;hpb=9c56fbbb1c62243df9baa3b95140153f91ffdde9;p=netconf.git diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologyUtils.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologyUtils.java index 1324e8ad44..eb34152e93 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologyUtils.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologyUtils.java @@ -14,7 +14,7 @@ import java.math.BigDecimal; import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; -import org.opendaylight.controller.config.util.xml.DocumentedException; +import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice; import org.opendaylight.netconf.sal.connect.netconf.NetconfStateSchemasResolverImpl; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; @@ -36,12 +36,14 @@ 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.spi.SchemaSourceRegistry; import org.opendaylight.yangtools.yang.model.repo.util.FilesystemSchemaSourceCache; +import org.opendaylight.yangtools.yang.model.repo.util.InMemorySchemaSourceCache; import org.opendaylight.yangtools.yang.parser.repo.SharedSchemaRepository; -import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer; +import org.opendaylight.yangtools.yang.parser.rfc7950.repo.ASTSchemaSource; +import org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToASTTransformer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class NetconfTopologyUtils { +public final class NetconfTopologyUtils { private static Logger LOG = LoggerFactory.getLogger(NetconfTopologyUtils.class); private static final String DEFAULT_SCHEMA_REPOSITORY_NAME = "sal-netconf-connector"; @@ -77,6 +79,9 @@ public class NetconfTopologyUtils { new FilesystemSchemaSourceCache<>(DEFAULT_SCHEMA_REPOSITORY, YangTextSchemaSource.class, new File(QUALIFIED_DEFAULT_CACHE_DIRECTORY)); + public static final InMemorySchemaSourceCache DEFAULT_AST_CACHE = + InMemorySchemaSourceCache.createSoftCache(DEFAULT_SCHEMA_REPOSITORY, ASTSchemaSource.class); + // The default factory for creating SchemaContext instances. public static final SchemaContextFactory DEFAULT_SCHEMA_CONTEXT_FACTORY = DEFAULT_SCHEMA_REPOSITORY.createSchemaContextFactory(SchemaSourceFilter.ALWAYS_ACCEPT); @@ -98,12 +103,17 @@ public class NetconfTopologyUtils { new NetconfDevice.SchemaResourcesDTO(DEFAULT_SCHEMA_REPOSITORY, DEFAULT_SCHEMA_REPOSITORY, DEFAULT_SCHEMA_CONTEXT_FACTORY, new NetconfStateSchemasResolverImpl())); DEFAULT_SCHEMA_REPOSITORY.registerSchemaSourceListener(DEFAULT_CACHE); + DEFAULT_SCHEMA_REPOSITORY.registerSchemaSourceListener(DEFAULT_AST_CACHE); DEFAULT_SCHEMA_REPOSITORY.registerSchemaSourceListener( TextToASTTransformer.create(DEFAULT_SCHEMA_REPOSITORY, DEFAULT_SCHEMA_REPOSITORY)); } + private NetconfTopologyUtils() { + + } + public static NetconfDevice.SchemaResourcesDTO setupSchemaCacheDTO(final Node node) { - final NetconfNode netconfNode = node.getAugmentation(NetconfNode.class); + final NetconfNode netconfNode = node.augmentation(NetconfNode.class); final String moduleSchemaCacheDirectory = netconfNode.getSchemaCacheDirectory(); final RemoteDeviceId deviceId = createRemoteDeviceId(node.getNodeId(), netconfNode); @@ -160,6 +170,8 @@ public class NetconfTopologyUtils { final FilesystemSchemaSourceCache deviceCache = createDeviceFilesystemCache(moduleSchemaCacheDirectory, repository); repository.registerSchemaSourceListener(deviceCache); + repository.registerSchemaSourceListener(InMemorySchemaSourceCache.createSoftCache(repository, + ASTSchemaSource.class)); return new NetconfDevice.SchemaResourcesDTO(repository, repository, schemaContextFactory, new NetconfStateSchemasResolverImpl()); } @@ -220,8 +232,8 @@ public class NetconfTopologyUtils { return createTopologyListPath(topologyId).child(Node.class); } - public static DocumentedException createMasterIsDownException(final RemoteDeviceId id) { - return new DocumentedException(id + ":Master is down. Please try again.", + public static DocumentedException createMasterIsDownException(final RemoteDeviceId id, final Exception cause) { + return new DocumentedException(id + ":Master is down. Please try again.", cause, DocumentedException.ErrorType.APPLICATION, DocumentedException.ErrorTag.OPERATION_FAILED, DocumentedException.ErrorSeverity.WARNING); }