1 package org.opendaylight.controller.config.yang.netconf.mdsal.monitoring;
3 import com.google.common.base.Optional;
4 import com.google.common.collect.Sets;
5 import java.util.ArrayList;
6 import java.util.Collection;
7 import java.util.Collections;
10 import org.opendaylight.controller.netconf.api.Capability;
11 import org.opendaylight.controller.netconf.api.monitoring.CapabilityListener;
12 import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService;
13 import org.opendaylight.controller.netconf.mapping.api.NetconfOperation;
14 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService;
15 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory;
16 import org.opendaylight.controller.netconf.monitoring.GetSchema;
17 import org.opendaylight.controller.netconf.monitoring.MonitoringConstants;
19 public class NetconfMdsalMonitoringMapperModule extends org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.AbstractNetconfMdsalMonitoringMapperModule {
20 public NetconfMdsalMonitoringMapperModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
21 super(identifier, dependencyResolver);
24 public NetconfMdsalMonitoringMapperModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.NetconfMdsalMonitoringMapperModule oldModule, final java.lang.AutoCloseable oldInstance) {
25 super(identifier, dependencyResolver, oldModule, oldInstance);
29 public void customValidation() {
30 // add custom validation form module attributes here.
34 public java.lang.AutoCloseable createInstance() {
35 final NetconfMonitoringService serverMonitoringDependency = getServerMonitoringDependency();
37 final MonitoringToMdsalWriter monitoringToMdsalWriter = new MonitoringToMdsalWriter(serverMonitoringDependency);
38 getBindingAwareBrokerDependency().registerProvider(monitoringToMdsalWriter);
40 final MdSalMonitoringMapperFactory mdSalMonitoringMapperFactory = new MdSalMonitoringMapperFactory(new MdsalMonitoringMapper(serverMonitoringDependency)) {
44 monitoringToMdsalWriter.close();
45 getAggregatorDependency().onRemoveNetconfOperationServiceFactory(this);
49 getAggregatorDependency().onAddNetconfOperationServiceFactory(mdSalMonitoringMapperFactory);
50 return mdSalMonitoringMapperFactory;
54 // FIXME almost exactly same code as in netconf-monitoring, refactor
55 private static class MdSalMonitoringMapperFactory implements NetconfOperationServiceFactory, AutoCloseable {
57 private final NetconfOperationService operationService;
59 private static final Set<Capability> CAPABILITIES = Sets.<Capability>newHashSet(new Capability() {
62 public String getCapabilityUri() {
63 return MonitoringConstants.URI;
67 public Optional<String> getModuleNamespace() {
68 return Optional.of(MonitoringConstants.NAMESPACE);
72 public Optional<String> getModuleName() {
73 return Optional.of(MonitoringConstants.MODULE_NAME);
77 public Optional<String> getRevision() {
78 return Optional.of(MonitoringConstants.MODULE_REVISION);
82 public Optional<String> getCapabilitySchema() {
83 return Optional.absent();
87 public Collection<String> getLocation() {
88 return Collections.emptyList();
92 private static final AutoCloseable AUTO_CLOSEABLE = new AutoCloseable() {
94 public void close() throws Exception {
99 private final List<CapabilityListener> listeners = new ArrayList<>();
101 public MdSalMonitoringMapperFactory(final NetconfOperationService operationService) {
102 this.operationService = operationService;
106 public NetconfOperationService createService(final String netconfSessionIdForReporting) {
107 return operationService;
111 public Set<Capability> getCapabilities() {
116 public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
117 listener.onCapabilitiesAdded(getCapabilities());
118 listeners.add(listener);
119 return AUTO_CLOSEABLE;
123 public void close() {
124 for (final CapabilityListener listener : listeners) {
125 listener.onCapabilitiesRemoved(getCapabilities());
131 private static class MdsalMonitoringMapper implements NetconfOperationService {
133 private final NetconfMonitoringService serverMonitoringDependency;
135 public MdsalMonitoringMapper(final NetconfMonitoringService serverMonitoringDependency) {
136 this.serverMonitoringDependency = serverMonitoringDependency;
140 public Set<NetconfOperation> getNetconfOperations() {
141 return Collections.<NetconfOperation>singleton(new GetSchema(serverMonitoringDependency));
145 public void close() {