<#assign MapperUtil=statics["com.kobylynskyi.graphql.codegen.mapper.GraphqlTypeToJavaTypeMapper"]> <#if package?has_content> package ${package} import scala.beans.BeanProperty <#if imports??> <#list imports as import> import ${import}.* <#if toStringForRequest> import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer <#if equalsAndHashCode> import java.util.Objects <#if toString> import java.util.StringJoiner <#if fields?has_content> <#if enumImportItSelfInScala?has_content> <#list fields as field> <#list enumImportItSelfInScala as enum> <#if field.type?contains("Seq[")> <#if enum == field.type?replace("Seq[", "")?replace("]", "")> import ${field.type?replace("Seq[", "")?replace("]", "")}._ <#else > <#if enum == field.type> import ${field.type}._ <#if javaDoc?has_content> /** <#list javaDoc as javaDocLine> * ${javaDocLine} */ <#if generatedInfo.getGeneratedType()?has_content> @${generatedInfo.getGeneratedType()}( value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "${generatedInfo.getDateTime()}" ) <#list annotations as annotation> @${annotation} case class ${className}( <#if fields?has_content> <#list fields as field> <#if field.deprecated> @Deprecated <#list field.annotations as annotation> @${annotation} @BeanProperty <#if !immutableModels>var <#else>${field.name}: ${field.type}<#if field.defaultValue?has_content> = ${field.defaultValue}<#if field_has_next>, )<#if implements?has_content> extends <#list implements as interface>${interface}<#if interface_has_next> with { <#if toString> override def toString(): String = { <#if fields?has_content> Seq(<#list fields as field> <#if MapperUtil.isScalaPrimitive(field.type)><#if toStringForRequest>"${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true)<#else>"${field.originalName}: " + ${field.name}<#else>if (${field.name} != null) <#if toStringForRequest>"${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true)<#else><#if field.type == "String"> "${field.originalName}: \"${field.name}\"" <#else> "${field.originalName}: ${field.name}" else ""<#if field_has_next>, ).filter(_ != "").mkString("{", ",", "}") <#else> "{}" } } <#if builder> object ${className} { def builder(): ${className}.Builder = new Builder() class Builder { <#if fields?has_content> <#list fields as field> private var ${field.name}: ${field.type} = <#if field.defaultValue?has_content>${field.defaultValue}<#else>_ <#if fields?has_content> <#list fields as field> <#if field.javaDoc?has_content> /** <#list field.javaDoc as javaDocLine> * ${javaDocLine} */ <#if field.deprecated> @Deprecated def set${field.name?cap_first}(${field.name}: ${field.type}): Builder = { this.${field.name} = ${field.name} this } def build(): ${className} = ${className}(<#list fields as field>${field.name}<#if field_has_next>, ) } }