Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(cfn2ts): doesn't handle property types with the same type as a primitive type #25460

Merged
merged 3 commits into from
May 8, 2023
Merged

fix(cfn2ts): doesn't handle property types with the same type as a primitive type #25460

merged 3 commits into from
May 8, 2023

Conversation

corymhall
Copy link
Contributor

We currently do not account for cases where a property type can have a complex type that matches one of our primitive types. For example, AWS::IoT::TopicRule.LocationAction has a property Timestamp with a Type of Timestamp When cfn2ts generates the TypeScript code it thinks that this is referring to the PrimitiveType Timestamp and coverts it to a Date.

After running gen with these changes the only differences in the cfnspecs were

iot.generated.ts

@@ -10134,7 +10134,7 @@ export namespace CfnTopicRule {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-locationaction.html#cfn-iot-topicrule-locationaction-timestamp
          */
-        readonly timestamp?: Date | cdk.IResolvable;
+        readonly timestamp?: CfnTopicRule.TimestampProperty | cdk.IResolvable;
         /**
          * The name of the tracker resource in Amazon Location in which the location is updated.
          *
@@ -10165,7 +10165,7 @@ function CfnTopicRule_LocationActionPropertyValidator(properties: any): cdk.Vali
     errors.collect(cdk.propertyValidator('longitude', cdk.validateString)(properties.longitude));
     errors.collect(cdk.propertyValidator('roleArn', cdk.requiredValidator)(properties.roleArn));
     errors.collect(cdk.propertyValidator('roleArn', cdk.validateString)(properties.roleArn));
-    errors.collect(cdk.propertyValidator('timestamp', cdk.validateDate)(properties.timestamp));
+    errors.collect(cdk.propertyValidator('timestamp', CfnTopicRule_TimestampPropertyValidator)(properties.timestamp));
     errors.collect(cdk.propertyValidator('trackerName', cdk.requiredValidator)(properties.trackerName));
     errors.collect(cdk.propertyValidator('trackerName', cdk.validateString)(properties.trackerName));
     return errors.wrap('supplied properties not correct for "LocationActionProperty"');
@@ -10187,7 +10187,7 @@ function cfnTopicRuleLocationActionPropertyToCloudFormation(properties: any): an
         Latitude: cdk.stringToCloudFormation(properties.latitude),
         Longitude: cdk.stringToCloudFormation(properties.longitude),
         RoleArn: cdk.stringToCloudFormation(properties.roleArn),
-        Timestamp: cdk.dateToCloudFormation(properties.timestamp),
+        Timestamp: cfnTopicRuleTimestampPropertyToCloudFormation(properties.timestamp),
         TrackerName: cdk.stringToCloudFormation(properties.trackerName),
     };
 }
@@ -10206,7 +10206,7 @@ function CfnTopicRuleLocationActionPropertyFromCloudFormation(properties: any):
     ret.addPropertyResult('latitude', 'Latitude', cfn_parse.FromCloudFormation.getString(properties.Latitude));
     ret.addPropertyResult('longitude', 'Longitude', cfn_parse.FromCloudFormation.getString(properties.Longitude));
     ret.addPropertyResult('roleArn', 'RoleArn', cfn_parse.FromCloudFormation.getString(properties.RoleArn));
-    ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? cfn_parse.FromCloudFormation.getDate(properties.Timestamp) : undefined);
+    ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? CfnTopicRuleTimestampPropertyFromCloudFormation(properties.Timestamp) : undefined);
     ret.addPropertyResult('trackerName', 'TrackerName', cfn_parse.FromCloudFormation.getString(properties.TrackerName));
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;

sagemaker.generated.ts

@@ -2053,7 +2053,7 @@ export namespace CfnDataQualityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-dataqualityjobdefinition-datasetformat.html#cfn-sagemaker-dataqualityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnDataQualityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnDataQualityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -2077,7 +2077,7 @@ function CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties:
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnDataQualityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnDataQualityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -2095,7 +2095,7 @@ function cfnDataQualityJobDefinitionDatasetFormatPropertyToCloudFormation(proper
     CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnDataQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnDataQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -2111,7 +2111,7 @@ function CfnDataQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(prop
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnDataQualityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnDataQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnDataQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -11470,7 +11470,7 @@ export namespace CfnModelBiasJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelbiasjobdefinition-datasetformat.html#cfn-sagemaker-modelbiasjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelBiasJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelBiasJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -11494,7 +11494,7 @@ function CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties: an
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelBiasJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelBiasJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -11512,7 +11512,7 @@ function cfnModelBiasJobDefinitionDatasetFormatPropertyToCloudFormation(properti
     CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelBiasJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelBiasJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -11528,7 +11528,7 @@ function CfnModelBiasJobDefinitionDatasetFormatPropertyFromCloudFormation(proper
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelBiasJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelBiasJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelBiasJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -15402,7 +15402,7 @@ export namespace CfnModelExplainabilityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelexplainabilityjobdefinition-datasetformat.html#cfn-sagemaker-modelexplainabilityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelExplainabilityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelExplainabilityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -15426,7 +15426,7 @@ function CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(prop
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelExplainabilityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelExplainabilityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -15444,7 +15444,7 @@ function cfnModelExplainabilityJobDefinitionDatasetFormatPropertyToCloudFormatio
     CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelExplainabilityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelExplainabilityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -15460,7 +15460,7 @@ function CfnModelExplainabilityJobDefinitionDatasetFormatPropertyFromCloudFormat
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelExplainabilityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelExplainabilityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelExplainabilityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -20808,7 +20808,7 @@ export namespace CfnModelQualityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelqualityjobdefinition-datasetformat.html#cfn-sagemaker-modelqualityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelQualityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelQualityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -20832,7 +20832,7 @@ function CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties:
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelQualityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelQualityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -20850,7 +20850,7 @@ function cfnModelQualityJobDefinitionDatasetFormatPropertyToCloudFormation(prope
     CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -20866,7 +20866,7 @@ function CfnModelQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(pro
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelQualityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -22693,7 +22693,7 @@ export namespace CfnMonitoringSchedule {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-monitoringschedule-datasetformat.html#cfn-sagemaker-monitoringschedule-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnMonitoringSchedule.JsonProperty | cdk.IResolvable;
         /**
          * `CfnMonitoringSchedule.DatasetFormatProperty.Parquet`
          *
@@ -22717,7 +22717,7 @@ function CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties: any):
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnMonitoringSchedule_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnMonitoringSchedule_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -22735,7 +22735,7 @@ function cfnMonitoringScheduleDatasetFormatPropertyToCloudFormation(properties:
     CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnMonitoringScheduleCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnMonitoringScheduleJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -22751,7 +22751,7 @@ function CfnMonitoringScheduleDatasetFormatPropertyFromCloudFormation(properties
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnMonitoringSchedule.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnMonitoringScheduleCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnMonitoringScheduleJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;

Closes #22732


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

…imitive type

We currently do not account for cases where a property type can have a
complex type that matches one of our primitive types. For example, [AWS::IoT::TopicRule.LocationAction](https://github.com/aws/aws-cdk/blob/a0ad49df7b2536d800b4890ae0116e6ce26e6c55/packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_IoT.json#L1437-L1442)
has a property `Timestamp` with a Type of [Timestamp](https://github.com/aws/aws-cdk/blob/a0ad49df7b2536d800b4890ae0116e6ce26e6c55/packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_IoT.json#L1727-L1742)
When cfn2ts generates the TypeScript code it thinks that this is
referring to the `PrimitiveType` `Timestamp` and coverts it to a `Date`.

After running `gen` with these changes the only differences in the
cfnspecs were

`iot.generated.ts`
```diff
@@ -10134,7 +10134,7 @@ export namespace CfnTopicRule {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-locationaction.html#cfn-iot-topicrule-locationaction-timestamp
          */
-        readonly timestamp?: Date | cdk.IResolvable;
+        readonly timestamp?: CfnTopicRule.TimestampProperty | cdk.IResolvable;
         /**
          * The name of the tracker resource in Amazon Location in which the location is updated.
          *
@@ -10165,7 +10165,7 @@ function CfnTopicRule_LocationActionPropertyValidator(properties: any): cdk.Vali
     errors.collect(cdk.propertyValidator('longitude', cdk.validateString)(properties.longitude));
     errors.collect(cdk.propertyValidator('roleArn', cdk.requiredValidator)(properties.roleArn));
     errors.collect(cdk.propertyValidator('roleArn', cdk.validateString)(properties.roleArn));
-    errors.collect(cdk.propertyValidator('timestamp', cdk.validateDate)(properties.timestamp));
+    errors.collect(cdk.propertyValidator('timestamp', CfnTopicRule_TimestampPropertyValidator)(properties.timestamp));
     errors.collect(cdk.propertyValidator('trackerName', cdk.requiredValidator)(properties.trackerName));
     errors.collect(cdk.propertyValidator('trackerName', cdk.validateString)(properties.trackerName));
     return errors.wrap('supplied properties not correct for "LocationActionProperty"');
@@ -10187,7 +10187,7 @@ function cfnTopicRuleLocationActionPropertyToCloudFormation(properties: any): an
         Latitude: cdk.stringToCloudFormation(properties.latitude),
         Longitude: cdk.stringToCloudFormation(properties.longitude),
         RoleArn: cdk.stringToCloudFormation(properties.roleArn),
-        Timestamp: cdk.dateToCloudFormation(properties.timestamp),
+        Timestamp: cfnTopicRuleTimestampPropertyToCloudFormation(properties.timestamp),
         TrackerName: cdk.stringToCloudFormation(properties.trackerName),
     };
 }
@@ -10206,7 +10206,7 @@ function CfnTopicRuleLocationActionPropertyFromCloudFormation(properties: any):
     ret.addPropertyResult('latitude', 'Latitude', cfn_parse.FromCloudFormation.getString(properties.Latitude));
     ret.addPropertyResult('longitude', 'Longitude', cfn_parse.FromCloudFormation.getString(properties.Longitude));
     ret.addPropertyResult('roleArn', 'RoleArn', cfn_parse.FromCloudFormation.getString(properties.RoleArn));
-    ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? cfn_parse.FromCloudFormation.getDate(properties.Timestamp) : undefined);
+    ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? CfnTopicRuleTimestampPropertyFromCloudFormation(properties.Timestamp) : undefined);
     ret.addPropertyResult('trackerName', 'TrackerName', cfn_parse.FromCloudFormation.getString(properties.TrackerName));
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
```

`sagemaker.generated.ts`
```diff
@@ -2053,7 +2053,7 @@ export namespace CfnDataQualityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-dataqualityjobdefinition-datasetformat.html#cfn-sagemaker-dataqualityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnDataQualityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnDataQualityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -2077,7 +2077,7 @@ function CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties:
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnDataQualityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnDataQualityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -2095,7 +2095,7 @@ function cfnDataQualityJobDefinitionDatasetFormatPropertyToCloudFormation(proper
     CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnDataQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnDataQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -2111,7 +2111,7 @@ function CfnDataQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(prop
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnDataQualityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnDataQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnDataQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -11470,7 +11470,7 @@ export namespace CfnModelBiasJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelbiasjobdefinition-datasetformat.html#cfn-sagemaker-modelbiasjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelBiasJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelBiasJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -11494,7 +11494,7 @@ function CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties: an
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelBiasJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelBiasJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -11512,7 +11512,7 @@ function cfnModelBiasJobDefinitionDatasetFormatPropertyToCloudFormation(properti
     CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelBiasJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelBiasJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -11528,7 +11528,7 @@ function CfnModelBiasJobDefinitionDatasetFormatPropertyFromCloudFormation(proper
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelBiasJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelBiasJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelBiasJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -15402,7 +15402,7 @@ export namespace CfnModelExplainabilityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelexplainabilityjobdefinition-datasetformat.html#cfn-sagemaker-modelexplainabilityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelExplainabilityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelExplainabilityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -15426,7 +15426,7 @@ function CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(prop
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelExplainabilityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelExplainabilityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -15444,7 +15444,7 @@ function cfnModelExplainabilityJobDefinitionDatasetFormatPropertyToCloudFormatio
     CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelExplainabilityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelExplainabilityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -15460,7 +15460,7 @@ function CfnModelExplainabilityJobDefinitionDatasetFormatPropertyFromCloudFormat
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelExplainabilityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelExplainabilityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelExplainabilityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -20808,7 +20808,7 @@ export namespace CfnModelQualityJobDefinition {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelqualityjobdefinition-datasetformat.html#cfn-sagemaker-modelqualityjobdefinition-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnModelQualityJobDefinition.JsonProperty | cdk.IResolvable;
         /**
          * `CfnModelQualityJobDefinition.DatasetFormatProperty.Parquet`
          *
@@ -20832,7 +20832,7 @@ function CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties:
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnModelQualityJobDefinition_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnModelQualityJobDefinition_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -20850,7 +20850,7 @@ function cfnModelQualityJobDefinitionDatasetFormatPropertyToCloudFormation(prope
     CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnModelQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnModelQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -20866,7 +20866,7 @@ function CfnModelQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(pro
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelQualityJobDefinition.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
@@ -22693,7 +22693,7 @@ export namespace CfnMonitoringSchedule {
          *
          * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-monitoringschedule-datasetformat.html#cfn-sagemaker-monitoringschedule-datasetformat-json
          */
-        readonly json?: any | cdk.IResolvable;
+        readonly json?: CfnMonitoringSchedule.JsonProperty | cdk.IResolvable;
         /**
          * `CfnMonitoringSchedule.DatasetFormatProperty.Parquet`
          *
@@ -22717,7 +22717,7 @@ function CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties: any):
         errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
     }
     errors.collect(cdk.propertyValidator('csv', CfnMonitoringSchedule_CsvPropertyValidator)(properties.csv));
-    errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+    errors.collect(cdk.propertyValidator('json', CfnMonitoringSchedule_JsonPropertyValidator)(properties.json));
     errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
     return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
 }
@@ -22735,7 +22735,7 @@ function cfnMonitoringScheduleDatasetFormatPropertyToCloudFormation(properties:
     CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties).assertSuccess();
     return {
         Csv: cfnMonitoringScheduleCsvPropertyToCloudFormation(properties.csv),
-        Json: cdk.objectToCloudFormation(properties.json),
+        Json: cfnMonitoringScheduleJsonPropertyToCloudFormation(properties.json),
         Parquet: cdk.booleanToCloudFormation(properties.parquet),
     };
 }
@@ -22751,7 +22751,7 @@ function CfnMonitoringScheduleDatasetFormatPropertyFromCloudFormation(properties
     }
     const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnMonitoringSchedule.DatasetFormatProperty>();
     ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnMonitoringScheduleCsvPropertyFromCloudFormation(properties.Csv) : undefined);
-    ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+    ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnMonitoringScheduleJsonPropertyFromCloudFormation(properties.Json) : undefined);
     ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
     ret.addUnrecognizedPropertiesAsExtra(properties);
     return ret;
```
@gitpod-io
Copy link

gitpod-io bot commented May 5, 2023

@corymhall corymhall marked this pull request as draft May 5, 2023 13:33
@github-actions github-actions bot added bug This issue is a bug. effort/small Small work item – less than a day of effort p1 labels May 5, 2023
@aws-cdk-automation aws-cdk-automation requested a review from a team May 5, 2023 13:33
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label May 5, 2023
Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.

A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed add Clarification Request to a comment.

@corymhall corymhall marked this pull request as ready for review May 5, 2023 15:27
@corymhall corymhall added pr-linter/exempt-test The PR linter will not require test changes pr-linter/exempt-integ-test The PR linter will not require integ test changes labels May 8, 2023
@aws-cdk-automation aws-cdk-automation dismissed their stale review May 8, 2023 13:48

✅ Updated pull request passes all PRLinter validations. Dismissing previous PRLinter review.

@aws-cdk-automation aws-cdk-automation added the pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. label May 8, 2023
@mergify
Copy link
Contributor

mergify bot commented May 8, 2023

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: df033cd
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mergify mergify bot merged commit b76c182 into aws:main May 8, 2023
@mergify
Copy link
Contributor

mergify bot commented May 8, 2023

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue is a bug. contribution/core This is a PR that came from AWS. effort/small Small work item – less than a day of effort p1 pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. pr-linter/exempt-integ-test The PR linter will not require integ test changes pr-linter/exempt-test The PR linter will not require test changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(@aws-cdk/aws-iot): CfnLocationAction asks for Date type despite spec wanting Timestamp type
3 participants