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.netconf.test.tool;
10 import static java.util.Objects.requireNonNull;
12 import com.google.common.collect.Sets;
14 import java.util.Optional;
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.opendaylight.netconf.api.capability.Capability;
18 import org.opendaylight.netconf.server.api.monitoring.CapabilityListener;
19 import org.opendaylight.netconf.server.api.operations.NetconfOperation;
20 import org.opendaylight.netconf.server.api.operations.NetconfOperationService;
21 import org.opendaylight.netconf.server.api.operations.NetconfOperationServiceFactory;
22 import org.opendaylight.netconf.test.tool.rpc.DataList;
23 import org.opendaylight.netconf.test.tool.rpc.SimulatedCommit;
24 import org.opendaylight.netconf.test.tool.rpc.SimulatedCreateSubscription;
25 import org.opendaylight.netconf.test.tool.rpc.SimulatedDiscardChanges;
26 import org.opendaylight.netconf.test.tool.rpc.SimulatedEditConfig;
27 import org.opendaylight.netconf.test.tool.rpc.SimulatedGet;
28 import org.opendaylight.netconf.test.tool.rpc.SimulatedGetConfig;
29 import org.opendaylight.netconf.test.tool.rpc.SimulatedLock;
30 import org.opendaylight.netconf.test.tool.rpc.SimulatedUnLock;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.SessionIdType;
32 import org.opendaylight.yangtools.concepts.Registration;
34 class SimulatedOperationProvider implements NetconfOperationServiceFactory {
35 private final @NonNull Set<Capability> caps;
36 private final Optional<File> notificationsFile;
37 private final Optional<File> initialConfigXMLFile;
39 SimulatedOperationProvider(final Set<Capability> caps,
40 final Optional<File> notificationsFile,
41 final Optional<File> initialConfigXMLFile) {
42 this.caps = requireNonNull(caps);
43 this.notificationsFile = notificationsFile;
44 this.initialConfigXMLFile = initialConfigXMLFile;
48 public Set<Capability> getCapabilities() {
53 public Registration registerCapabilityListener(final CapabilityListener listener) {
54 listener.onCapabilitiesChanged(caps, Set.of());
59 public NetconfOperationService createService(final SessionIdType sessionId) {
60 return new SimulatedOperationService(
61 sessionId, notificationsFile, initialConfigXMLFile);
64 static class SimulatedOperationService implements NetconfOperationService {
65 private final SessionIdType currentSessionId;
66 private final Optional<File> notificationsFile;
67 private final Optional<File> initialConfigXMLFile;
69 SimulatedOperationService(final SessionIdType currentSessionId, final Optional<File> notificationsFile,
70 final Optional<File> initialConfigXMLFile) {
71 this.currentSessionId = requireNonNull(currentSessionId);
72 this.notificationsFile = notificationsFile;
73 this.initialConfigXMLFile = initialConfigXMLFile;
77 public Set<NetconfOperation> getNetconfOperations() {
78 final DataList storage = new DataList();
79 final SimulatedGet sGet = new SimulatedGet(currentSessionId, storage);
80 final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(currentSessionId, storage);
81 final SimulatedGetConfig sGetConfig = new SimulatedGetConfig(currentSessionId, storage,
82 initialConfigXMLFile);
83 final SimulatedCommit sCommit = new SimulatedCommit(currentSessionId);
84 final SimulatedLock sLock = new SimulatedLock(currentSessionId);
85 final SimulatedUnLock sUnlock = new SimulatedUnLock(currentSessionId);
86 final SimulatedCreateSubscription sCreateSubs = new SimulatedCreateSubscription(currentSessionId,
88 final SimulatedDiscardChanges sDiscardChanges = new SimulatedDiscardChanges(currentSessionId);
89 return Sets.newHashSet(
90 sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges);