/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2013 Cisco Systems, 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
*/
-package org.opendaylight.controller.sal.binding.osgi;
+package org.opendaylight.controller.config.manager.impl.osgi.mapping;
-import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder;
+import javassist.ClassPool;
import org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl;
import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService;
import org.opendaylight.yangtools.yang.model.api.SchemaServiceListener;
-import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import java.util.Hashtable;
-public class Activator implements BundleActivator {
+public class RuntimeGeneratedMappingServiceActivator implements AutoCloseable {
+
+ private static final ClassPool CLASS_POOL = ClassPool.getDefault();
- private ServiceRegistration<?> reg;
private ServiceRegistration<SchemaServiceListener> listenerReg;
private ServiceRegistration<BindingIndependentMappingService> mappingReg;
+ private ModuleInfoBundleTracker moduleInfoBundleTracker;
- @Override
- public void start(BundleContext context) throws Exception {
- RuntimeGeneratedMappingServiceImpl service = new RuntimeGeneratedMappingServiceImpl();
- service.setPool(SingletonHolder.CLASS_POOL);
+ public RuntimeGeneratedMappingServiceActivator(ModuleInfoBundleTracker moduleInfoBundleTracker) {
+ this.moduleInfoBundleTracker = moduleInfoBundleTracker;
+ }
+
+ public RuntimeGeneratedMappingServiceImpl startRuntimeMappingService(BundleContext context) {
+ RuntimeGeneratedMappingServiceImpl service = new RuntimeGeneratedMappingServiceImpl(moduleInfoBundleTracker.getModuleInfoLoadingStrategy());
+ service.setPool(CLASS_POOL);
service.init();
startRuntimeMappingService(service, context);
+ return service;
}
private void startRuntimeMappingService(RuntimeGeneratedMappingServiceImpl service, BundleContext context) {
Hashtable<String, String> properties = new Hashtable<String, String>();
listenerReg = context.registerService(SchemaServiceListener.class, service, properties);
mappingReg = context.registerService(BindingIndependentMappingService.class, service, properties);
-
+
}
@Override
- public void stop(BundleContext context) throws Exception {
- if(listenerReg != null) {
- listenerReg.unregister();
- }
- if(mappingReg != null) {
- mappingReg.unregister();
- }
+ public void close() throws Exception {
+ mappingReg.unregister();
+ listenerReg.unregister();
}
}