* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.netconf.mdsal.connector.ops;
-import com.google.common.base.Optional;
-import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Iterator;
import java.util.Map;
+import java.util.Optional;
import javax.xml.transform.dom.DOMSource;
-import org.opendaylight.controller.config.util.xml.DocumentedException;
-import org.opendaylight.controller.config.util.xml.DocumentedException.ErrorSeverity;
-import org.opendaylight.controller.config.util.xml.DocumentedException.ErrorTag;
-import org.opendaylight.controller.config.util.xml.DocumentedException.ErrorType;
-import org.opendaylight.controller.config.util.xml.XmlElement;
+import org.opendaylight.netconf.api.DocumentedException;
+import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity;
+import org.opendaylight.netconf.api.DocumentedException.ErrorTag;
+import org.opendaylight.netconf.api.DocumentedException.ErrorType;
import org.opendaylight.netconf.api.NetconfDocumentedException;
+import org.opendaylight.netconf.api.xml.XmlElement;
import org.opendaylight.netconf.mdsal.connector.CurrentSchemaContext;
-import org.opendaylight.netconf.util.mapping.AbstractSingletonNetconfOperation;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-abstract class AbstractEdit extends AbstractSingletonNetconfOperation {
+abstract class AbstractEdit extends AbstractConfigOperation {
private static final Logger LOG = LoggerFactory.getLogger(AbstractEdit.class);
private static final String TARGET_KEY = "target";
protected DataSchemaNode getSchemaNodeFromNamespace(final String namespace, final XmlElement element)
throws DocumentedException {
- final Iterator<Module> it;
+ final Iterator<? extends Module> it;
try {
// Returns module with newest revision since findModuleByNamespace returns a set of modules and we only
// need the newest one
}
final Module module = it.next();
- final java.util.Optional<DataSchemaNode> schemaNode =
- module.findDataChildByName(QName.create(module.getQNameModule(), element.getName()));
+ final String elementName = element.getName();
+ final Optional<DataSchemaNode> schemaNode = module.findDataChildByName(QName.create(module.getQNameModule(),
+ element.getName()));
if (!schemaNode.isPresent()) {
throw new DocumentedException(
- "Unable to find node with namespace: " + namespace + "in module: " + module.toString(),
+ "Unable to find node " + elementName + " with namespace: " + namespace + "in module: "
+ + module.toString(),
ErrorType.APPLICATION,
ErrorTag.UNKNOWN_NAMESPACE,
ErrorSeverity.ERROR);
return schemaNode.get();
}
- protected static Datastore extractTargetParameter(final XmlElement operationElement, final String operationName)
+ protected static XmlElement extractTargetElement(final XmlElement operationElement, final String operationName)
throws DocumentedException {
final NodeList elementsByTagName = getElementsByTagName(operationElement, TARGET_KEY);
// Direct lookup instead of using XmlElement class due to performance
throw new DocumentedException("Multiple target elements", ErrorType.RPC, ErrorTag.UNKNOWN_ATTRIBUTE,
ErrorSeverity.ERROR);
} else {
- final XmlElement targetChildNode =
- XmlElement.fromDomElement((Element) elementsByTagName.item(0)).getOnlyChildElement();
- return Datastore.valueOf(targetChildNode.getName());
+ return XmlElement.fromDomElement((Element) elementsByTagName.item(0)).getOnlyChildElement();
}
}
-
- protected static XmlElement getElement(final XmlElement parent, final String elementName)
- throws DocumentedException {
- final Optional<XmlElement> childNode = parent.getOnlyChildElementOptionally(elementName);
- if (!childNode.isPresent()) {
- throw new DocumentedException(elementName + " element is missing",
- ErrorType.PROTOCOL,
- ErrorTag.MISSING_ELEMENT,
- ErrorSeverity.ERROR);
- }
-
- return childNode.get();
- }
-
- protected static NodeList getElementsByTagName(final XmlElement parent, final String key) throws
- DocumentedException {
- final Element domParent = parent.getDomElement();
- final NodeList elementsByTagName;
-
- if (Strings.isNullOrEmpty(domParent.getPrefix())) {
- elementsByTagName = domParent.getElementsByTagName(key);
- } else {
- elementsByTagName = domParent.getElementsByTagNameNS(parent.getNamespace(), key);
- }
-
- return elementsByTagName;
- }
}