Bugfix generated method in Abstract ModuleFactory template.
[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 = new java.util.HashSet<Class<? extends ${abstractServiceInterfaceType}>>();
10     <#if providedServices??>
11     static {
12         <#list providedServices as refId>
13         serviceIfcs.add(${refId});
14         </#list>
15     }
16     </#if>
17
18     @Override
19     public final boolean isModuleImplementingServiceInterface(Class<? extends ${abstractServiceInterfaceType}> serviceInterface) {
20         for (Class<?> ifc: serviceIfcs) {
21             if (serviceInterface.isAssignableFrom(ifc)){
22                 return true;
23             }
24         }
25         return false;
26     }
27
28     @Override
29     public ${moduleType} createModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${bundleContextType} bundleContext) {
30         return instantiateModule(instanceName, dependencyResolver, bundleContext);
31     }
32
33     @Override
34     public ${moduleType} createModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${dynamicMBeanWithInstanceType} old, ${bundleContextType} bundleContext) throws Exception {
35         ${moduleInstanceType} oldModule = null;
36         try {
37             oldModule = (${moduleInstanceType}) old.getModule();
38         } catch(Exception e) {
39             return handleChangedClass(old);
40         }
41         ${moduleInstanceType} module = instantiateModule(instanceName, dependencyResolver, oldModule, old.getInstance(), bundleContext);
42
43         <#list fields as attr>
44         module.set${attr.name}(oldModule.get${attr.name}());
45         </#list>
46
47         return module;
48     }
49
50     public ${moduleInstanceType} instantiateModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${moduleInstanceType} oldModule, ${instanceType} oldInstance, ${bundleContextType} bundleContext) {
51         return new ${moduleInstanceType}(new ${moduleNameType}(NAME, instanceName), dependencyResolver, oldModule, oldInstance);
52     }
53
54     public ${moduleInstanceType} instantiateModule(String instanceName, ${dependencyResolverType} dependencyResolver, ${bundleContextType} bundleContext) {
55         return new ${moduleInstanceType}(new ${moduleNameType}(NAME, instanceName), dependencyResolver);
56     }
57
58     @Override
59     public final String getImplementationName() {
60         return NAME;
61     }
62
63
64     public ${moduleInstanceType} handleChangedClass(${dynamicMBeanWithInstanceType} old) throws Exception {
65         throw new UnsupportedOperationException("Class reloading is not supported");
66     }
67
68     @Override
69     public java.util.Set<${moduleInstanceType}> getDefaultModules(org.opendaylight.controller.config.api.DependencyResolverFactory dependencyResolverFactory, ${bundleContextType} bundleContext) {
70         return new java.util.HashSet<${moduleInstanceType}>();
71     }
72
73 }