in dbus-java-utils/src/main/java/org/freedesktop/dbus/utils/generator/ClassBuilderInfo.java [190:349]
private List<String> createClassFileContent(boolean _staticClass, Set<String> _otherImports) {
List<String> content = new ArrayList<>();
String classIndent = _staticClass ? " " : "";
String memberIndent = _staticClass ? " " : " ";
Set<String> allImports = new TreeSet<>();
allImports.addAll(getImports());
if (_otherImports != null) {
allImports.addAll(_otherImports);
}
if (!_staticClass) {
content.add("package " + getPackageName() + ";");
content.add("");
content.add("/**");
content.add(" * Auto-generated class.");
content.add(" */");
} else {
content.add("");
}
if (getDbusPackageName() != null) {
allImports.add(DBusInterfaceName.class.getName());
content.add(classIndent + "@" + DBusInterfaceName.class.getSimpleName() + "(\"" + getDbusPackageName() + "\")");
}
String bgn = classIndent + "public " + (_staticClass ? "static " : "") + (getClassType() == ClassType.INTERFACE ? "interface" : "class");
bgn += " " + getClassName();
if (getExtendClass() != null) {
if (!getExtendClass().startsWith("java.lang.")) {
getImports().add(getExtendClass()); // add class import if extends-argument is not a java.lang. class
allImports.add(getExtendClass());
}
bgn += " extends " + getClassName(getExtendClass());
}
if (!getImplementedInterfaces().isEmpty()) {
bgn += " implements " + getImplementedInterfaces().stream().map(e -> getClassName(e)).collect(Collectors.joining(", "));
// add classes import if implements-arguments are not a java.lang. classes
getImports().addAll(getImplementedInterfaces().stream().filter(s -> !s.startsWith("java.lang.")).collect(Collectors.toList()));
}
bgn += " {";
content.add(bgn);
if (_staticClass) {
content.add("");
}
// add member fields
for (ClassMember member : members) {
if (!member.getAnnotations().isEmpty()) {
content.addAll(member.getAnnotations().stream().map(l -> memberIndent + l).collect(Collectors.toList()));
}
String memberType = TypeConverter.getProperJavaClass(member.getType(), allImports);
if (!member.getGenerics().isEmpty()) {
memberType += "<" + member.getGenerics().stream().map(c -> TypeConverter.getProperJavaClass(c, allImports)).collect(Collectors.joining(" ,")) + ">";
}
content.add(memberIndent + "private " + (member.isFinalMember() ? "final " : "") + memberType + " "
+ member.getName() + ";");
}
if (!getConstructors().isEmpty()) {
content.add("");
for (ClassConstructor constructor : getConstructors()) {
String outerIndent = _staticClass ? " " : " ";
String cstr = outerIndent + getClassName() + "(";
if (!constructor.getSuperArguments().isEmpty()) {
cstr += constructor.getSuperArguments().entrySet().stream().map(e -> e.getValue() + " " + e.getKey()).collect(Collectors.joining(", "));
if (!constructor.getArguments().isEmpty()) {
cstr += ", ";
}
}
if (!constructor.getArguments().isEmpty()) {
cstr += constructor.getArguments().entrySet().stream().map(e -> e.getValue() + " " + e.getKey()).collect(Collectors.joining(", "));
}
if (constructor.getThrowArguments().isEmpty()) {
cstr += ") {";
} else {
cstr += ") throws " + String.join(", ", constructor.getThrowArguments()) + " {";
}
content.add(cstr);
String innerIndent = _staticClass ? " " : " ";
if (!constructor.getSuperArguments().isEmpty()) {
content.add(innerIndent + "super(" + String.join(", ", constructor.getSuperArguments().keySet()) + ");");
}
if (!constructor.getArguments().isEmpty()) {
for (Entry<String, String> e : constructor.getArguments().entrySet()) {
content.add(innerIndent + "this." + e.getKey().replaceFirst("^_(.+)", "$1") + " = " + e.getKey() + ";");
}
}
content.add(outerIndent + "}");
}
}
content.add("");
// add getter and setter
for (ClassMember member : members) {
String memberType = TypeConverter.getProperJavaClass(member.getType(), allImports);
if (!member.getGenerics().isEmpty()) {
memberType += "<" + member.getGenerics().stream().map(c -> TypeConverter.getProperJavaClass(c, allImports)).collect(Collectors.joining(" ,")) + ">";
}
String getterSetterName = StringUtil.snakeToCamelCase(StringUtil.upperCaseFirstChar(member.getName()));
if (!member.isFinalMember()) {
content.add(memberIndent + "public void set" + getterSetterName + "("
+ memberType + " arg) {");
content.add(memberIndent + " " + member.getName() + " = arg;");
content.add(memberIndent +"}");
}
content.add("");
content.add(memberIndent + "public " + memberType + " get" + getterSetterName + "() {");
content.add(memberIndent + " return " + member.getName() + ";");
content.add(memberIndent + "}");
}
content.add("");
for (ClassMethod mth : getMethods()) {
if (!mth.getAnnotations().isEmpty()) {
content.addAll(mth.getAnnotations().stream().map(a -> memberIndent + a).collect(Collectors.toList()));
}
String clzMth = memberIndent + "public " + (mth.getReturnType() == null ? "void " : TypeConverter.getProperJavaClass(mth.getReturnType(), allImports) + " ");
clzMth += mth.getName() + "(";
if (!mth.getArguments().isEmpty()) {
clzMth += mth.getArguments().entrySet().stream().map(e -> e.getValue() + " " + e.getKey())
.collect(Collectors.joining(", "));
}
clzMth += ");";
content.add(clzMth);
}
content.add("");
for (ClassBuilderInfo inner : getInnerClasses()) {
content.addAll(inner.createClassFileContent(true, allImports));
allImports.addAll(inner.getImports()); // collect additional imports which may have been added by inner class
}
content.add(classIndent + "}");
// write imports to resulting content if this is not a inner class
if (!_staticClass) {
content.add(2,"");
content.addAll(2, allImports.stream().filter(l -> !l.startsWith("java.lang.")).map(l -> "import " + l + ";").collect(Collectors.toList()));
}
return content;
}