*/
package org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.AttributesBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.AugmentationSchemaProxy;
protected abstract NodeParserDispatcher<E> getDispatcher();
@Override
- public N parse(Iterable<E> element, S schema) {
+ public N parse(Iterable<E> elements, S schema) {
- checkAtLeastOneNode(schema, element);
+ checkAtLeastOneNode(schema, elements);
DataContainerNodeBuilder<?, N> containerBuilder = getBuilder(schema);
// Map child nodes to QName
- LinkedListMultimap<QName, E> mappedChildElements = mapChildElements(element);
+ LinkedListMultimap<QName, E> mappedChildElements = mapChildElements(elements);
// Map child nodes from Augments
Map<QName, AugmentationSchema> mappedAugmentChildNodes = mapChildElementsFromAugments(schema);
choicesToElements.putAll(choiceSchema, childrenForQName);
// Regular child nodes
} else {
- DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> builtChildNode = getDispatcher()
+ DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> builtChildNode = getDispatcher()
.dispatchChildElement(childSchema, childrenForQName);
containerBuilder.withChild(builtChildNode);
}
containerBuilder.withChild(getDispatcher().dispatchChildElement(augSchemaProxy, augmentsToElements.get(augmentSchema)));
}
+ if (containerBuilder instanceof AttributesBuilder) {
+ final int size = Iterables.size(elements);
+ Preconditions.checkArgument(size == 1, "Unexpected number of elements: %s, should be 1 for: %s",
+ size, schema);
+ ((AttributesBuilder<?>) containerBuilder).withAttributes(getAttributes(elements.iterator().next()));
+ }
+
return containerBuilder.build();
}
+ protected Map<QName, String> getAttributes(E e) {
+ return Collections.emptyMap();
+ }
+
private boolean isMarkedAs(Map<QName, ?> mappedAugmentChildNodes, QName qName) {
return mappedAugmentChildNodes.containsKey(qName);
}