import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
+import java.util.List;
import java.util.Optional;
-import java.util.Set;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
import org.opendaylight.restconf.nb.rfc8040.Rfc8040.MonitoringModule;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Deviation;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
* @return mapped data as {@link NormalizedNode}
*/
public static NormalizedNode<NodeIdentifier, Collection<DataContainerChild<? extends PathArgument, ?>>>
- mapModulesByIetfYangLibraryYang(final Set<Module> modules, final Module ietfYangLibraryModule,
- final SchemaContext context, final String moduleSetId) {
+ mapModulesByIetfYangLibraryYang(final Collection<? extends Module> modules,
+ final Module ietfYangLibraryModule, final SchemaContext context, final String moduleSetId) {
final DataSchemaNode modulesStateSch =
ietfYangLibraryModule.getDataChildByName(IetfYangLibrary.MODUELS_STATE_CONT_QNAME);
final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> modulesStateBuilder =
for (final Deviation deviation : module.getDeviations()) {
final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> deviationEntryNode =
Builders.mapEntryBuilder((ListSchemaNode) deviationsSchema);
- final QName lastComponent = deviation.getTargetPath().getLastComponent();
- addChildOfModuleBySpecificModule(IetfYangLibrary.SPECIFIC_MODULE_NAME_LEAF_QNAME, deviationEntryNode,
- context.findModule(lastComponent.getModule()).get().getName(),
- ietfYangLibraryModule);
- addChildOfModuleBySpecificModule(IetfYangLibrary.SPECIFIC_MODULE_REVISION_LEAF_QNAME, deviationEntryNode,
- lastComponent.getRevision(), ietfYangLibraryModule);
+ final List<QName> ids = deviation.getTargetPath().getNodeIdentifiers();
+ final QName lastComponent = ids.get(ids.size() - 1);
+ addCommonLeafs(context.findModule(lastComponent.getModule()).get(), deviationEntryNode,
+ ietfYangLibraryModule);
deviations.withChild(deviationEntryNode.build());
}
mapEntryBuilder.withChild(deviations.build());
*/
private static void addFeatureLeafList(final QName qnameOfFeaturesLeafList,
final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
- final Set<FeatureDefinition> features, final Module ietfYangLibraryModule) {
+ final Collection<? extends FeatureDefinition> features, final Module ietfYangLibraryModule) {
final DataSchemaNode schemaNode =
findSchemaInListOfModulesSchema(qnameOfFeaturesLeafList, ietfYangLibraryModule);
final ListNodeBuilder<Object, LeafSetEntryNode<Object>> leafSetBuilder =
throw new RestconfDocumentedException(qnameOfSchema.getLocalName() + " doesn't exist.");
}
- /**
- * Mapping childrens of list-module.
- *
- * @param specifiLeafQName
- * qname of leaf
- * @param mapEntryBuilder
- * maptEntryBuilder of parent for mapping children
- * @param value
- * valeu of leaf
- * @param ietfYangLibraryModule
- * ietf-yang-library module
- */
- private static void addChildOfModuleBySpecificModule(final QName specifiLeafQName,
- final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> mapEntryBuilder,
- final Object value, final Module ietfYangLibraryModule) {
- final DataSchemaNode nameLeaf = findNodeInGroupings(specifiLeafQName, ietfYangLibraryModule);
- mapEntryBuilder.withChild(Builders.leafBuilder((LeafSchemaNode) nameLeaf).withValue(value).build());
- }
-
/**
* Find schema of specific leaf in list-module grouping.
*
*/
@SuppressWarnings("rawtypes")
public static NormalizedNode mapYangNotificationStreamByIetfRestconfMonitoring(final QName notifiQName,
- final Set<NotificationDefinition> notifications, final Instant start, final String outputType,
- final URI uri, final Module monitoringModule, final boolean existParent) {
+ final Collection<? extends NotificationDefinition> notifications, final Instant start,
+ final String outputType, final URI uri, final Module monitoringModule, final boolean existParent) {
for (final NotificationDefinition notificationDefinition : notifications) {
if (notificationDefinition.getQName().equals(notifiQName)) {
final DataSchemaNode streamListSchema = ((ContainerSchemaNode) ((ContainerSchemaNode) monitoringModule
@SuppressWarnings("rawtypes")
public static NormalizedNode mapDataChangeNotificationStreamByIetfRestconfMonitoring(
final YangInstanceIdentifier path, final Instant start, final String outputType, final URI uri,
- final Module monitoringModule, final boolean existParent, final SchemaContext schemaContext) {
+ final Module monitoringModule, final boolean existParent, final EffectiveModelContext schemaContext) {
final SchemaNode schemaNode = ParserIdentifier
.toInstanceIdentifier(ParserIdentifier.stringFromYangInstanceIdentifier(path, schemaContext),
schemaContext, Optional.empty())