2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.netconf.cli.commands.input;
10 import com.google.common.base.Preconditions;
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.Collections;
14 import java.util.HashMap;
15 import java.util.List;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
19 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
20 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
21 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
24 * Input arguments for and rpc/command execution
28 private final List<NormalizedNode<?, ?>> args;
30 private final Map<String, NormalizedNode<?, ?>> nameToArg = new HashMap<>();
32 public Input(final List<NormalizedNode<?, ?>> args) {
33 // FIXME empty Input should be constructed from static factory method
35 this.args = Collections.emptyList();
39 final NormalizedNode<?, ?> input = args.iterator().next();
41 .checkArgument(input instanceof DataContainerChild<?, ?>, "Input container has to be of type Data Container Child.");
42 this.args = new ArrayList<>((Collection) input.getValue());
44 for (final NormalizedNode<?, ?> arg : this.args) {
45 nameToArg.put(arg.getNodeType().getLocalName(), arg);
49 public NormalizedNode<?, ?> getArg(final String name) {
50 return nameToArg.get(name);
53 public NormalizedNode<?, ?> wrap(final QName rpcQName) {
54 //TODO just add the list as children to the node
55 return ImmutableContainerNodeBuilder.create()
56 .withNodeIdentifier(new NodeIdentifier(rpcQName))
57 .withValue((Collection) args).build();