import java.util.Collection;
import java.util.List;
import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener;
+import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.ModuleLike;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
.setRevision(ImportOnlyModuleRevisionBuilder.fromYangCommon(module.getQNameModule().getRevision())
.getRevisionIdentifier())
.setNamespace(new Uri(module.getNamespace().toString()))
+ .setFeature(extractFeatures(module))
// FIXME: inline this once it's disambiguated
.setSubmodule(submoduleMap)
.build();
.setConformanceType(ConformanceType.Implement)
// FIXME: inline this once it's disambiguated
.setSubmodule(submoduleMap)
- // FIXME: Add also deviations and features lists to module entries
+ .setFeature(extractFeatures(module))
+ // FIXME: Add also deviations to module entries
.build();
})
.collect(BindingMap.toMap());
.setModuleSetId(String.valueOf(moduleSetId))
.build();
}
+
+ private static List<YangIdentifier> extractFeatures(final ModuleLike module) {
+ final var namespace = module.getQNameModule();
+
+ return module.getFeatures().stream()
+ .map(FeatureDefinition::getQName)
+ // belt-and-suspenders: make sure the feature namespace matches
+ .filter(featureName -> namespace.equals(featureName.getModule()))
+ .map(featureName -> new YangIdentifier(featureName.getLocalName()))
+ .collect(Collectors.toUnmodifiableList());
+ }
}
*/
package org.opendaylight.netconf.mdsal.yang.library;
+import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
.setRevision(CommonLeafsRevisionBuilder.emptyRevision())
.build()))
.setConformanceType(Module.ConformanceType.Implement)
+ .setFeature(List.of())
.build(), new ModuleBuilder()
.setName(new YangIdentifier("ietf-yang-library"))
.setNamespace(new Uri("urn:ietf:params:xml:ns:yang:ietf-yang-library"))
.setRevision(new Revision(new RevisionIdentifier("2019-01-04")))
.setConformanceType(Module.ConformanceType.Implement)
+ .setFeature(List.of())
.build()))
.build());
}
import com.google.common.collect.ImmutableMap;
import java.util.Collections;
+import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
.setNamespace(new Uri("test:namespace"))
.setRevision(new RevisionIdentifier("2013-07-22"))
.setSubmodule(ImmutableMap.of(sub.key(), sub))
+ .setFeature(List.of())
.build();
Module yangLibrary = new ModuleBuilder().setName(new YangIdentifier("ietf-yang-library_2019-01-04"))
.setNamespace(new Uri("urn:ietf:params:xml:ns:yang:ietf-yang-library"))
.setRevision(new RevisionIdentifier("2019-01-04"))
+ .setFeature(List.of())
.build();
ModuleSet modulesSet = new ModuleSetBuilder()