package org.opendaylight.controller.config.yang.netconf.mdsal.mapper;
-import org.opendaylight.netconf.mdsal.connector.MdsalNetconfOperationServiceFactory;
+import com.google.common.reflect.AbstractInvocationHandler;
+import com.google.common.reflect.Reflection;
+import java.lang.reflect.Method;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
+import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @deprecated Replaced by blueprint wiring
+ */
+@Deprecated
+public class NetconfMdsalMapperModule extends org.opendaylight.controller.config.yang.netconf.mdsal.mapper.AbstractNetconfMdsalMapperModule {
+
+ private BundleContext bundleContext;
-public class NetconfMdsalMapperModule extends org.opendaylight.controller.config.yang.netconf.mdsal.mapper.AbstractNetconfMdsalMapperModule{
public NetconfMdsalMapperModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
super(identifier, dependencyResolver);
}
@Override
public java.lang.AutoCloseable createInstance() {
- final MdsalNetconfOperationServiceFactory mdsalNetconfOperationServiceFactory =
- new MdsalNetconfOperationServiceFactory(getRootSchemaServiceDependency(), getRootSchemaSourceProviderDependency()) {
- @Override
- public void close() throws Exception {
- super.close();
- getMapperAggregatorDependency().onRemoveNetconfOperationServiceFactory(this);
+ final WaitingServiceTracker<NetconfOperationServiceFactory> tracker =
+ WaitingServiceTracker.create(NetconfOperationServiceFactory.class, bundleContext, "(type=mdsal-netconf-connector)");
+ final NetconfOperationServiceFactory service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
+
+ return Reflection.newProxy(AutoCloseableNetconfOperationServiceFactory.class, new AbstractInvocationHandler() {
+ @Override
+ protected Object handleInvocation(Object proxy, Method method, Object[] args) throws Throwable {
+ if (method.getName().equals("close")) {
+ tracker.close();
+ return null;
+ } else {
+ return method.invoke(service, args);
}
- };
- getDomBrokerDependency().registerConsumer(mdsalNetconfOperationServiceFactory);
- getMapperAggregatorDependency().onAddNetconfOperationServiceFactory(mdsalNetconfOperationServiceFactory);
- return mdsalNetconfOperationServiceFactory;
+ }
+ });
}
+ void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ private static interface AutoCloseableNetconfOperationServiceFactory extends NetconfOperationServiceFactory, AutoCloseable {
+ }
}
* Do not modify this file unless it is present under src/main directory
*/
package org.opendaylight.controller.config.yang.netconf.mdsal.mapper;
-public class NetconfMdsalMapperModuleFactory extends org.opendaylight.controller.config.yang.netconf.mdsal.mapper.AbstractNetconfMdsalMapperModuleFactory {
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @deprecated Replaced by blueprint wiring
+ */
+@Deprecated
+public class NetconfMdsalMapperModuleFactory extends AbstractNetconfMdsalMapperModuleFactory {
+ @Override
+ public NetconfMdsalMapperModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+ NetconfMdsalMapperModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+ NetconfMdsalMapperModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+ oldInstance, bundleContext);
+ module.setBundleContext(bundleContext);
+ return module;
+ }
+
+ @Override
+ public NetconfMdsalMapperModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+ BundleContext bundleContext) {
+ NetconfMdsalMapperModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+ module.setBundleContext(bundleContext);
+ return module;
+ }
}
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
-import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.opendaylight.controller.config.util.capability.Capability;
import org.opendaylight.controller.config.util.capability.YangModuleCapability;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession;
-import org.opendaylight.controller.sal.core.api.Consumer;
import org.opendaylight.controller.sal.core.api.model.SchemaService;
import org.opendaylight.netconf.api.monitoring.CapabilityListener;
import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
+import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactoryListener;
import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class MdsalNetconfOperationServiceFactory implements NetconfOperationServiceFactory, Consumer, AutoCloseable {
+public class MdsalNetconfOperationServiceFactory implements NetconfOperationServiceFactory, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(MdsalNetconfOperationServiceFactory.class);
- private ConsumerSession session = null;
- private DOMDataBroker dataBroker = null;
- private DOMRpcService rpcService = null;
+ private final DOMDataBroker dataBroker;
+ private final DOMRpcService rpcService;
+
private final CurrentSchemaContext currentSchemaContext;
private final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProviderDependency;
+ private final NetconfOperationServiceFactoryListener netconfOperationServiceFactoryListener;
+
+ public MdsalNetconfOperationServiceFactory(final SchemaService schemaService,
+ final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProviderDependency,
+ final NetconfOperationServiceFactoryListener netconfOperationServiceFactoryListener,
+ final DOMDataBroker dataBroker,
+ final DOMRpcService rpcService) {
+
+ this.dataBroker = dataBroker;
+ this.rpcService = rpcService;
- public MdsalNetconfOperationServiceFactory(final SchemaService schemaService, final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProviderDependency) {
this.rootSchemaSourceProviderDependency = rootSchemaSourceProviderDependency;
this.currentSchemaContext = new CurrentSchemaContext(Preconditions.checkNotNull(schemaService), rootSchemaSourceProviderDependency);
+ this.netconfOperationServiceFactoryListener = netconfOperationServiceFactoryListener;
+ this.netconfOperationServiceFactoryListener.onAddNetconfOperationServiceFactory(this);
}
@Override
@Override
public void close() throws Exception {
currentSchemaContext.close();
+ netconfOperationServiceFactoryListener.onRemoveNetconfOperationServiceFactory(this);
}
@Override
public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
return currentSchemaContext.registerCapabilityListener(listener);
}
-
- @Override
- public void onSessionInitiated(ConsumerSession session) {
- this.session = Preconditions.checkNotNull(session);
- this.dataBroker = this.session.getService(DOMDataBroker.class);
- this.rpcService = this.session.getService(DOMRpcService.class);
- }
-
- @Override
- public Collection<ConsumerFunctionality> getConsumerFunctionality() {
- return Collections.emptySet();
- }
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 Inocybe Technologies Inc. and others. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+ odl:use-default-for-reference-types="true">
+
+ <reference id="domDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"/>
+ <reference id="domRpcService" interface="org.opendaylight.controller.md.sal.dom.api.DOMRpcService"/>
+ <reference id="schemaService"
+ interface="org.opendaylight.controller.sal.core.api.model.SchemaService"/>
+ <reference id="rootSchemaSourceProviderDependency"
+ interface="org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider"/>
+ <reference id="netconfOperationServiceFactoryListener"
+ interface="org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactoryListener"
+ odl:type="mapper-aggregator-registry"/>
+
+ <bean id="mdsalNetconfOperationServiceFactory"
+ class="org.opendaylight.netconf.mdsal.connector.MdsalNetconfOperationServiceFactory"
+ destroy-method="close">
+ <argument ref="schemaService"/>
+ <argument ref="rootSchemaSourceProviderDependency"/>
+ <argument ref="netconfOperationServiceFactoryListener"/>
+ <argument ref="domDataBroker"/>
+ <argument ref="domRpcService"/>
+ </bean>
+ <service ref="mdsalNetconfOperationServiceFactory"
+ interface="org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory"
+ odl:type="mdsal-netconf-connector"/>
+
+</blueprint>
identity netconf-mdsal-mapper {
base config:module-type;
config:provided-service nnm:netconf-northbound-mapper;
+ status deprecated;
}
augment "/config:modules/config:module/config:configuration" {
+ status deprecated;
case netconf-mdsal-mapper {
when "/config:modules/config:module/config:type = 'netconf-mdsal-mapper'";
-
- container root-schema-service {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity md-sal-dom:schema-service;
- }
- }
- }
-
- container root-schema-source-provider {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity md-sal-dom:yang-text-source-provider;
- }
- }
- }
-
- container dom-broker {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity md-sal-dom:dom-broker-osgi-registry;
- }
- }
- }
-
- container mapper-aggregator {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity nnm:netconf-mapper-registry;
- }
- }
- }
}
}
<module>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:mapper">prefix:netconf-mdsal-mapper</type>
<name>netconf-mdsal-mapper</name>
- <root-schema-service>
- <type xmlns:dom="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">dom:schema-service</type>
- <name>yang-schema-service</name>
- </root-schema-service>
- <root-schema-source-provider>
- <type xmlns:dom="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">dom:yang-text-source-provider</type>
- <name>yang-text-source-provider</name>
- </root-schema-source-provider>
- <dom-broker xmlns="urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:mapper">
- <type xmlns:dom="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">dom:dom-broker-osgi-registry</type>
- <name>dom-broker</name>
- </dom-broker>
- <mapper-aggregator xmlns="urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:mapper">
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper">prefix:netconf-mapper-registry</type>
- <name>mapper-aggregator-registry</name>
- </mapper-aggregator>
</module>
<module>