FullyQualifiedName moduleFQN,
List<Field> 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);
));
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<? extends Module> 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"+
return new GeneratedObjectBuilder(b.build()).toGeneratedObject();
}
+ private String genCodeToCopyAttributes(List<Field> 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<Field> moduleFields) {
String result = "\n"+
"@Override\n"+
content.append(input.getFQN().getPackageName());
content.append(";\n");
}
+
+ if (!input.getImports().isEmpty())
+ content.append('\n');
+ for (FullyQualifiedName importedType : input.getImports()) {
+ content.append("import ");
+ content.append(importedType.toString());
+ content.append(";\n");
+ }
+ if (!input.getImports().isEmpty())
+ content.append('\n');
+
content.append(maybeAddComment(input.getClassJavaDoc(), true));
for (String classAnnotation : input.getClassAnnotations()) {
}
private static String maybeAddComment(Optional<String> comment, boolean isJavadoc) {
-
if (comment.isPresent()) {
String input = comment.get();
return StringUtil.writeComment(input, isJavadoc);
private final List<String> classAnnotations = new ArrayList<>();
+ private final List<FullyQualifiedName> importFQNs = new ArrayList<>();
+
private final List<FullyQualifiedName> extendsFQNs = new ArrayList<>();
private final List<FullyQualifiedName> implementsFQNs = new ArrayList<>();
classAnnotations.add(checkNotNull(annotation));
}
+ public void addImportFQN(FullyQualifiedName fqn) {
+ importFQNs.add(fqn);
+ }
+
public void addExtendsFQN(FullyQualifiedName fqn) {
extendsFQNs.add(fqn);
}
return header;
}
+ @Override
+ public List<FullyQualifiedName> getImports() {
+ return Collections.unmodifiableList(importFQNs);
+ }
+
@Override
public Optional<String> getClassJavaDoc() {
return classJavaDoc;
public List<String> getBodyElements() {
return Collections.unmodifiableList(bodyElements);
}
+
};
}
}