- private String getRootModuleNamePrefix(final AnchorEntity anchorEntity) {
- final String cachedModuleNamePrefix = getModuleNamePrefixFromCache(anchorEntity);
- if (cachedModuleNamePrefix != null) {
- return cachedModuleNamePrefix;
- }
- final String moduleNamePrefix = buildSchemaContextAndRetrieveModulePrefix(anchorEntity);
- cacheModuleNamePrefix(anchorEntity.getName(), moduleNamePrefix);
- return moduleNamePrefix;
- }
-
- private String buildSchemaContextAndRetrieveModulePrefix(final AnchorEntity anchorEntity) {
- final SchemaSetEntity schemaSetEntity = anchorEntity.getSchemaSet();
- final Map<String, String> yangResourceNameToContent =
- schemaSetEntity.getYangResources().stream().collect(
- Collectors.toMap(YangResourceEntity::getFileName, YangResourceEntity::getContent));
- final SchemaContext schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourceNameToContent)
- .getSchemaContext();
- return schemaContext.getModules().iterator().next().getName();
- }
-
- private void cacheModuleNamePrefix(final String anchorName, final String moduleNamePrefix) {
- final AnchorDataCacheEntry anchorDataCacheEntry = new AnchorDataCacheEntry();
- anchorDataCacheEntry.setProperty(TOP_LEVEL_MODULE_PREFIX_PROPERTY_NAME, moduleNamePrefix);
- if (anchorDataCache.putIfAbsent(anchorName, anchorDataCacheEntry,
- AnchorDataCacheConfig.ANCHOR_DATA_CACHE_TTL_SECS, TimeUnit.SECONDS) == null) {
- log.debug("Module name prefix for an anchor {} is cached", anchorName);
- }
- }
-
- private String getModuleNamePrefixFromCache(final AnchorEntity anchorEntity) {
- if (anchorDataCache.containsKey(anchorEntity.getName())) {
- final AnchorDataCacheEntry anchorDataCacheEntry = anchorDataCache.get(anchorEntity.getName());
- return anchorDataCacheEntry.hasProperty(TOP_LEVEL_MODULE_PREFIX_PROPERTY_NAME)
- ? anchorDataCacheEntry.getProperty(TOP_LEVEL_MODULE_PREFIX_PROPERTY_NAME).toString() : null;
- }
- return null;
- }
-