*/
package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
-import java.util.Map;
-
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.MapEntryNodeBaseParser;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.w3c.dom.Element;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.LinkedListMultimap;
-
-final class MapEntryNodeDomParser extends MapEntryNodeBaseParser<Element> {
+final class MapEntryNodeDomParser extends ListEntryNodeDomParser<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> {
- private final NodeParserDispatcher<Element> dispatcher;
+ private final boolean strictParsing;
MapEntryNodeDomParser(final NodeParserDispatcher<Element> dispatcher) {
- this.dispatcher = Preconditions.checkNotNull(dispatcher);
+ super(dispatcher);
+ // TODO strict parsing attribute should be injected into superclass via a constructor
+ // WIth current approach (getter) we have to call super.strictParsing in constructor and cannot reuse constructors
+ this.strictParsing = super.strictParsing();
}
- @Override
- protected LinkedListMultimap<QName, Element> mapChildElements(Iterable<Element> elements) {
- return DomUtils.mapChildElementsForSingletonNode(elements.iterator().next());
+ MapEntryNodeDomParser(final NodeParserDispatcher<Element> dispatcher, final boolean strictParsing) {
+ super(dispatcher);
+ this.strictParsing = strictParsing;
+ }
+
+ MapEntryNodeDomParser(final NodeParserDispatcher<Element> dispatcher, final BuildingStrategy<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> strategy,
+ final boolean strictParsing) {
+ super(strategy, dispatcher);
+ this.strictParsing = strictParsing;
}
@Override
- protected NodeParserDispatcher<Element> getDispatcher() {
- return dispatcher;
+ protected final DataContainerNodeBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> getBuilder(
+ ListSchemaNode schema) {
+ return Builders.mapEntryBuilder(schema);
}
@Override
- protected Map<QName, String> getAttributes(Element element) {
- return DomUtils.toAttributes(element.getAttributes());
+ protected boolean strictParsing() {
+ return strictParsing;
}
}