/aws-android-sdk-location/src/main/java/com/amazonaws/services/geo/model/transform/CalculateRouteRequestMarshaller.java

https://github.com/aws/aws-sdk-android · Java · 166 lines · 138 code · 11 blank · 17 comment · 36 complexity · 87defba138aa381217a8b072378c576a MD5 · raw file

  1. /*
  2. * Copyright 2010-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License").
  5. * You may not use this file except in compliance with the License.
  6. * A copy of the License is located at
  7. *
  8. * http://aws.amazon.com/apache2.0
  9. *
  10. * or in the "license" file accompanying this file. This file is distributed
  11. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  12. * express or implied. See the License for the specific language governing
  13. * permissions and limitations under the License.
  14. */
  15. package com.amazonaws.services.geo.model.transform;
  16. import static com.amazonaws.util.StringUtils.UTF8;
  17. import java.io.ByteArrayInputStream;
  18. import java.io.ByteArrayOutputStream;
  19. import java.io.OutputStreamWriter;
  20. import java.io.StringWriter;
  21. import java.io.Writer;
  22. import android.text.TextUtils;
  23. import com.amazonaws.AmazonClientException;
  24. import com.amazonaws.Request;
  25. import com.amazonaws.DefaultRequest;
  26. import com.amazonaws.http.HttpMethodName;
  27. import com.amazonaws.services.geo.model.*;
  28. import com.amazonaws.transform.Marshaller;
  29. import com.amazonaws.util.BinaryUtils;
  30. import com.amazonaws.util.DateUtils;
  31. import com.amazonaws.util.StringUtils;
  32. import com.amazonaws.util.StringInputStream;
  33. import com.amazonaws.util.json.AwsJsonWriter;
  34. import com.amazonaws.util.json.JsonUtils;
  35. /**
  36. * JSON request marshaller for CalculateRouteRequest
  37. */
  38. public class CalculateRouteRequestMarshaller implements
  39. Marshaller<Request<CalculateRouteRequest>, CalculateRouteRequest> {
  40. public Request<CalculateRouteRequest> marshall(CalculateRouteRequest calculateRouteRequest) {
  41. if (calculateRouteRequest == null) {
  42. throw new AmazonClientException(
  43. "Invalid argument passed to marshall(CalculateRouteRequest)");
  44. }
  45. Request<CalculateRouteRequest> request = new DefaultRequest<CalculateRouteRequest>(
  46. calculateRouteRequest, "AmazonLocation");
  47. request.setHttpMethod(HttpMethodName.POST);
  48. String uriResourcePath = "/routes/v0/calculators/{CalculatorName}/calculate/route";
  49. uriResourcePath = uriResourcePath.replace(
  50. "{CalculatorName}",
  51. (calculateRouteRequest.getCalculatorName() == null) ? "" : StringUtils
  52. .fromString(calculateRouteRequest.getCalculatorName()));
  53. request.setResourcePath(uriResourcePath);
  54. try {
  55. StringWriter stringWriter = new StringWriter();
  56. AwsJsonWriter jsonWriter = JsonUtils.getJsonWriter(stringWriter);
  57. jsonWriter.beginObject();
  58. if (calculateRouteRequest.getCarModeOptions() != null) {
  59. CalculateRouteCarModeOptions carModeOptions = calculateRouteRequest
  60. .getCarModeOptions();
  61. jsonWriter.name("CarModeOptions");
  62. CalculateRouteCarModeOptionsJsonMarshaller.getInstance().marshall(carModeOptions,
  63. jsonWriter);
  64. }
  65. if (calculateRouteRequest.getDepartNow() != null) {
  66. Boolean departNow = calculateRouteRequest.getDepartNow();
  67. jsonWriter.name("DepartNow");
  68. jsonWriter.value(departNow);
  69. }
  70. if (calculateRouteRequest.getDeparturePosition() != null) {
  71. java.util.List<Double> departurePosition = calculateRouteRequest
  72. .getDeparturePosition();
  73. jsonWriter.name("DeparturePosition");
  74. jsonWriter.beginArray();
  75. for (Double departurePositionItem : departurePosition) {
  76. if (departurePositionItem != null) {
  77. jsonWriter.value(departurePositionItem);
  78. }
  79. }
  80. jsonWriter.endArray();
  81. }
  82. if (calculateRouteRequest.getDepartureTime() != null) {
  83. java.util.Date departureTime = calculateRouteRequest.getDepartureTime();
  84. jsonWriter.name("DepartureTime");
  85. jsonWriter.value(DateUtils.formatISO8601Date(departureTime));
  86. }
  87. if (calculateRouteRequest.getDestinationPosition() != null) {
  88. java.util.List<Double> destinationPosition = calculateRouteRequest
  89. .getDestinationPosition();
  90. jsonWriter.name("DestinationPosition");
  91. jsonWriter.beginArray();
  92. for (Double destinationPositionItem : destinationPosition) {
  93. if (destinationPositionItem != null) {
  94. jsonWriter.value(destinationPositionItem);
  95. }
  96. }
  97. jsonWriter.endArray();
  98. }
  99. if (calculateRouteRequest.getDistanceUnit() != null) {
  100. String distanceUnit = calculateRouteRequest.getDistanceUnit();
  101. jsonWriter.name("DistanceUnit");
  102. jsonWriter.value(distanceUnit);
  103. }
  104. if (calculateRouteRequest.getIncludeLegGeometry() != null) {
  105. Boolean includeLegGeometry = calculateRouteRequest.getIncludeLegGeometry();
  106. jsonWriter.name("IncludeLegGeometry");
  107. jsonWriter.value(includeLegGeometry);
  108. }
  109. if (calculateRouteRequest.getTravelMode() != null) {
  110. String travelMode = calculateRouteRequest.getTravelMode();
  111. jsonWriter.name("TravelMode");
  112. jsonWriter.value(travelMode);
  113. }
  114. if (calculateRouteRequest.getTruckModeOptions() != null) {
  115. CalculateRouteTruckModeOptions truckModeOptions = calculateRouteRequest
  116. .getTruckModeOptions();
  117. jsonWriter.name("TruckModeOptions");
  118. CalculateRouteTruckModeOptionsJsonMarshaller.getInstance().marshall(
  119. truckModeOptions, jsonWriter);
  120. }
  121. if (calculateRouteRequest.getWaypointPositions() != null) {
  122. java.util.List<java.util.List<Double>> waypointPositions = calculateRouteRequest
  123. .getWaypointPositions();
  124. jsonWriter.name("WaypointPositions");
  125. jsonWriter.beginArray();
  126. for (java.util.List<Double> waypointPositionsItem : waypointPositions) {
  127. if (waypointPositionsItem != null) {
  128. jsonWriter.beginArray();
  129. for (Double waypointPositionsItemItem : waypointPositionsItem) {
  130. if (waypointPositionsItemItem != null) {
  131. jsonWriter.value(waypointPositionsItemItem);
  132. }
  133. }
  134. jsonWriter.endArray();
  135. }
  136. }
  137. jsonWriter.endArray();
  138. }
  139. jsonWriter.endObject();
  140. jsonWriter.close();
  141. String snippet = stringWriter.toString();
  142. byte[] content = snippet.getBytes(UTF8);
  143. request.setContent(new StringInputStream(snippet));
  144. request.addHeader("Content-Length", Integer.toString(content.length));
  145. } catch (Throwable t) {
  146. throw new AmazonClientException(
  147. "Unable to marshall request to JSON: " + t.getMessage(), t);
  148. }
  149. if (!request.getHeaders().containsKey("Content-Type")) {
  150. request.addHeader("Content-Type", "application/x-amz-json-1.1");
  151. }
  152. request.setHostPrefix("routes.");
  153. return request;
  154. }
  155. }