Remove netconf from commons/opendaylight pom
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / osgi / NetconfOperationServiceFactoryImpl.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.controller.netconf.confignetconfconnector.osgi;
10
11 import com.google.common.base.Function;
12 import com.google.common.collect.Collections2;
13 import com.google.common.collect.Sets;
14 import java.util.Set;
15 import org.opendaylight.controller.config.facade.xml.ConfigSubsystemFacadeFactory;
16 import org.opendaylight.controller.config.util.capability.Capability;
17 import org.opendaylight.controller.config.util.capability.ModuleListener;
18 import org.opendaylight.controller.config.util.capability.YangModuleCapability;
19 import org.opendaylight.controller.netconf.api.monitoring.CapabilityListener;
20 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory;
21 import org.opendaylight.yangtools.yang.model.api.Module;
22
23 public class NetconfOperationServiceFactoryImpl implements NetconfOperationServiceFactory {
24
25     private final ConfigSubsystemFacadeFactory configFacadeFactory;
26
27     public NetconfOperationServiceFactoryImpl(ConfigSubsystemFacadeFactory configFacadeFactory) {
28         this.configFacadeFactory = configFacadeFactory;
29     }
30
31     @Override
32     public NetconfOperationServiceImpl createService(String netconfSessionIdForReporting) {
33         return new NetconfOperationServiceImpl(configFacadeFactory.createFacade(netconfSessionIdForReporting), netconfSessionIdForReporting);
34     }
35
36     @Override
37     public Set<Capability> getCapabilities() {
38         return configFacadeFactory.getCurrentCapabilities();
39     }
40
41     @Override
42     public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
43         return configFacadeFactory.getYangStoreService().registerModuleListener(new ModuleListener() {
44             @Override
45             public void onCapabilitiesChanged(Set<Module> added, Set<Module> removed) {
46                 listener.onCapabilitiesChanged(
47                         transformModulesToCapabilities(added), transformModulesToCapabilities(removed));
48             }
49         });
50     }
51
52     private static final Function<Module, Capability> MODULE_TO_CAPABILITY = new Function<Module, Capability>() {
53         @Override
54         public Capability apply(final Module module) {
55             return new YangModuleCapability(module, module.getSource());
56         }
57     };
58
59     public static Set<Capability> transformModulesToCapabilities(Set<Module> modules) {
60         return Sets.newHashSet(Collections2.transform(modules, MODULE_TO_CAPABILITY));
61     }
62
63 }