private static DataNormalizationOperation<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinNormalization(potential); } return new UnorderedMapMixinNormalization(potential); }
private static InstanceIdToNodes<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } return potential.isUserOrdered() ? new InstanceIdToCompositeNodes.OrderedMapMixinNormalization(potential) : new InstanceIdToCompositeNodes.UnorderedMapMixinNormalization(potential); }
private static DataSchemaContextNode<?> fromListSchemaNode(final ListSchemaNode potential) { List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinContextNode(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinContextNode(potential); } return new UnorderedMapMixinContextNode(potential); }
private static DataSchemaContextNode<?> fromListSchemaNode(final ListSchemaNode potential) { List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinContextNode(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinContextNode(potential); } return new UnorderedMapMixinContextNode(potential); }
private static InstanceIdToNodes<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } return potential.isUserOrdered() ? new InstanceIdToCompositeNodes.OrderedMapMixinNormalization(potential) : new InstanceIdToCompositeNodes.UnorderedMapMixinNormalization(potential); }
private static ModificationApplyOperation fromListSchemaNode(final ListSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { final List<QName> keyDefinition = schemaNode.getKeyDefinition(); final SchemaAwareApplyOperation op; if (keyDefinition == null || keyDefinition.isEmpty()) { op = new UnkeyedListModificationStrategy(schemaNode, treeConfig); } else if (schemaNode.isUserOrdered()) { op = new OrderedMapModificationStrategy(schemaNode, treeConfig); } else { op = new UnorderedMapModificationStrategy(schemaNode, treeConfig); } return MinMaxElementsValidation.from(op, schemaNode); }
private static ModificationApplyOperation fromListSchemaNode(final ListSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { final List<QName> keyDefinition = schemaNode.getKeyDefinition(); final SchemaAwareApplyOperation op; if (keyDefinition == null || keyDefinition.isEmpty()) { op = new UnkeyedListModificationStrategy(schemaNode, treeConfig); } else if (schemaNode.isUserOrdered()) { op = new OrderedMapModificationStrategy(schemaNode, treeConfig); } else { op = new UnorderedMapModificationStrategy(schemaNode, treeConfig); } return MinMaxElementsValidation.from(op, schemaNode); }
/** * This method creates an empty list container of a particular type. * * @deprecated This method is not generally useful, as empty lists do not convey information in YANG (they are * equivalent to non-present lists). It also leaks implementation details to a broader scope and should * never have been public in the first place. */ @Deprecated public NormalizedNode<?, ?> getDefaultNodeFor(final YangInstanceIdentifier parentMapPath) { final BindingCodecTreeNode<?> mapCodec = requireNonNull( codecRegistry.getCodecContext().getSubtreeCodec(parentMapPath), "Codec not found for yang instance identifier: " + parentMapPath); final WithStatus schema = mapCodec.getSchema(); if (schema instanceof ListSchemaNode) { final ListSchemaNode castedSchema = (ListSchemaNode) schema; return castedSchema.isUserOrdered() ? Builders.orderedMapBuilder(castedSchema).build() : Builders.mapBuilder(castedSchema).build(); } throw new IllegalArgumentException("Path does not point to list schema node"); }
private void emitList(final StringBuilder builer, final String getterName, final Type valueType, final ListSchemaNode child) { final CharSequence startEvent; builer.append(statement(assign("int", "_count", invoke(getterName, "size")))); if (child.getKeyDefinition().isEmpty()) { startEvent = startUnkeyedList(classReference(valueType), "_count"); } else if (child.isUserOrdered()) { startEvent = startOrderedMapNode(classReference(valueType), "_count"); } else { startEvent = startMapNode(classReference(valueType), "_count"); } builer.append(statement(startEvent)); builer.append(forEach(getterName, valueType, tryToUseCacheElse(CURRENT, statement(staticInvokeEmitter(valueType, CURRENT))))); builer.append(statement(endNode())); } }
private void emitList(final StringBuilder sb, final String getterName, final Type valueType, final ListSchemaNode child) { final CharSequence startEvent; sb.append(statement(assign("int", "_count", invoke(getterName, "size")))); if (child.getKeyDefinition().isEmpty()) { startEvent = startUnkeyedList(classReference(valueType), "_count"); } else if (child.isUserOrdered()) { startEvent = startOrderedMapNode(classReference(valueType), "_count"); } else { startEvent = startMapNode(classReference(valueType), "_count"); } sb.append(statement(startEvent)); sb.append(forEach(getterName, valueType, tryToUseCacheElse(CURRENT, statement(staticInvokeEmitter(valueType, CURRENT))))); sb.append(statement(endNode())); } }
/** * Get default DOM object on path for list. * * @param parentMapPath * - path * @return specific DOM object */ public NormalizedNode<?, ?> getDefaultNodeFor(final YangInstanceIdentifier parentMapPath) { final BindingTreeNodeCodec<?> mapCodec = codecRegistry.getCodecContext().getSubtreeCodec(parentMapPath); final Object schema = mapCodec.getSchema(); if (schema instanceof ListSchemaNode) { final ListSchemaNode castedSchema = (ListSchemaNode) schema; if (castedSchema.isUserOrdered()) { return Builders.orderedMapBuilder(castedSchema).build(); } else { return Builders.mapBuilder(castedSchema).build(); } } throw new IllegalArgumentException("Path does not point to list schema node"); }
@Override public void write(final NormalizedNodeStreamWriter writer) throws IOException { final ListSchemaNode schema = (ListSchemaNode) getSchema(); writer.nextDataSchemaNode(schema); if (schema.getKeyDefinition().isEmpty()) { writer.startUnkeyedList(provideNodeIdentifier(), childSizeHint()); } else if (schema.isUserOrdered()) { writer.startOrderedMapNode(provideNodeIdentifier(), childSizeHint()); } else { writer.startMapNode(provideNodeIdentifier(), childSizeHint()); } super.write(writer); writer.endNode(); }
@VisibleForTesting static DataContainerChild<?, ?> wrapListIntoMixinNode( final Collection<NormalizedNode<?, ?>> normalizedRootElements, final ListSchemaNode listSchema) { if (listSchema.getKeyDefinition().isEmpty()) { final CollectionNodeBuilder<UnkeyedListEntryNode, UnkeyedListNode> listBuilder = Builders.unkeyedListBuilder(); listBuilder.withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(listSchema.getQName())); for (NormalizedNode<?, ?> normalizedRootElement : normalizedRootElements) { listBuilder.withChild((UnkeyedListEntryNode) normalizedRootElement); } return listBuilder.build(); } else { final CollectionNodeBuilder<MapEntryNode, ? extends MapNode> listBuilder = listSchema.isUserOrdered() ? Builders.orderedMapBuilder() : Builders.mapBuilder(); listBuilder.withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(listSchema.getQName())); for (NormalizedNode<?, ?> normalizedRootElement : normalizedRootElements) { listBuilder.withChild((MapEntryNode) normalizedRootElement); } return listBuilder.build(); } }
private void emitList(final ListSchemaNode child) { super.writer.startListNode(child.getQName()); child.getWhenCondition().ifPresent(this::emitWhen); // FIXME: BUG-2444: *(ifFeatureNode ) child.getMustConstraints().forEach(this::emitMust); emitKey(child.getKeyDefinition()); emitUniqueConstraints(child.getUniqueConstraints()); emitConfigNode(child.isConfiguration()); child.getElementCountConstraint().ifPresent(this::emitCountConstraint); emitOrderedBy(child.isUserOrdered()); emitDocumentedNode(child); emitDataNodeContainer(child); emitUnknownStatementNodes(child.getUnknownSchemaNodes()); emitNotifications(child.getNotifications()); emitActions(child.getActions()); super.writer.endNode(); }
@Override public void write(final NormalizedNodeStreamWriter writer) throws IOException { final ListSchemaNode schema = (ListSchemaNode) getSchema(); writer.nextDataSchemaNode(schema); if (schema.getKeyDefinition().isEmpty()) { writer.startUnkeyedList(provideNodeIdentifier(), childSizeHint()); } else if (schema.isUserOrdered()) { writer.startOrderedMapNode(provideNodeIdentifier(), childSizeHint()); } else { writer.startMapNode(provideNodeIdentifier(), childSizeHint()); } super.write(writer); writer.endNode(); }