37fd05bc5232eb85c51f0bc0c4e071f440e185d8
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / resources / freeMarker / factory_abs_template.ftl
1 <@headerD header=header/>
2 package ${packageName};
3
4 <@javadocD object=javadoc/>
5 <@typeDeclarationD object=typeDeclaration/>
6 {
7
8     public static final java.lang.String NAME = "${globallyUniqueName}";
9     private static final java.util.Set<Class<? extends ${abstractServiceInterfaceType}>> serviceIfcs;
10     <#if providedServices??>
11     static {
12         java.util.Set<Class<? extends ${abstractServiceInterfaceType}>> serviceIfcs2 = new java.util.HashSet<Class<? extends ${abstractServiceInterfaceType}>>();
13         <#list providedServices as refId>
14         serviceIfcs2.add(${refId});
15         </#list>
16         serviceIfcs = java.util.Collections.unmodifiableSet(serviceIfcs2);
17     }
18     </#if>
19
20     @Override
21     public final boolean isModuleImplementingServiceInterface(Class<? extends ${abstractServiceInterfaceType}> serviceInterface) {
22         for (Class<?> ifc: serviceIfcs) {
23             if (serviceInterface.isAssignableFrom(ifc)){
24                 return true;
25             }
26         }
27         return false;
28     }
29
30     @Override
31     public java.util.Set<Class<? extends ${abstractServiceInterfaceType}>> getImplementedServiceIntefaces() {
32         return serviceIfcs;
33     }
34
35
36     @Override
37     public ${moduleType} createModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${bundleContextType} bundleContext) {
38         return instantiateModule(instanceName, dependencyResolver, bundleContext);
39     }
40
41     @Override
42     public ${moduleType} createModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${dynamicMBeanWithInstanceType} old, ${bundleContextType} bundleContext) throws Exception {
43         ${moduleInstanceType} oldModule = null;
44         try {
45             oldModule = (${moduleInstanceType}) old.getModule();
46         } catch(Exception e) {
47             return handleChangedClass(old);
48         }
49         ${moduleInstanceType} module = instantiateModule(instanceName, dependencyResolver, oldModule, old.getInstance(), bundleContext);
50
51         <#list fields as attr>
52         module.set${attr.name}(oldModule.get${attr.name}());
53         </#list>
54
55         return module;
56     }
57
58     public ${moduleInstanceType} instantiateModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${moduleInstanceType} oldModule, ${instanceType} oldInstance, ${bundleContextType} bundleContext) {
59         return new ${moduleInstanceType}(new ${moduleNameType}(NAME, instanceName), dependencyResolver, oldModule, oldInstance);
60     }
61
62     public ${moduleInstanceType} instantiateModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${bundleContextType} bundleContext) {
63         return new ${moduleInstanceType}(new ${moduleNameType}(NAME, instanceName), dependencyResolver);
64     }
65
66     @Override
67     public final String getImplementationName() {
68         return NAME;
69     }
70
71
72     public ${moduleInstanceType} handleChangedClass(${dynamicMBeanWithInstanceType} old) throws Exception {
73         throw new UnsupportedOperationException("Class reloading is not supported");
74     }
75
76     @Override
77     public java.util.Set<${moduleInstanceType}> getDefaultModules(org.opendaylight.controller.config.api.DependencyResolverFactory dependencyResolverFactory, ${bundleContextType} bundleContext) {
78         return new java.util.HashSet<${moduleInstanceType}>();
79     }
80
81 }