private CreateFleetMetricRequest translateToCreateRequest()

in aws-iot-fleetmetric/src/main/java/com/amazonaws/iot/fleetmetric/CreateHandler.java [94:139]


    private CreateFleetMetricRequest translateToCreateRequest(
            ResourceHandlerRequest<ResourceModel> request,
            Logger logger) {

        ResourceModel model = request.getDesiredResourceState();

        // Combine all tags in one map that we'll use for the request
        Map<String, String> allTags = new HashMap<>();
        if (request.getDesiredResourceTags() != null) {
            // DesiredResourceTags includes both model and stack-level tags.
            // Reference: https://tinyurl.com/yyxtd7w6

            // TODO add system tags back once FleetMetric adds the support
            // allTags.putAll(request.getDesiredResourceTags());
            request.getDesiredResourceTags().entrySet().stream()
                    .filter(e -> !e.getKey().startsWith(AWS_SYSTEM_TAG_PREFIX))
                    .forEach(e -> allTags.put(e.getKey(), e.getValue()));
        }

        // TODO add system tags back once FleetMetric adds the support
        //        if (request.getSystemTags() != null) {
        //            // There are also system tags provided separately.
        //            // SystemTags are the default stack-level tags with aws:cloudformation prefix
        //             allTags.putAll(request.getSystemTags());
        //        } else {
        //            // System tags should always be present as long as the Handler is called by CloudFormation
        //             logger.log("Unexpectedly, system tags are null in the create request for " +
        //                  ResourceModel.TYPE_NAME + " " + model.getMetricName());
        //        }

        return CreateFleetMetricRequest.builder()
                .metricName(model.getMetricName())
                .description(model.getDescription())
                .queryString(model.getQueryString())
                .period(model.getPeriod())
                .aggregationField(model.getAggregationField())
                .queryVersion(model.getQueryVersion())
                .indexName(model.getIndexName())
                .unit(model.getUnit())
                .aggregationType(AggregationType.builder()
                        .name(model.getAggregationType().getName())
                        .values(model.getAggregationType().getValues())
                        .build())
                .tags(Translator.translateTagsToSdk(allTags))
                .build();
    }