2 * Copyright (c) 2015 Cisco Systems, Inc. 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
9 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
13 import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
14 import org.opendaylight.groupbasedpolicy.location.resolver.LocationResolver;
15 import org.opendaylight.groupbasedpolicy.renderer.RendererManager;
16 import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider;
17 import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener;
18 import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 public class GroupbasedpolicyModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractGroupbasedpolicyModule {
24 private static final Logger LOG = LoggerFactory.getLogger(GroupbasedpolicyModule.class);
26 public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
27 super(identifier, dependencyResolver);
30 public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyModule oldModule, java.lang.AutoCloseable oldInstance) {
31 super(identifier, dependencyResolver, oldModule, oldInstance);
35 public void customValidation() {
36 // add custom validation form module attributes here.
40 * On module start, creates SubjectFeatureDefinitionProvider instance, in order to put known Subject Feature Definitions to operational Datastore
42 * @return SubjectFeatureDefinitionProvider
45 public java.lang.AutoCloseable createInstance() {
46 DataBroker dataProvider = getDataBrokerDependency();
47 PolicyValidatorRegistry validatorRegistry = getPolicyValidatorRegistryDependency();
50 Instance instance = new Instance(dataProvider, validatorRegistry);
51 LOG.info("{} successfully started.", GroupbasedpolicyModule.class.getCanonicalName());
53 } catch (TransactionCommitFailedException e) {
55 "Error creating instance of SubjectFeatureDefinitionProvider; Subject Feature Definitions were not put to Datastore");
56 throw new RuntimeException(e);
60 private static class Instance implements AutoCloseable {
62 private final SubjectFeatureDefinitionProvider sfdp;
63 private final SupportedClassifierDefinitionListener supportedClassifierDefinitionListener;
64 private final SupportedActionDefinitionListener supportedActionDefinitionListener;
65 private final LocationResolver locationResolver;
66 private final RendererManager rendererManager;
68 Instance(DataBroker dataProvider, PolicyValidatorRegistry validatorRegistry) throws TransactionCommitFailedException {
69 sfdp = new SubjectFeatureDefinitionProvider(dataProvider);
70 supportedClassifierDefinitionListener = new SupportedClassifierDefinitionListener(dataProvider, validatorRegistry);
71 supportedActionDefinitionListener = new SupportedActionDefinitionListener(dataProvider);
72 locationResolver = new LocationResolver(dataProvider);
73 rendererManager = new RendererManager(dataProvider);
77 public void close() throws Exception {
79 supportedClassifierDefinitionListener.close();
80 supportedActionDefinitionListener.close();
81 locationResolver.close();
82 rendererManager.close();