diff --git a/samples/Shadow/src/main/java/shadow/ShadowSample.java b/samples/Shadow/src/main/java/shadow/ShadowSample.java index 8e6d75cd8..a8189e050 100644 --- a/samples/Shadow/src/main/java/shadow/ShadowSample.java +++ b/samples/Shadow/src/main/java/shadow/ShadowSample.java @@ -159,8 +159,23 @@ static void onShadowDeltaUpdated(ShadowDeltaUpdatedEvent response) { } static void onUpdateShadowAccepted(UpdateShadowResponse response) { - String value = response.state.reported.get(SHADOW_PROPERTY).toString(); - System.out.println("Shadow updated, value is " + value); + if (response.state.reported != null) { + if (response.state.reported.containsKey(SHADOW_PROPERTY)) { + String value = response.state.reported.get(SHADOW_PROPERTY).toString(); + System.out.println("Shadow updated, value is " + value); + } + else { + System.out.println("Shadow updated, value is Null"); + } + } + else { + if (response.state.reportedIsNullable == true) { + System.out.println("Shadow updated, reported and desired is null"); + } + else { + System.out.println("Shadow update, data cleared"); + } + } gotResponse.complete(null); } @@ -170,11 +185,13 @@ static void onUpdateShadowRejected(ErrorResponse response) { } static CompletableFuture changeShadowValue(String value) { - if (localValue.equals(value)) { - System.out.println("Local value is already " + value); - CompletableFuture result = new CompletableFuture<>(); - result.complete(null); - return result; + if (localValue != null) { + if (localValue.equals(value)) { + System.out.println("Local value is already " + value); + CompletableFuture result = new CompletableFuture<>(); + result.complete(null); + return result; + } } System.out.println("Changed local value to " + value); @@ -186,6 +203,7 @@ static CompletableFuture changeShadowValue(String value) { UpdateShadowRequest request = new UpdateShadowRequest(); request.thingName = thingName; request.state = new ShadowState(); + request.state.reported = new HashMap() {{ put(SHADOW_PROPERTY, value); }}; @@ -193,6 +211,28 @@ static CompletableFuture changeShadowValue(String value) { put(SHADOW_PROPERTY, value); }}; + if (value.compareToIgnoreCase("clear_shadow") == 0) { + request.state.desiredIsNullable = true; + request.state.reportedIsNullable = true; + request.state.desired = null; + request.state.reported = null; + } + else if (value.compareToIgnoreCase("null") == 0) { + // A bit of a hack - we have to set reportedNullIsValid OR desiredNullIsValid + // so the JSON formatter will allow null , otherwise null will always be + // be converted to "null" + // As long as we're passing a Hashmap that is NOT assigned to null, it will not + // clear the data - so we pass an empty HashMap to avoid clearing data we want to keep + request.state.desiredIsNullable = true; + request.state.reportedIsNullable = false; + + // We will only clear desired, so we need to pass an empty HashMap for reported + request.state.reported = new HashMap() {{}}; + request.state.desired = new HashMap() {{ + put(SHADOW_PROPERTY, null); + }}; + } + // Publish the request return shadow.PublishUpdateShadow(request, QualityOfService.AT_LEAST_ONCE).thenRun(() -> { System.out.println("Update request published"); diff --git a/sdk/pom.xml b/sdk/pom.xml index 4620bf80f..0b88f8cb4 100644 --- a/sdk/pom.xml +++ b/sdk/pom.xml @@ -42,7 +42,7 @@ software.amazon.awssdk.crt aws-crt - 0.15.9 + 0.15.17 org.slf4j diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/ShadowStateFactory.java b/sdk/src/main/java/software/amazon/awssdk/iot/ShadowStateFactory.java new file mode 100644 index 000000000..6e1ae43a6 --- /dev/null +++ b/sdk/src/main/java/software/amazon/awssdk/iot/ShadowStateFactory.java @@ -0,0 +1,62 @@ +package software.amazon.awssdk.iot; + +import software.amazon.awssdk.iot.iotshadow.model.ShadowState; + +import java.io.IOException; +import java.util.HashMap; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + +public class ShadowStateFactory implements TypeAdapterFactory { + + public TypeAdapter create(Gson gson, TypeToken type) { + + Class rawType = (Class)type.getRawType(); + if (rawType != ShadowState.class) { + return null; + } + + final TypeAdapter delegate = gson.getDelegateAdapter(this, type); + + return new TypeAdapter() { + public void write(JsonWriter out, T shadowValue) throws IOException { + // Are null values allowed? + ShadowState shadow = (ShadowState)shadowValue; + if (shadow.desiredIsNullable == true || shadow.reportedIsNullable == true) { + out.setSerializeNulls(true); + } + // If a property is null but null is not valid for it, then just send an empty HashMap + if (shadow.desired == null && shadow.desiredIsNullable == false) { + shadow.desired = new HashMap(); + } + if (shadow.reported == null && shadow.reportedIsNullable == false) { + shadow.reported = new HashMap(); + } + delegate.write(out, shadowValue); + if (shadow.desiredIsNullable == true || shadow.reportedIsNullable == true) { + out.setSerializeNulls(false); + } + } + public T read(JsonReader in) throws IOException { + T returnType = delegate.read(in); + + // Set IsNullable if the field we get is null + ShadowState shadow = (ShadowState)returnType; + if (shadow.desired == null) { + shadow.desiredIsNullable = true; + } + if (shadow.reported == null) { + shadow.reportedIsNullable = true; + } + returnType = (T)shadow; + + return returnType; + } + }; + } +} diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/IotShadowClient.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/IotShadowClient.java index 6832528ba..f68208ee3 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/IotShadowClient.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/IotShadowClient.java @@ -45,6 +45,8 @@ import software.amazon.awssdk.iot.Timestamp; import software.amazon.awssdk.iot.EnumSerializer; +import software.amazon.awssdk.iot.ShadowStateFactory; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -77,6 +79,8 @@ private Gson getGson() { } private void addTypeAdapters(GsonBuilder gson) { + ShadowStateFactory shadowStateFactory = new ShadowStateFactory(); + gson.registerTypeAdapterFactory(shadowStateFactory); } /** diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowRequest.java index 4df0d1ff1..ea9e91721 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowRequest.java @@ -20,16 +20,19 @@ public class DeleteNamedShadowRequest { */ public String clientToken; + /** * Name of the shadow to delete. * */ public String shadowName; + /** * AWS IoT thing to delete a named shadow from. * */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowSubscriptionRequest.java index 9386b6c10..ecb59c8bc 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteNamedShadowSubscriptionRequest.java @@ -20,10 +20,12 @@ public class DeleteNamedShadowSubscriptionRequest { */ public String thingName; + /** * Name of the shadow to subscribe to DeleteNamedShadow operations for. * */ public String shadowName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowRequest.java index e6c074df4..7b19c210e 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowRequest.java @@ -20,10 +20,12 @@ public class DeleteShadowRequest { */ public String thingName; + /** * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response. * */ public String clientToken; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowResponse.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowResponse.java index cab025a7f..c8a8bda07 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowResponse.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowResponse.java @@ -21,16 +21,19 @@ public class DeleteShadowResponse { */ public Integer version; + /** * A client token used to correlate requests and responses. * */ public String clientToken; + /** * The time the response was generated by AWS IoT. * */ public Timestamp timestamp; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowSubscriptionRequest.java index 937cba145..e73a67abd 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/DeleteShadowSubscriptionRequest.java @@ -20,4 +20,5 @@ public class DeleteShadowSubscriptionRequest { */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ErrorResponse.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ErrorResponse.java index 770dfbcb2..2a12d3cd3 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ErrorResponse.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ErrorResponse.java @@ -21,22 +21,26 @@ public class ErrorResponse { */ public Timestamp timestamp; + /** * A text message that provides additional information. * */ public String message; + /** * Opaque request-response correlation data. Present only if a client token was used in the request. * */ public String clientToken; + /** * An HTTP response code that indicates the type of error. * */ public Integer code; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowRequest.java index 6359179b1..d9aba63c2 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowRequest.java @@ -20,16 +20,19 @@ public class GetNamedShadowRequest { */ public String clientToken; + /** * Name of the shadow to get. * */ public String shadowName; + /** * AWS IoT thing to get the named shadow for. * */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowSubscriptionRequest.java index 4e4d0d5e7..1ef5e9a0d 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetNamedShadowSubscriptionRequest.java @@ -20,10 +20,12 @@ public class GetNamedShadowSubscriptionRequest { */ public String thingName; + /** * Name of the shadow to subscribe to GetNamedShadow responses for. * */ public String shadowName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowRequest.java index ea0c36a78..21ee8342b 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowRequest.java @@ -20,10 +20,12 @@ public class GetShadowRequest { */ public String thingName; + /** * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response. * */ public String clientToken; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowResponse.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowResponse.java index 6fb15f88e..699891241 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowResponse.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowResponse.java @@ -23,28 +23,33 @@ public class GetShadowResponse { */ public Integer version; + /** * An opaque token used to correlate requests and responses. * */ public String clientToken; + /** * The (classic) shadow state of the AWS IoT thing. * */ public ShadowStateWithDelta state; + /** * Contains the timestamps for each attribute in the desired and reported sections of the state. * */ public ShadowMetadata metadata; + /** * The time the response was generated by AWS IoT. * */ public Timestamp timestamp; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowSubscriptionRequest.java index fd810e8a1..f049dd72a 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/GetShadowSubscriptionRequest.java @@ -20,4 +20,5 @@ public class GetShadowSubscriptionRequest { */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowDeltaUpdatedSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowDeltaUpdatedSubscriptionRequest.java index 14ef01854..decd79c2c 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowDeltaUpdatedSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowDeltaUpdatedSubscriptionRequest.java @@ -20,10 +20,12 @@ public class NamedShadowDeltaUpdatedSubscriptionRequest { */ public String thingName; + /** * Name of the shadow to get ShadowDelta events for. * */ public String shadowName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowUpdatedSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowUpdatedSubscriptionRequest.java index 7bfb56df7..a450cf484 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowUpdatedSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/NamedShadowUpdatedSubscriptionRequest.java @@ -20,10 +20,12 @@ public class NamedShadowUpdatedSubscriptionRequest { */ public String shadowName; + /** * Name of the AWS IoT thing to get NamedShadowUpdated events for. * */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedEvent.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedEvent.java index c5cafbf2d..1346f6520 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedEvent.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedEvent.java @@ -22,22 +22,26 @@ public class ShadowDeltaUpdatedEvent { */ public Integer version; + /** * The time the event was generated by AWS IoT. * */ public Timestamp timestamp; + /** * Timestamps for the shadow properties that were updated. * */ public HashMap metadata; + /** * Shadow properties that were updated. * */ public HashMap state; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedSubscriptionRequest.java index fbc86ca1b..b7f494545 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowDeltaUpdatedSubscriptionRequest.java @@ -20,4 +20,5 @@ public class ShadowDeltaUpdatedSubscriptionRequest { */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowMetadata.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowMetadata.java index b9855ccd1..55cae7dc4 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowMetadata.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowMetadata.java @@ -21,10 +21,12 @@ public class ShadowMetadata { */ public HashMap desired; + /** * Contains the timestamps for each attribute in the reported section of a shadow's state. * */ public HashMap reported; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowState.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowState.java index c408e6f4d..72383a1ee 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowState.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowState.java @@ -21,10 +21,14 @@ public class ShadowState { */ public HashMap desired; + public transient boolean desiredIsNullable; + /** * The (last) reported shadow state from the device. * */ public HashMap reported; + public transient boolean reportedIsNullable; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowStateWithDelta.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowStateWithDelta.java index b274d1641..28315114e 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowStateWithDelta.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowStateWithDelta.java @@ -21,16 +21,19 @@ public class ShadowStateWithDelta { */ public HashMap delta; + /** * The (last) reported shadow state from the device. * */ public HashMap reported; + /** * The desired shadow state (from external services and devices). * */ public HashMap desired; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedEvent.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedEvent.java index 6d7daedb9..bd6702710 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedEvent.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedEvent.java @@ -22,16 +22,19 @@ public class ShadowUpdatedEvent { */ public ShadowUpdatedSnapshot previous; + /** * Contains the state of the object after the update. * */ public ShadowUpdatedSnapshot current; + /** * The time the event was generated by AWS IoT. * */ public Timestamp timestamp; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSnapshot.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSnapshot.java index 7d799cd35..ad4bcccb4 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSnapshot.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSnapshot.java @@ -22,16 +22,19 @@ public class ShadowUpdatedSnapshot { */ public ShadowState state; + /** * Contains the timestamps for each attribute in the desired and reported sections of the state. * */ public ShadowMetadata metadata; + /** * The current version of the document for the device's shadow. * */ public Integer version; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSubscriptionRequest.java index d154bc331..4e61b62fe 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/ShadowUpdatedSubscriptionRequest.java @@ -20,4 +20,5 @@ public class ShadowUpdatedSubscriptionRequest { */ public String thingName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowRequest.java index 5f636e991..555c63bfa 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowRequest.java @@ -21,28 +21,33 @@ public class UpdateNamedShadowRequest { */ public String shadowName; + /** * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response. * */ public String clientToken; + /** * Aws IoT thing to update a named shadow of. * */ public String thingName; + /** * Requested changes to shadow state. Updates affect only the fields specified. * */ public ShadowState state; + /** * (Optional) The Device Shadow service applies the update only if the specified version matches the latest version. * */ public Integer version; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowSubscriptionRequest.java index 8b273b370..837809127 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateNamedShadowSubscriptionRequest.java @@ -20,10 +20,12 @@ public class UpdateNamedShadowSubscriptionRequest { */ public String thingName; + /** * Name of the shadow to listen to UpdateNamedShadow responses for. * */ public String shadowName; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowRequest.java index 8881246f4..58ac54c18 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowRequest.java @@ -21,22 +21,26 @@ public class UpdateShadowRequest { */ public ShadowState state; + /** * Aws IoT thing to update the (classic) shadow of. * */ public String thingName; + /** * (Optional) The Device Shadow service processes the update only if the specified version matches the latest version. * */ public Integer version; + /** * Optional. A client token used to correlate requests and responses. Enter an arbitrary value here and it is reflected in the response. * */ public String clientToken; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowResponse.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowResponse.java index 086b8758e..86afece63 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowResponse.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowResponse.java @@ -23,28 +23,33 @@ public class UpdateShadowResponse { */ public ShadowState state; + /** * An opaque token used to correlate requests and responses. Present only if a client token was used in the request. * */ public String clientToken; + /** * The current version of the document for the device's shadow shared in AWS IoT. It is increased by one over the previous version of the document. * */ public Integer version; + /** * Contains the timestamps for each attribute in the desired and reported sections so that you can determine when the state was updated. * */ public ShadowMetadata metadata; + /** * The time the response was generated by AWS IoT. * */ public Timestamp timestamp; + } diff --git a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowSubscriptionRequest.java b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowSubscriptionRequest.java index 4e8a44176..5ccbdb026 100644 --- a/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowSubscriptionRequest.java +++ b/sdk/src/main/java/software/amazon/awssdk/iot/iotshadow/model/UpdateShadowSubscriptionRequest.java @@ -20,4 +20,5 @@ public class UpdateShadowSubscriptionRequest { */ public String thingName; + }