All Downloads are FREE. Search and download functionalities are using the official Maven repository.

templates.java-micronaut.common.model.pojo.mustache Maven / Gradle / Ivy

{{#formatNoEmptyLines}}
/**
 * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}}
{{#isDeprecated}}
 *
 * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
{{/isDeprecated}}
 */
{{#isDeprecated}}
@Deprecated
{{/isDeprecated}}
{{#description}}
    {{#generateSwagger2Annotations}}
@Schema({{#name}}name = "{{name}}", {{/name}}description = "{{{description}}}"{{#isDeprecated}}, deprecated = true{{/isDeprecated}})
    {{/generateSwagger2Annotations}}
{{/description}}
{{#lombok}}
    {{#parent}}
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
    {{/parent}}
@Accessors(chain = true)
    {{#requiredPropertiesInConstructor}}
        {{#vendorExtensions.withRequiredVars}}
            {{^parent}}
@EqualsAndHashCode
@ToString
            {{/parent}}
@Getter
@Setter
        {{/vendorExtensions.withRequiredVars}}
        {{^vendorExtensions.withRequiredVars}}
@NoArgsConstructor
@AllArgsConstructor
@Data
        {{/vendorExtensions.withRequiredVars}}
    {{/requiredPropertiesInConstructor}}
    {{^requiredPropertiesInConstructor}}
@NoArgsConstructor
@AllArgsConstructor
@Data
    {{/requiredPropertiesInConstructor}}
{{/lombok}}
{{#micronaut_serde_jackson}}
@Serdeable
{{/micronaut_serde_jackson}}
{{#jackson}}
    {{#vendorExtensions.hasOwnVars}}
        {{#vendorExtensions.withMultipleVars}}
@JsonPropertyOrder({{openbrace}}
            {{#vars}}
    {{classname}}.JSON_PROPERTY_{{nameInSnakeCase}},
            {{/vars}}
{{closebrace}})
        {{/vendorExtensions.withMultipleVars}}
        {{^vendorExtensions.withMultipleVars}}
@JsonPropertyOrder({{#vars}}{{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{/vars}})
        {{/vendorExtensions.withMultipleVars}}
    {{/vendorExtensions.hasOwnVars}}
{{/jackson}}
{{#additionalModelTypeAnnotations}}
{{{.}}}
{{/additionalModelTypeAnnotations}}
{{#generatedAnnotation}}
{{>common/generatedAnnotation}}
{{/generatedAnnotation}}
{{>common/model/typeInfoAnnotation}}
{{>common/model/xmlAnnotation}}
{{#useBeanValidation}}
    {{^micronaut_serde_jackson}}
@Introspected
    {{/micronaut_serde_jackson}}
{{/useBeanValidation}}
{{#vendorExtensions.x-class-extra-annotation}}
{{{.}}}
{{/vendorExtensions.x-class-extra-annotation}}
{{!Declare the class with extends and implements}}
public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}}{
{{/formatNoEmptyLines}}

    {{#serializableModel}}

    @Serial
    private static final long serialVersionUID = {{{vendorExtensions.serialId}}}L;
    {{/serializableModel}}

    {{#vars}}
    public static final String JSON_PROPERTY_{{nameInSnakeCase}} = "{{baseName}}";
    {{/vars}}

    {{#vars}}
        {{#formatNoEmptyLines}}
        {{#description}}
    /**
     * {{description}}
        {{#deprecated}}
     *
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
        {{/deprecated}}
     */
        {{/description}}
        {{^description}}
            {{#deprecated}}
    /**
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
     */
            {{/deprecated}}
        {{/description}}
        {{#deprecated}}
    @Deprecated
        {{/deprecated}}
{{>common/params/validation}}
        {{#withXml}}
            {{#isXmlAttribute}}
    @XmlAttribute(name = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}"
            {{/isXmlAttribute}}
            {{^isXmlAttribute}}
                {{^isContainer}}
    @XmlElement({{#xmlNamespace}}namespace = "{{xmlNamespace}}", {{/xmlNamespace}}name = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
                {{/isContainer}}
                {{#isContainer}}
    // Is a container wrapped = {{isXmlWrapped}}
                    {{#items}}
    // items.name = {{name}} items.baseName = {{baseName}} items.xmlName = {{xmlName}} items.xmlNamespace = {{xmlNamespace}}
    // items.example = {{example}} items.type = {{dataType}}
    @XmlElement({{#xmlNamespace}}namespace = "{{xmlNamespace}}", {{/xmlNamespace}}name = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
                    {{/items}}
                    {{#isXmlWrapped}}
    @XmlElementWrapper({{#xmlNamespace}}namespace = "{{xmlNamespace}}", {{/xmlNamespace}}name = "{{#xmlName}}{{xmlName}}{{/xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}")
                    {{/isXmlWrapped}}
                {{/isContainer}}
            {{/isXmlAttribute}}
        {{/withXml}}
        {{#generateSwagger2Annotations}}
    @Schema(name = "{{{baseName}}}"{{#isReadOnly}}, accessMode = Schema.AccessMode.READ_ONLY{{/isReadOnly}}{{#example}}, example = "{{{.}}}"{{/example}}{{#description}}, description = "{{{.}}}"{{/description}}, requiredMode = {{#required}}Schema.RequiredMode.REQUIRED{{/required}}{{^required}}Schema.RequiredMode.NOT_REQUIRED{{/required}}{{#deprecated}}, deprecated = true{{/deprecated}})
        {{/generateSwagger2Annotations}}
        {{#vendorExtensions.x-is-jackson-optional-nullable}}
            {{!Unannotated, Jackson would pick this up automatically and add it *in addition* to the _JsonNullable getter field}}
    @JsonIgnore
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{^vendorExtensions.x-is-jackson-optional-nullable}}
            {{#jackson}}
{{>common/model/jackson_annotations}}
            {{/jackson}}
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{#vendorExtensions.x-field-extra-annotation}}
    {{{.}}}
        {{/vendorExtensions.x-field-extra-annotation}}
        {{#vendorExtensions.x-is-jackson-optional-nullable}}
            {{#isContainer}}
    private JsonNullable<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}> {{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>undefined();
            {{/isContainer}}
            {{^isContainer}}
    private JsonNullable<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}> {{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
            {{/isContainer}}
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{^vendorExtensions.x-is-jackson-optional-nullable}}
            {{#isContainer}}
    private {{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}{{#required}}{{^requiredPropertiesInConstructor}}{{#vendorExtensions.defaultValueIsNotNull}}{{#vendorExtensions.defaultValueInit}} = {{{.}}}{{/vendorExtensions.defaultValueInit}}{{/vendorExtensions.defaultValueIsNotNull}}{{/requiredPropertiesInConstructor}}{{/required}};
            {{/isContainer}}
            {{^isContainer}}
    {{#isDiscriminator}}protected{{/isDiscriminator}}{{^isDiscriminator}}private{{/isDiscriminator}} {{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}{{#vendorExtensions.defaultValueIsNotNull}}{{#vendorExtensions.defaultValueInit}} = {{{.}}}{{/vendorExtensions.defaultValueInit}}{{/vendorExtensions.defaultValueIsNotNull}};
            {{/isContainer}}
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{/formatNoEmptyLines}}

    {{/vars}}

    {{#requiredPropertiesInConstructor}}
        {{^micronaut_serde_jackson}}
            {{#vendorExtensions.withRequiredVars}}
    private {{classname}}() {
    }

            {{/vendorExtensions.withRequiredVars}}
        {{/micronaut_serde_jackson}}
        {{#formatNoEmptyLines}}
        {{#vendorExtensions.withRequiredVars}}
    public {{classname}}({{#vendorExtensions.requiredVarsWithoutDiscriminator}}{{#isReadOnly}}{{#vendorExtensions.isServer}}{{^-first}}, {{/-first}}{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}{{/vendorExtensions.isServer}}{{/isReadOnly}}{{^isReadOnly}}{{^-first}}, {{/-first}}{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}{{/isReadOnly}}{{/vendorExtensions.requiredVarsWithoutDiscriminator}}) {
        {{#parent}}
        {{#vendorExtensions.requiredParentVarsWithoutDiscriminator.0}}super({{/vendorExtensions.requiredParentVarsWithoutDiscriminator.0}}{{#vendorExtensions.requiredParentVarsWithoutDiscriminator}}{{#vendorExtensions.isServerOrNotReadOnly}}{{^-first}}, {{/-first}}{{name}}{{/vendorExtensions.isServerOrNotReadOnly}}{{/vendorExtensions.requiredParentVarsWithoutDiscriminator}}{{#vendorExtensions.requiredParentVarsWithoutDiscriminator.0}});{{/vendorExtensions.requiredParentVarsWithoutDiscriminator.0}}
        {{/parent}}
        {{#vendorExtensions.requiredVars}}
            {{#isDiscriminator}}
                {{#useOneOfInterfaces}}
                    {{#vendorExtensions.x-implements}}
        this.{{name}} = {{name}};
                    {{/vendorExtensions.x-implements}}
                {{/useOneOfInterfaces}}
            {{/isDiscriminator}}
            {{^isDiscriminator}}
                {{#isReadOnly}}
                    {{#vendorExtensions.isServer}}
        this.{{name}} = {{name}};
                    {{/vendorExtensions.isServer}}
                {{/isReadOnly}}
                {{^isReadOnly}}
        this.{{name}} = {{name}};
                {{/isReadOnly}}
            {{/isDiscriminator}}
        {{/vendorExtensions.requiredVars}}
    }
        {{/vendorExtensions.withRequiredVars}}
        {{/formatNoEmptyLines}}
    {{/requiredPropertiesInConstructor}}

    {{#vars}}
        {{^vendorExtensions.lombok}}
    /**
        {{#description}}
     * {{description}}
     *
        {{/description}}
     * @return the {{name}} property value
    {{#deprecated}}
     *
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
    {{/deprecated}}
     */
    {{#vendorExtensions.x-extra-annotation}}
    {{{.}}}
    {{/vendorExtensions.x-extra-annotation}}
    {{#deprecated}}
    @Deprecated
    {{/deprecated}}
    {{#isDiscriminator}}
        {{#parent}}
    @Override
        {{/parent}}
        {{^parent}}
            {{#vendorExtensions.overridden}}
    @Override
            {{/vendorExtensions.overridden}}
        {{/parent}}
    {{/isDiscriminator}}
    public {{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{getter}}() {
        {{#vendorExtensions.x-is-jackson-optional-nullable}}
            {{#isReadOnly}}
            {{! A readonly attribute doesn't have setter => jackson will set null directly if explicitly returned by API, so make sure we have an empty JsonNullable}}
        if ({{name}} == null) {
            {{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}};
        }
            {{/isReadOnly}}
        return {{name}}.orElse(null);
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{^vendorExtensions.x-is-jackson-optional-nullable}}
        return {{name}};
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
    }
        {{/vendorExtensions.lombok}}

    {{#useOptional}}
        {{^required}}
    /**
        {{#description}}
     * {{description}}
     *
        {{/description}}
     * @return the {{name}} property value wrapped in an optional
    {{#deprecated}}
     *
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
    {{/deprecated}}
     */
    {{#jackson}}
    @JsonIgnore
    {{/jackson}}
    {{#deprecated}}
    @Deprecated
    {{/deprecated}}
    public Optional<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}> {{getter}}Optional() {
        {{^vendorExtensions.x-is-jackson-optional-nullable}}
        return Optional.ofNullable({{name}});
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
        {{#vendorExtensions.x-is-jackson-optional-nullable}}
        return Optional.ofNullable({{getter}});
        {{/vendorExtensions.x-is-jackson-optional-nullable}}
    }
        {{/required}}
    {{/useOptional}}

    {{^vendorExtensions.lombok}}
    /**
     * Set the {{name}} property value
     *
     * @param {{name}} property value to set
    {{#deprecated}}
     *
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
    {{/deprecated}}
     */
        {{#vendorExtensions.x-setter-extra-annotation}}
    {{{.}}}
        {{/vendorExtensions.x-setter-extra-annotation}}
    {{#deprecated}}
    @Deprecated
    {{/deprecated}}
    public void {{setter}}({{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}) {
            {{#vendorExtensions.x-is-jackson-optional-nullable}}
        this.{{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>of({{name}});
            {{/vendorExtensions.x-is-jackson-optional-nullable}}
            {{^vendorExtensions.x-is-jackson-optional-nullable}}
        this.{{name}} = {{name}};
            {{/vendorExtensions.x-is-jackson-optional-nullable}}
    }
    {{/vendorExtensions.lombok}}

            {{#vendorExtensions.x-is-jackson-optional-nullable}}
    /**
     * A JsonNullable getter that will be used for JSON serialization.
     *
     * @return JsonNullable version of {{name}}
     */
{{>common/model/jackson_annotations}}
    public JsonNullable<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}> {{getter}}_JsonNullable() {
        return {{name}};
    }

    @JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}})
    public void {{setter}}_JsonNullable(JsonNullable<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}> {{name}}) {
    {{! For getters/setters that have name differing from attribute name, we must include setter (albeit private) for jackson to be able to set the attribute}}       this.{{name}} = {{name}};
    }
        {{/vendorExtensions.x-is-jackson-optional-nullable}}

        {{^isReadOnly}}
            {{^vendorExtensions.lombok}}
    /**
     * Set {{name}} in a chainable fashion.
     *
     * @return The same instance of {{classname}} for chaining.
    {{#deprecated}}
     *
     * @deprecated{{#vendorExtensions.x-deprecated-message}} {{{.}}}{{/vendorExtensions.x-deprecated-message}}
    {{/deprecated}}
     */
    {{#deprecated}}
    @Deprecated
    {{/deprecated}}
    public {{classname}} {{name}}({{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}) {
            {{#vendorExtensions.x-is-jackson-optional-nullable}}
        this.{{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>of({{name}});
            {{/vendorExtensions.x-is-jackson-optional-nullable}}
            {{^vendorExtensions.x-is-jackson-optional-nullable}}
        this.{{name}} = {{name}};
            {{/vendorExtensions.x-is-jackson-optional-nullable}}
        return this;
    }
            {{/vendorExtensions.lombok}}
            {{#isArray}}
    /**
     * Add an item to the {{name}} property in a chainable fashion.
     *
     * @return The same instance of {{classname}} for chaining.
     */
    public {{classname}} add{{nameInCamelCase}}Item({{{items.vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}Item) {
                {{#vendorExtensions.x-is-jackson-optional-nullable}}
        if ({{name}} == null || !{{name}}.isPresent()) {
            {{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>of({{{defaultValue}}}{{^defaultValue}}new {{#uniqueItems}}LinkedHashSet{{/uniqueItems}}{{^uniqueItems}}ArrayList{{/uniqueItems}}<>(){{/defaultValue}});
        }
        try {
            {{name}}.get().add({{name}}Item);
        } catch (java.util.NoSuchElementException e) {
            // this can never happen, as we make sure above that the value is present
        }
                {{/vendorExtensions.x-is-jackson-optional-nullable}}
                {{^vendorExtensions.x-is-jackson-optional-nullable}}
                    {{^required}}
        if ({{name}} == null) {
            {{name}} = {{#vendorExtensions.defaultValueInit}}{{{.}}}{{/vendorExtensions.defaultValueInit}}{{^vendorExtensions.defaultValueInit}}new {{#uniqueItems}}LinkedHashSet{{/uniqueItems}}{{^uniqueItems}}ArrayList{{/uniqueItems}}<>(){{/vendorExtensions.defaultValueInit}};
        }
                    {{/required}}
        {{name}}.add({{name}}Item);
                {{/vendorExtensions.x-is-jackson-optional-nullable}}
        return this;
    }
            {{/isArray}}

            {{#isMap}}
    /**
     * Set the value for the key for the {{name}} map property in a chainable fashion.
     *
     * @return The same instance of {{classname}} for chaining.
     */
    public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) {
                {{#vendorExtensions.x-is-jackson-optional-nullable}}
        if ({{name}} == null || !{{name}}.isPresent()) {
            {{name}} = JsonNullable.<{{{vendorExtensions.typeWithEnumWithGenericAnnotations}}}>of({{{defaultValue}}}{{^defaultValue}}new HashMap<>(){{/defaultValue}});
        }
        try {
            {{name}}.get().put(key, {{name}}Item);
        } catch (java.util.NoSuchElementException e) {
            // this can never happen, as we make sure above that the value is present
        }
                {{/vendorExtensions.x-is-jackson-optional-nullable}}
                {{^vendorExtensions.x-is-jackson-optional-nullable}}
                    {{^required}}
        if ({{name}} == null) {
            {{name}} = {{#vendorExtensions.defaultValueInit}}{{{.}}}{{/vendorExtensions.defaultValueInit}}{{^vendorExtensions.defaultValueInit}}new HashMap<>(){{/vendorExtensions.defaultValueInit}};
        }
                    {{/required}}
        {{name}}.put(key, {{name}}Item);
                {{/vendorExtensions.x-is-jackson-optional-nullable}}
        return this;
    }
            {{/isMap}}

        {{/isReadOnly}}
    {{/vars}}

    {{#parentVars}}
        {{^isReadOnly}}
    @Override
    public {{classname}} {{#lombok}}{{{setter}}}{{/lombok}}{{^lombok}}{{name}}{{/lombok}}({{{vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}) {
        super.{{{setter}}}({{name}});
        return this;
    }

            {{#isArray}}
    @Override
    public {{classname}} add{{nameInCamelCase}}Item({{{items.vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}Item) {
        super.add{{nameInCamelCase}}Item({{name}}Item);
        return this;
    }
            {{/isArray}}

            {{#isMap}}
    @Override
    public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.vendorExtensions.typeWithEnumWithGenericAnnotations}}} {{name}}Item) {
        super.put{{nameInCamelCase}}Item(key, {{name}}Item);
        return this;
    }
            {{/isMap}}

        {{/isReadOnly}}
    {{/parentVars}}

{{^lombok}}
    @Override
    public boolean equals(Object o) {
    {{#useReflectionEqualsHashCode}}
        return EqualsBuilder.reflectionEquals(this, o, false, null, true);
    {{/useReflectionEqualsHashCode}}
    {{^useReflectionEqualsHashCode}}
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        {{#vendorExtensions.hasOwnVars}}
        var {{classVarName}} = ({{classname}}) o;
        return {{#vars}}{{#isByteArray}}Arrays{{/isByteArray}}{{^isByteArray}}Objects{{/isByteArray}}.equals({{name}}, {{classVarName}}.{{name}}){{^-last}}
            && {{/-last}}{{/vars}}{{#parent}}
            && super.equals(o){{/parent}};
        {{/vendorExtensions.hasOwnVars}}
        {{^vendorExtensions.hasOwnVars}}
        return {{#parent}}super.equals(o){{/parent}}{{^parent}}true{{/parent}};
        {{/vendorExtensions.hasOwnVars}}
    {{/useReflectionEqualsHashCode}}
    }

    @Override
    public int hashCode() {
    {{#useReflectionEqualsHashCode}}
        return HashCodeBuilder.reflectionHashCode(this);
    {{/useReflectionEqualsHashCode}}
    {{^useReflectionEqualsHashCode}}
        return Objects.hash({{#vars}}{{^isByteArray}}{{name}}{{/isByteArray}}{{#isByteArray}}Arrays.hashCode({{name}}){{/isByteArray}}{{^-last}}, {{/-last}}{{/vars}}{{#parent}}{{#vendorExtensions.hasOwnVars}}, {{/vendorExtensions.hasOwnVars}}super.hashCode(){{/parent}});
    {{/useReflectionEqualsHashCode}}
    }

    @Override
    public String toString() {
    {{#hasVars}}
        return "{{classname}}("
        {{#allVars}}
            + "{{name}}: " + {{{getter}}}(){{^-last}} + ", "{{/-last}}
        {{/allVars}}
            + ")";
    {{/hasVars}}
    {{^hasVars}}
        return "{{classname}}()";
    {{/hasVars}}
    }
{{/lombok}}

    {{#parcelableModel}}
    public void writeToParcel(Parcel out, int flags) {
        {{#model}}
            {{#isArray}}
        out.writeList(this);
            {{/isArray}}
            {{^isArray}}
                {{#parent}}
        super.writeToParcel(out, flags);
                {{/parent}}
                {{#vars}}
        out.writeValue({{name}});
                {{/vars}}
            {{/isArray}}
        {{/model}}
    }

    {{classname}}(Parcel in) {
        {{#isArray}}
        in.readTypedList(this, {{arrayModelType}}.CREATOR);
        {{/isArray}}
        {{^isArray}}
            {{#parent}}
        super(in);
            {{/parent}}
            {{#vars}}
                {{#isPrimitiveType}}
        {{name}} = ({{{vendorExtensions.typeWithEnumWithGenericAnnotations}}})in.readValue(null);
                {{/isPrimitiveType}}
                {{^isPrimitiveType}}
        {{name}} = ({{{vendorExtensions.typeWithEnumWithGenericAnnotations}}})in.readValue({{complexType}}.class.getClassLoader());
                {{/isPrimitiveType}}
            {{/vars}}
        {{/isArray}}
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<{{classname}}> CREATOR = new Parcelable.Creator<{{classname}}>() {
        public {{classname}} createFromParcel(Parcel in) {
        {{#model}}
            {{#isArray}}
      {{classname}} result = new {{classname}}();
            result.addAll(in.readArrayList({{arrayModelType}}.class.getClassLoader()));
            return result;
            {{/isArray}}
            {{^isArray}}
            return new {{classname}}(in);
            {{/isArray}}
        {{/model}}
        }

        public {{classname}}[] newArray(int size) {
            return new {{classname}}[size];
        }
    };
    {{/parcelableModel}}
    {{#visitable}}
    {{#discriminator}}
    /**
     * Accept the visitor and invoke it for the specific {{classname}} type.
     *
     * @param visitor the {{classname}} visitor
     * @param  the return type of the visitor
     * @return the result from the visitor
     */
    public  T accept(Visitor visitor) {
        return visitor.visit{{classname}}(this);
    }

    /**
     * A {{classname}} visitor implementation allows visiting the various {{classname}} types.
     *
     * @param  the return type of the visitor
     */
    public interface Visitor {

        {{#discriminator.mappedModels}}
        R visit{{modelName}}({{modelName}} value);
        {{/discriminator.mappedModels}}
        R visit{{classname}}({{classname}} value);
    }

    {{/discriminator}}
    {{#parent}}
        {{#interfaces.0}}
    @Override
    public  T accept({{{parent}}}.Visitor visitor) {
        return visitor.visit{{classname}}(this);
    }
        {{/interfaces.0}}
    {{/parent}}
    {{/visitable}}

    {{#vars}}
        {{#isEnum}}
            {{^isContainer}}
                {{#indent}}
{{>common/model/enum}}
                {{/indent}}
            {{/isContainer}}
            {{#isContainer}}
                {{#mostInnerItems}}
                    {{#indent}}
{{>common/model/enum}}
                    {{/indent}}
                {{/mostInnerItems}}
            {{/isContainer}}
        {{/isEnum}}
    {{/vars}}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy