protected void printDomainInstancer(FormattedPrintWriter pw, DomainDeclaredType domainTypeElement) {
if (!entityResolver.shouldHaveIdMethod(domainTypeElement)) {
pw.println(" return new ", domainTypeElement, "();");
} else {
pw.println(domainTypeElement, " " + RESULT_NAME, " = new ", domainTypeElement, "();");
String setterMethod = MethodHelper.toSetter(domainTypeElement.getIdMethod(entityResolver));
if (ProcessorUtils.hasMethod(setterMethod, domainTypeElement.asElement())) {
pw.println(RESULT_NAME + "." + MethodHelper.toSetter(domainTypeElement.getIdMethod(entityResolver)) + "((", domainTypeElement.getId(entityResolver), ")" + "id);");
} else {
pw.println("if (id != null) {");
pw.println("throw new ", RuntimeException.class, "(\"Unable to define ID for imutable entity. Please define " + setterMethod + " method for ", domainTypeElement, "!\");");
pw.println("}");
}
pw.println("return " + RESULT_NAME + ";");
}
}
}