Skip to content

Commit

Permalink
Merge branch 'main' into fix-signupcallfix
Browse files Browse the repository at this point in the history
  • Loading branch information
gpanshu committed Nov 30, 2022
2 parents e878790 + b759f43 commit 58aef46
Show file tree
Hide file tree
Showing 27 changed files with 140 additions and 286 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,5 @@ build-artifacts.tar.gz

# sample app resources
sample*
.graphqlconfig.yml
.graphqlconfig.yml
aws-datastore/src/androidTest/res/raw/amplifyconfigurationupdated.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,23 @@ public final class ModelMetadata implements Model {
private final @ModelField(targetType = "Boolean") Boolean _deleted;
private final @ModelField(targetType = "Int") Integer _version;
private final @ModelField(targetType = "AWSTimestamp") Temporal.Timestamp _lastChangedAt;
private final @ModelField(targetType = "String") String __typename;

/**
* Constructor for this metadata model.
* @param id The identifier of the object this is holding the metadata for (also this object's own identifier)
* @param deleted Whether this object was deleted since the last sync time specified
* @param version What version this object was last seen at
* @param lastChangedAt When was this object last changed
* @param typename The type name of the model.
*/
public ModelMetadata(
@NonNull String id,
@Nullable Boolean deleted,
@Nullable Integer version,
@Nullable Temporal.Timestamp lastChangedAt,
@Nullable String typename) {
@Nullable Temporal.Timestamp lastChangedAt) {
this.id = Objects.requireNonNull(id);
this._deleted = deleted;
this._version = version;
this._lastChangedAt = lastChangedAt;
this.__typename = typename;
}

/**
Expand Down Expand Up @@ -95,7 +91,7 @@ public Integer getVersion() {
*/
@Nullable
public String getTypename() {
return __typename;
return id.split("\\|")[0];
}

/**
Expand Down Expand Up @@ -136,7 +132,6 @@ public int hashCode() {
result = 31 * result + (_deleted != null ? _deleted.hashCode() : 0);
result = 31 * result + (_version != null ? _version.hashCode() : 0);
result = 31 * result + (_lastChangedAt != null ? _lastChangedAt.hashCode() : 0);
result = 31 * result + (__typename != null ? __typename.hashCode() : 0);
return result;
}

Expand All @@ -147,7 +142,6 @@ public String toString() {
", _deleted=" + _deleted +
", _version=" + _version +
", _lastChangedAt=" + _lastChangedAt +
", __typename=" + __typename +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public ModelWithMetadata(@NonNull M model, @NonNull ModelMetadata syncMetadata)
this.syncMetadata = new ModelMetadata(model.getModelName() + "|" + model.getPrimaryKeyString(),
syncMetadata.isDeleted(),
syncMetadata.getVersion(),
syncMetadata.getLastChangedAt(), syncMetadata.getTypename());
syncMetadata.getLastChangedAt());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,14 @@ public JsonElement serialize(
// Flatten out the fields of the model and its metadata into a flat key-value map.
// To do this, serialize each individually, and then add the key/value pairs for each
// object into a new container.
JsonObject serializedMetadata = (JsonObject) context.serialize(src.getSyncMetadata());
ModelMetadata modelMetadata = src.getSyncMetadata();
JsonObject serializedMetadata = (JsonObject) context.serialize(modelMetadata);
for (Map.Entry<java.lang.String, JsonElement> entry : serializedMetadata.entrySet()) {
result.add(entry.getKey(), entry.getValue());
}
// Additionally serialize the stored model name as the typename, mirroring the deserialization process.
result.addProperty(TYPE_NAME, modelMetadata.getTypename());

JsonObject serializedModel = (JsonObject) context.serialize(src.getModel());
for (Map.Entry<java.lang.String, JsonElement> entry : serializedModel.entrySet()) {
result.add(entry.getKey(), entry.getValue());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void setup() {
public void adapterCanSerializeMwm() throws JSONException {
Temporal.Timestamp lastChangedAt = Temporal.Timestamp.now();
String modelId = UUID.randomUUID().toString();
ModelMetadata metadata = new ModelMetadata(modelId, false, 4, lastChangedAt, "BlogOwner");
ModelMetadata metadata = new ModelMetadata(modelId, false, 4, lastChangedAt);
BlogOwner model = BlogOwner.builder()
.name("Blog Owner")
.build();
Expand All @@ -80,7 +80,7 @@ public void adapterCanSerializeMwm() throws JSONException {
.put("_lastChangedAt", metadata.getLastChangedAt().getSecondsSinceEpoch())
.put("_deleted", metadata.isDeleted())
.put("_version", metadata.getVersion())
.put("__typename", metadata.getTypename())
.put("__typename", mwm.getSyncMetadata().getTypename())
.toString();
String actual = gson.toJson(mwm);
JSONAssert.assertEquals(expected, actual, true);
Expand All @@ -97,7 +97,7 @@ public void adapterCanDeserializeJsonIntoMwm() {
.id("45a5f600-8aa8-41ac-a529-aed75036f5be")
.build();
Temporal.Timestamp lastChangedAt = new Temporal.Timestamp(1594858827, TimeUnit.SECONDS);
ModelMetadata metadata = new ModelMetadata(model.getId(), false, 3, lastChangedAt, model.getModelName());
ModelMetadata metadata = new ModelMetadata(model.getId(), false, 3, lastChangedAt);
ModelWithMetadata<BlogOwner> expected = new ModelWithMetadata<>(model, metadata);

// Arrange some JSON, and then try to deserialize it
Expand Down Expand Up @@ -133,15 +133,14 @@ public void adapterCanDeserializeJsonOfSerializedModelIntoMwm() throws AmplifyEx
.serializedData(postSerializedData)
.build();
Temporal.Timestamp lastChangedAt = new Temporal.Timestamp(1594858827, TimeUnit.SECONDS);
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), false, 3, lastChangedAt,
model.getModelName());
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), false, 3, lastChangedAt);
ModelWithMetadata<SerializedModel> expected = new ModelWithMetadata<>(model, metadata);

// Arrange some JSON, and then try to deserialize it
String json = Resources.readAsString("serialized-model-with-metadata.json");
Type type = TypeMaker.getParameterizedType(ModelWithMetadata.class, SerializedModel.class);
ModelWithMetadata<SerializedModel> actual = gson.fromJson(json, type);

// Assert that the deserialized output matches out expected value
Assert.assertEquals(expected, actual);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,7 @@ public void clearStopsSyncAndDeletesDatabase() throws AmplifyException, JSONExce
int indexOfResponseConsumer = 1;
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now(),
"Person");
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
return mock(GraphQLOperation.class);
Expand All @@ -256,7 +255,7 @@ public void clearStopsSyncAndDeletesDatabase() throws AmplifyException, JSONExce
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person2.getId(), false, 1,
Temporal.Timestamp.now(), "Person");
Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person2, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
return mock(GraphQLOperation.class);
Expand Down Expand Up @@ -325,7 +324,7 @@ public void stopStopsSyncUntilNextInteraction() throws AmplifyException, JSONExc
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person1.getPrimaryKeyString(), false, 1,
Temporal.Timestamp.now(), "Person");
Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
return mock(GraphQLOperation.class);
Expand All @@ -349,7 +348,7 @@ public void stopStopsSyncUntilNextInteraction() throws AmplifyException, JSONExc
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person2.getPrimaryKeyString(), false, 1,
Temporal.Timestamp.now(), "Person");
Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person2, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
return mock(GraphQLOperation.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
int indexOfResponseConsumer = 1;
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now(),
"Person");
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
verify(mockApiCategory, atLeast(2)).mutate(argThat(getMatcherFor(person1)),
Expand All @@ -207,7 +206,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
doAnswer(invocation -> {
int indexOfResponseConsumer = 1;
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1,
Temporal.Timestamp.now(), "Person");
Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
// Mock the API emitting an ApiEndpointStatusChangeEvent event.
Consumer<GraphQLResponse<PaginatedResult<ModelWithMetadata<Person>>>> onResponse =
Expand All @@ -221,7 +220,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
}).doAnswer(invocation -> {
int indexOfResponseConsumer = 1;
Car car = Car.builder().build();
ModelMetadata modelMetadata = new ModelMetadata(car.getId(), false, 1, Temporal.Timestamp.now(), "Person");
ModelMetadata modelMetadata = new ModelMetadata(car.getId(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<Car> modelWithMetadata = new ModelWithMetadata<>(car, modelMetadata);
Consumer<GraphQLResponse<PaginatedResult<ModelWithMetadata<Car>>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
int indexOfResponseConsumer = 1;
Consumer<GraphQLResponse<ModelWithMetadata<Person>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now(),
"Person");
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
onResponse.accept(new GraphQLResponse<>(modelWithMetadata, Collections.emptyList()));
verify(mockApiCategory, atLeast(2)).mutate(argThat(getMatcherFor(person1)),
Expand All @@ -183,7 +182,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
doAnswer(invocation -> {
int indexOfResponseConsumer = 1;
ModelMetadata modelMetadata = new ModelMetadata(person1.getId(), false, 1,
Temporal.Timestamp.now(), "Person");
Temporal.Timestamp.now());
ModelWithMetadata<Person> modelWithMetadata = new ModelWithMetadata<>(person1, modelMetadata);
// Mock the API emitting an ApiEndpointStatusChangeEvent event.
Consumer<GraphQLResponse<PaginatedResult<ModelWithMetadata<Person>>>> onResponse =
Expand All @@ -197,7 +196,7 @@ private Person setupApiMock(CountDownLatch latch, ApiCategory mockApiCategory) {
}).doAnswer(invocation -> {
int indexOfResponseConsumer = 1;
Car car = Car.builder().build();
ModelMetadata modelMetadata = new ModelMetadata(car.getId(), false, 1, Temporal.Timestamp.now(), "Person");
ModelMetadata modelMetadata = new ModelMetadata(car.getId(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<Car> modelWithMetadata = new ModelWithMetadata<>(car, modelMetadata);
Consumer<GraphQLResponse<PaginatedResult<ModelWithMetadata<Car>>>> onResponse =
invocation.getArgument(indexOfResponseConsumer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public void createUnhandledConflictError() {
.name("Blogger Tony")
.build();
Temporal.Timestamp lastChangedAt = new Temporal.Timestamp(1602732606L, TimeUnit.SECONDS);
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), true, 6, lastChangedAt, "BlogOwner");
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), true, 6, lastChangedAt);
ModelWithMetadata<BlogOwner> serverData = new ModelWithMetadata<>(model, metadata);
AppSyncConflictUnhandledError<BlogOwner> error =
AppSyncConflictUnhandledErrorFactory.createUnhandledConflictError(serverData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public void conflictErrorExtractedIfPresent() {
assertEquals(
new ModelWithMetadata<>(
new Note("KoolId22", "Resurecting the dataz"),
new ModelMetadata("KoolId22", true, 7, lastChangedAt, "Note")
new ModelMetadata("KoolId22", true, 7, lastChangedAt)
),
conflictUnhandledError.getServerVersion()
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,7 @@ public <T extends Model> CreateConfigurator mockSuccessResponse(
*/
@NonNull
public <T extends Model> CreateConfigurator mockSuccessResponse(@NonNull T model) {
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now(),
model.getModelName());
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now());
ModelWithMetadata<T> modelWithMetadata = new ModelWithMetadata<>(model, metadata);
return mockSuccessResponse(model, modelWithMetadata);
}
Expand Down Expand Up @@ -313,7 +312,7 @@ public <T extends Model> UpdateConfigurator mockSuccessResponse(
public <T extends Model> UpdateConfigurator mockSuccessResponse(@NonNull T model, int version) {
Temporal.Timestamp lastChangedAt = Temporal.Timestamp.now();
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), false, version + 1,
lastChangedAt, model.getModelName());
lastChangedAt);
ModelWithMetadata<T> modelWithMetadata = new ModelWithMetadata<>(model, metadata);
return mockSuccessResponse(model, version, modelWithMetadata);
}
Expand Down Expand Up @@ -426,7 +425,7 @@ public <T extends Model> DeleteConfigurator mockSuccessResponse(
public <T extends Model> DeleteConfigurator mockSuccessResponse(@NonNull T model, int version) {
Temporal.Timestamp lastChangedAt = Temporal.Timestamp.now();
ModelMetadata metadata = new ModelMetadata(model.getPrimaryKeyString(), true, version + 1,
lastChangedAt, model.getModelName());
lastChangedAt);
ModelWithMetadata<T> modelWithMetadata = new ModelWithMetadata<>(model, metadata);
return mockSuccessResponse(model, version, modelWithMetadata);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ public void mockErrorResponseForCreate() {
public void mockSuccessResponseForUpdate() {
ModelMetadata updatedMetadata =
new ModelMetadata(StrawMen.TONY_MODEL.getPrimaryKeyString(), false, 2, StrawMen.JOE_METADATA
.getLastChangedAt(), StrawMen.TONY_MODEL.getModelName());
.getLastChangedAt());
ModelWithMetadata<BlogOwner> tonyWithUpdatedMetadata =
new ModelWithMetadata<>(StrawMen.TONY_MODEL, updatedMetadata);
AppSyncMocking.update(appSync)
Expand Down Expand Up @@ -218,7 +218,7 @@ public void mockErrorResponseForUpdate() {
public void mockSuccessResponseForDelete() {
ModelMetadata deletedMetadata =
new ModelMetadata(StrawMen.TONY_MODEL.getPrimaryKeyString(), true, 2,
StrawMen.JOE_METADATA.getLastChangedAt(), StrawMen.TONY_MODEL.getModelName());
StrawMen.JOE_METADATA.getLastChangedAt());
ModelWithMetadata<BlogOwner> tonyWithDeleteMetadata =
new ModelWithMetadata<>(StrawMen.TONY_MODEL, deletedMetadata);
AppSyncMocking.delete(appSync)
Expand Down Expand Up @@ -335,17 +335,15 @@ static final class StrawMen {
.name("Joe")
.build();
static final ModelMetadata JOE_METADATA =
new ModelMetadata(JOE_MODEL.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now(),
JOE_MODEL.getModelName());
new ModelMetadata(JOE_MODEL.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now());
static final ModelWithMetadata<BlogOwner> JOE =
new ModelWithMetadata<>(JOE_MODEL, JOE_METADATA);

static final BlogOwner TONY_MODEL = BlogOwner.builder()
.name("Tony")
.build();
static final ModelMetadata TONY_METADATA =
new ModelMetadata(TONY_MODEL.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now(),
TONY_MODEL.getModelName());
new ModelMetadata(TONY_MODEL.getPrimaryKeyString(), false, 1, Temporal.Timestamp.now());
static final ModelWithMetadata<BlogOwner> TONY =
new ModelWithMetadata<>(TONY_MODEL, TONY_METADATA);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -422,8 +422,6 @@ public void validateMutationGenerationOnCreateItemWithCustomForeignKeyAndSortKey
ModelSchema schema = ModelSchema.fromModelClass(OtherBlog.class);
String expected = Resources.readAsString("create-other-blog.txt");
String actual = AppSyncRequestFactory.buildCreationRequest(schema, blog, DEFAULT_STRATEGY).getContent();
System.out.println(" Actual: " + actual);
System.out.println("Expected: " + expected);
JSONAssert.assertEquals(
expected,
actual,
Expand Down

0 comments on commit 58aef46

Please sign in to comment.