X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2Fgofactory%2FAbsFactoryGeneratedObjectFactory.java;h=3ee43a6ba8567e9130af45107583db9d8c1525f6;hp=b37d9186d0654a892e80dc5dabca5f47b4a4d463;hb=135a5848aa950dda6998203876b1daeb89a0a1c5;hpb=b1dc1a6d2d0a45e5aeb1b84cf6c516d7a3947465 diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsFactoryGeneratedObjectFactory.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsFactoryGeneratedObjectFactory.java index b37d9186d0..3ee43a6ba8 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsFactoryGeneratedObjectFactory.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsFactoryGeneratedObjectFactory.java @@ -63,6 +63,10 @@ public class AbsFactoryGeneratedObjectFactory { FullyQualifiedName moduleFQN, List moduleFields) { JavaFileInputBuilder b = new JavaFileInputBuilder(); + + b.addImportFQN(new FullyQualifiedName(Module.class)); + b.addImportFQN(new FullyQualifiedName(ModuleIdentifier.class)); + Annotation moduleQNameAnnotation = Annotation.createModuleQNameANnotation(yangModuleQName); b.addClassAnnotation(moduleQNameAnnotation); @@ -110,8 +114,14 @@ public class AbsFactoryGeneratedObjectFactory { )); b.addToBody(format("\n"+ - "public %s handleChangedClass(%s dependencyResolver, %s old, %s bundleContext) throws Exception {\n"+ - "return handleChangedClass(old);\n"+ + "public %s handleChangedClass(%s dependencyResolver, %s old, %s bundleContext) throws Exception {\n" + + // "// @Deprecated return handleChangedClass(old);\n" + + "String instanceName = old.getModule().getIdentifier().getInstanceName();\n" + + "%1$s newModule = new %1$s(new ModuleIdentifier(NAME, instanceName), dependencyResolver);\n" + + "Module oldModule = old.getModule();\n" + + "Class oldModuleClass = oldModule.getClass();\n" + + genCodeToCopyAttributes(moduleFields) + + "return newModule;\n" + "}\n", moduleFQN, DependencyResolver.class.getCanonicalName(), DynamicMBeanWithInstance.class.getCanonicalName(), BUNDLE_CONTEXT)); b.addToBody(format("\n@Deprecated\n"+ @@ -129,6 +139,15 @@ public class AbsFactoryGeneratedObjectFactory { return new GeneratedObjectBuilder(b.build()).toGeneratedObject(); } + private String genCodeToCopyAttributes(List moduleFields) { + StringBuilder sb = new StringBuilder("\n"); + for (Field field : moduleFields) { + sb.append(format("newModule.set%1$s( (%2$s) oldModuleClass.getMethod(\"get%1$s\").invoke(oldModule));\n", field.getName(), field.getType())); + } + sb.append('\n'); + return sb.toString(); + } + private static String getCreateModule(FullyQualifiedName moduleFQN, List moduleFields) { String result = "\n"+ "@Override\n"+