Merge "Optimilization the method datastoreNormalizedNodeToCompositeNode"
authorTony Tkacik <ttkacik@cisco.com>
Wed, 6 Aug 2014 15:52:19 +0000 (15:52 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 6 Aug 2014 15:52:19 +0000 (15:52 +0000)
1  2 
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java

index ce18f7c67d596cbe7d886f6b8a8737da8c1138fa,513b86222636e237b59c099005a1d8ba1cf716ee..73ca02c505f47741ca4e38c071a780a0f32e1cdf
@@@ -15,7 -15,6 +15,7 @@@ import com.google.common.base.Strings
  import com.google.common.collect.ImmutableList;
  import com.google.common.collect.Iterables;
  import com.google.common.collect.Lists;
 +
  import java.net.URI;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
@@@ -33,7 -32,6 +33,7 @@@ import javax.ws.rs.core.Response
  import javax.ws.rs.core.Response.Status;
  import javax.ws.rs.core.UriBuilder;
  import javax.ws.rs.core.UriInfo;
 +
  import org.apache.commons.lang3.StringUtils;
  import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
  import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@@ -62,12 -60,8 +62,8 @@@ import org.opendaylight.yangtools.yang.
  import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceIdentifierBuilder;
  import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
  import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
- import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
- import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
- import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
  import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  import org.opendaylight.yangtools.yang.data.composite.node.schema.cnsn.parser.CnSnToNormalizedNodeParserFactory;
- import org.opendaylight.yangtools.yang.data.composite.node.schema.cnsn.serializer.CnSnFromNormalizedNodeSerializerFactory;
  import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode;
  import org.opendaylight.yangtools.yang.data.impl.NodeFactory;
  import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
@@@ -360,31 -354,31 +356,31 @@@ public class RestconfImpl implements Re
  
      private CompositeNode toStreamCompositeNode(final String streamName, final DataSchemaNode streamSchemaNode) {
          final List<Node<?>> streamNodeValues = new ArrayList<Node<?>>();
 -        List<DataSchemaNode> instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        List<DataSchemaNode> instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) streamSchemaNode), "name");
          final DataSchemaNode nameSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          streamNodeValues
 -                .add(NodeFactory.<String> createImmutableSimpleNode(nameSchemaNode.getQName(), null, streamName));
 +        .add(NodeFactory.<String> createImmutableSimpleNode(nameSchemaNode.getQName(), null, streamName));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) streamSchemaNode), "description");
          final DataSchemaNode descriptionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          streamNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(descriptionSchemaNode.getQName(), null,
                  "DESCRIPTION_PLACEHOLDER"));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) streamSchemaNode), "replay-support");
          final DataSchemaNode replaySupportSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          streamNodeValues.add(NodeFactory.<Boolean> createImmutableSimpleNode(replaySupportSchemaNode.getQName(), null,
                  Boolean.valueOf(true)));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) streamSchemaNode), "replay-log-creation-time");
          final DataSchemaNode replayLogCreationTimeSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          streamNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(replayLogCreationTimeSchemaNode.getQName(),
                  null, ""));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) streamSchemaNode), "events");
          final DataSchemaNode eventsSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          streamNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(eventsSchemaNode.getQName(), null, ""));
  
      private CompositeNode toModuleCompositeNode(final Module module, final DataSchemaNode moduleSchemaNode) {
          final List<Node<?>> moduleNodeValues = new ArrayList<Node<?>>();
 -        List<DataSchemaNode> instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        List<DataSchemaNode> instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) moduleSchemaNode), "name");
          final DataSchemaNode nameSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          moduleNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(nameSchemaNode.getQName(), null,
                  module.getName()));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) moduleSchemaNode), "revision");
          final DataSchemaNode revisionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          Date _revision = module.getRevision();
          moduleNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(revisionSchemaNode.getQName(), null,
                  REVISION_FORMAT.format(_revision)));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) moduleSchemaNode), "namespace");
          final DataSchemaNode namespaceSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          moduleNodeValues.add(NodeFactory.<String> createImmutableSimpleNode(namespaceSchemaNode.getQName(), null,
                  module.getNamespace().toString()));
  
 -        instanceDataChildrenByName = this.controllerContext.findInstanceDataChildrenByName(
 +        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
                  ((DataNodeContainer) moduleSchemaNode), "feature");
          final DataSchemaNode featureSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
          for (final FeatureDefinition feature : module.getFeatures()) {
              }
  
              String payloadName = this.getName(payload);
 -            final DataSchemaNode schemaNode = this.controllerContext.findInstanceDataChildByNameAndNamespace(
 +            final DataSchemaNode schemaNode = ControllerContext.findInstanceDataChildByNameAndNamespace(
                      parentSchema, payloadName, module.getNamespace());
              value = this.normalizeNode(payload, schemaNode, mountPoint);
  
          }
  
          String payloadName = this.getName(payload);
 -        final DataSchemaNode schemaNode = this.controllerContext.findInstanceDataChildByNameAndNamespace(module,
 +        final DataSchemaNode schemaNode = ControllerContext.findInstanceDataChildByNameAndNamespace(module,
                  payloadName, module.getNamespace());
          final CompositeNode value = this.normalizeNode(payload, schemaNode, null);
          final InstanceIdWithSchemaNode iiWithData = this.addLastIdentifierFromData(null, value, schemaNode);
      private boolean representsMountPointRootData(final Node<?> data) {
          URI namespace = this.namespace(data);
          return (SchemaContext.NAME.getNamespace().equals(namespace) /*
 -                                                                     * || MOUNT_POINT_MODULE_NAME .equals( namespace .
 -                                                                     * toString( ) )
 -                                                                     */)
 -                && SchemaContext.NAME.getLocalName().equals(this.localName(data));
 +         * || MOUNT_POINT_MODULE_NAME .equals( namespace .
 +         * toString( ) )
 +         */)
 +         && SchemaContext.NAME.getLocalName().equals(this.localName(data));
      }
  
      private String addMountPointIdentifier(final String identifier) {
          final List<NodeWrapper<?>> children = compositeNodeBuilder.getValues();
          checkNodeMultiplicityAccordingToSchema(schema, children);
          for (final NodeWrapper<? extends Object> child : children) {
 -            final List<DataSchemaNode> potentialSchemaNodes = this.controllerContext.findInstanceDataChildrenByName(
 +            final List<DataSchemaNode> potentialSchemaNodes = ControllerContext.findInstanceDataChildrenByName(
                      schema, child.getLocalName());
  
              if (potentialSchemaNodes.size() > 1 && child.getNamespace() == null) {
          }
  
          if (nodeBuilder.getNamespace() == null || Objects.equal(nodeBuilder.getNamespace(), validQName.getNamespace())
 -                || Objects.equal(nodeBuilder.getNamespace().toString(), moduleName) /*
 -                                                                                     * || Note : this check is wrong -
 -                                                                                     * can never be true as it compares
 -                                                                                     * a URI with a String not sure what
 -                                                                                     * the intention is so commented out
 -                                                                                     * ... Objects . equal ( nodeBuilder
 -                                                                                     * . getNamespace ( ) ,
 -                                                                                     * MOUNT_POINT_MODULE_NAME )
 -                                                                                     */) {
 +                || Objects.equal(nodeBuilder.getNamespace().toString(), moduleName)) {
 +            /*
 +             * || Note : this check is wrong -
 +             * can never be true as it compares
 +             * a URI with a String not sure what
 +             * the intention is so commented out
 +             * ... Objects . equal ( nodeBuilder
 +             * . getNamespace ( ) ,
 +             * MOUNT_POINT_MODULE_NAME )
 +             */
  
              nodeBuilder.setQname(validQName);
          }
      }
  
      private CompositeNode datastoreNormalizedNodeToCompositeNode(final NormalizedNode<?, ?> dataNode, final DataSchemaNode schema) {
-         Iterable<Node<?>> nodes = null;
+         Node<?> nodes = null;
          if (dataNode == null) {
              throw new RestconfDocumentedException(new RestconfError(ErrorType.APPLICATION, ErrorTag.DATA_MISSING,
                      "No data was found."));
          }
-         if (schema instanceof ContainerSchemaNode && dataNode instanceof ContainerNode) {
-             nodes = CnSnFromNormalizedNodeSerializerFactory.getInstance().getContainerNodeSerializer()
-                     .serialize((ContainerSchemaNode) schema, (ContainerNode) dataNode);
-         } else if (schema instanceof ListSchemaNode && dataNode instanceof MapNode) {
-             nodes = CnSnFromNormalizedNodeSerializerFactory.getInstance().getMapNodeSerializer()
-                     .serialize((ListSchemaNode) schema, (MapNode) dataNode);
-         } else if (schema instanceof ListSchemaNode && dataNode instanceof MapEntryNode) {
-             nodes = CnSnFromNormalizedNodeSerializerFactory.getInstance().getMapEntryNodeSerializer()
-                     .serialize((ListSchemaNode) schema, (MapEntryNode) dataNode);
-         }
+         nodes = DataNormalizer.toLegacy(dataNode);
          if (nodes != null) {
-             if (nodes.iterator().hasNext()) {
-                 Node<?> nodeOldStruct = nodes.iterator().next();
-                 return (CompositeNode) nodeOldStruct;
+             if (nodes instanceof CompositeNode) {
+                 return (CompositeNode) nodes;
              } else {
                  LOG.error("The node " + dataNode.getNodeType() + " couldn't be transformed to compositenode.");
              }