Skip to content

Commit f44358a

Browse files
author
Dane Pilcher
authored
fix: avoid name collision on java model build step (#700)
1 parent d9ce4ea commit f44358a

File tree

3 files changed

+367
-64
lines changed

3 files changed

+367
-64
lines changed

packages/appsync-modelgen-plugin/src/__tests__/visitors/__snapshots__/appsync-java-visitor.test.ts.snap

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7494,6 +7494,206 @@ public final class Todo implements Model {
74947494
"
74957495
`;
74967496
7497+
exports[`AppSyncModelVisitor should avoid name collision on builder step 1`] = `
7498+
"package com.amplifyframework.datastore.generated.model;
7499+
7500+
import com.amplifyframework.core.model.temporal.Temporal;
7501+
7502+
import java.util.List;
7503+
import java.util.UUID;
7504+
import java.util.Objects;
7505+
7506+
import androidx.core.util.ObjectsCompat;
7507+
7508+
import com.amplifyframework.core.model.Model;
7509+
import com.amplifyframework.core.model.annotations.Index;
7510+
import com.amplifyframework.core.model.annotations.ModelConfig;
7511+
import com.amplifyframework.core.model.annotations.ModelField;
7512+
import com.amplifyframework.core.model.query.predicate.QueryField;
7513+
7514+
import static com.amplifyframework.core.model.query.predicate.QueryField.field;
7515+
7516+
/** This is an auto generated class representing the MyObject type in your schema. */
7517+
@SuppressWarnings(\\"all\\")
7518+
@ModelConfig(pluralName = \\"MyObjects\\")
7519+
public final class MyObject implements Model {
7520+
public static final QueryField ID = field(\\"MyObject\\", \\"id\\");
7521+
public static final QueryField TUTORIAL = field(\\"MyObject\\", \\"tutorial\\");
7522+
public static final QueryField FORM_CUES = field(\\"MyObject\\", \\"formCues\\");
7523+
private final @ModelField(targetType=\\"ID\\", isRequired = true) String id;
7524+
private final @ModelField(targetType=\\"TutorialStep\\", isRequired = true) List<TutorialStep> tutorial;
7525+
private final @ModelField(targetType=\\"FormCue\\", isRequired = true) List<FormCue> formCues;
7526+
private @ModelField(targetType=\\"AWSDateTime\\", isReadOnly = true) Temporal.DateTime createdAt;
7527+
private @ModelField(targetType=\\"AWSDateTime\\", isReadOnly = true) Temporal.DateTime updatedAt;
7528+
public String getId() {
7529+
return id;
7530+
}
7531+
7532+
public List<TutorialStep> getTutorial() {
7533+
return tutorial;
7534+
}
7535+
7536+
public List<FormCue> getFormCues() {
7537+
return formCues;
7538+
}
7539+
7540+
public Temporal.DateTime getCreatedAt() {
7541+
return createdAt;
7542+
}
7543+
7544+
public Temporal.DateTime getUpdatedAt() {
7545+
return updatedAt;
7546+
}
7547+
7548+
private MyObject(String id, List<TutorialStep> tutorial, List<FormCue> formCues) {
7549+
this.id = id;
7550+
this.tutorial = tutorial;
7551+
this.formCues = formCues;
7552+
}
7553+
7554+
@Override
7555+
public boolean equals(Object obj) {
7556+
if (this == obj) {
7557+
return true;
7558+
} else if(obj == null || getClass() != obj.getClass()) {
7559+
return false;
7560+
} else {
7561+
MyObject myObject = (MyObject) obj;
7562+
return ObjectsCompat.equals(getId(), myObject.getId()) &&
7563+
ObjectsCompat.equals(getTutorial(), myObject.getTutorial()) &&
7564+
ObjectsCompat.equals(getFormCues(), myObject.getFormCues()) &&
7565+
ObjectsCompat.equals(getCreatedAt(), myObject.getCreatedAt()) &&
7566+
ObjectsCompat.equals(getUpdatedAt(), myObject.getUpdatedAt());
7567+
}
7568+
}
7569+
7570+
@Override
7571+
public int hashCode() {
7572+
return new StringBuilder()
7573+
.append(getId())
7574+
.append(getTutorial())
7575+
.append(getFormCues())
7576+
.append(getCreatedAt())
7577+
.append(getUpdatedAt())
7578+
.toString()
7579+
.hashCode();
7580+
}
7581+
7582+
@Override
7583+
public String toString() {
7584+
return new StringBuilder()
7585+
.append(\\"MyObject {\\")
7586+
.append(\\"id=\\" + String.valueOf(getId()) + \\", \\")
7587+
.append(\\"tutorial=\\" + String.valueOf(getTutorial()) + \\", \\")
7588+
.append(\\"formCues=\\" + String.valueOf(getFormCues()) + \\", \\")
7589+
.append(\\"createdAt=\\" + String.valueOf(getCreatedAt()) + \\", \\")
7590+
.append(\\"updatedAt=\\" + String.valueOf(getUpdatedAt()))
7591+
.append(\\"}\\")
7592+
.toString();
7593+
}
7594+
7595+
public static TutorialBuildStep builder() {
7596+
return new Builder();
7597+
}
7598+
7599+
/**
7600+
* WARNING: This method should not be used to build an instance of this object for a CREATE mutation.
7601+
* This is a convenience method to return an instance of the object with only its ID populated
7602+
* to be used in the context of a parameter in a delete mutation or referencing a foreign key
7603+
* in a relationship.
7604+
* @param id the id of the existing item this instance will represent
7605+
* @return an instance of this model with only ID populated
7606+
*/
7607+
public static MyObject justId(String id) {
7608+
return new MyObject(
7609+
id,
7610+
null,
7611+
null
7612+
);
7613+
}
7614+
7615+
public CopyOfBuilder copyOfBuilder() {
7616+
return new CopyOfBuilder(id,
7617+
tutorial,
7618+
formCues);
7619+
}
7620+
public interface TutorialBuildStep {
7621+
FormCuesStep tutorial(List<TutorialStep> tutorial);
7622+
}
7623+
7624+
7625+
public interface FormCuesStep {
7626+
BuildStep formCues(List<FormCue> formCues);
7627+
}
7628+
7629+
7630+
public interface BuildStep {
7631+
MyObject build();
7632+
BuildStep id(String id);
7633+
}
7634+
7635+
7636+
public static class Builder implements TutorialBuildStep, FormCuesStep, BuildStep {
7637+
private String id;
7638+
private List<TutorialStep> tutorial;
7639+
private List<FormCue> formCues;
7640+
@Override
7641+
public MyObject build() {
7642+
String id = this.id != null ? this.id : UUID.randomUUID().toString();
7643+
7644+
return new MyObject(
7645+
id,
7646+
tutorial,
7647+
formCues);
7648+
}
7649+
7650+
@Override
7651+
public FormCuesStep tutorial(List<TutorialStep> tutorial) {
7652+
Objects.requireNonNull(tutorial);
7653+
this.tutorial = tutorial;
7654+
return this;
7655+
}
7656+
7657+
@Override
7658+
public BuildStep formCues(List<FormCue> formCues) {
7659+
Objects.requireNonNull(formCues);
7660+
this.formCues = formCues;
7661+
return this;
7662+
}
7663+
7664+
/**
7665+
* @param id id
7666+
* @return Current Builder instance, for fluent method chaining
7667+
*/
7668+
public BuildStep id(String id) {
7669+
this.id = id;
7670+
return this;
7671+
}
7672+
}
7673+
7674+
7675+
public final class CopyOfBuilder extends Builder {
7676+
private CopyOfBuilder(String id, List<TutorialStep> tutorial, List<FormCue> formCues) {
7677+
super.id(id);
7678+
super.tutorial(tutorial)
7679+
.formCues(formCues);
7680+
}
7681+
7682+
@Override
7683+
public CopyOfBuilder tutorial(List<TutorialStep> tutorial) {
7684+
return (CopyOfBuilder) super.tutorial(tutorial);
7685+
}
7686+
7687+
@Override
7688+
public CopyOfBuilder formCues(List<FormCue> formCues) {
7689+
return (CopyOfBuilder) super.formCues(formCues);
7690+
}
7691+
}
7692+
7693+
}
7694+
"
7695+
`;
7696+
74977697
exports[`AppSyncModelVisitor should generate Temporal type for AWSDate* scalars 1`] = `
74987698
"package com.amplifyframework.datastore.generated.model;
74997699

0 commit comments

Comments
 (0)