Skip to content

Commit 1b88503

Browse files
committed
Improve error handling
1 parent 9aa70c2 commit 1b88503

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

src/Dibix.Sdk.CodeGeneration/Validation/ContractArtifactModelValidator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,18 +264,18 @@ private void VisitPropertySource(TypeReference parameterType, ActionParameterPro
264264

265265
private void VisitUDTParameter(UserDefinedTypeParameter? userDefinedTypeParameter, SchemaDefinition bodySchema, ObjectSchemaProperty bodyProperty, IDictionary<ObjectSchema, ObjectContractDefinition> schemaPropertyMap)
266266
{
267-
if (userDefinedTypeParameter == null)
267+
if (userDefinedTypeParameter == null || bodyProperty.Type == null)
268268
return;
269269

270270
string parameterName = userDefinedTypeParameter.Value.Name;
271271
string udtName = userDefinedTypeParameter.Value.Schema.UdtName;
272-
if (!(bodyProperty.Type is SchemaTypeReference schemaTypeReference))
272+
if (bodyProperty.Type is not SchemaTypeReference schemaTypeReference)
273273
{
274274
// UDTs with only one column can be mapped from a primitive type
275275
if (userDefinedTypeParameter.Value.Schema.Properties.Count == 1)
276276
return;
277277

278-
_logger.LogError($"Unexpected property contract '{bodyProperty.Type?.GetType()}' for property '{bodySchema.FullName}.{bodyProperty.Name}'. Expected object schema when mapping complex UDT parameter: @{parameterName} {udtName}.", bodyProperty.Type.Location.Source, bodyProperty.Type.Location.Line, bodyProperty.Type.Location.Column);
278+
_logger.LogError($"Unexpected property contract '{bodyProperty.Type.GetType()}' for property '{bodySchema.FullName}.{bodyProperty.Name}'. Expected object schema when mapping complex UDT parameter: @{parameterName} {udtName}.", bodyProperty.Type.Location.Source, bodyProperty.Type.Location.Line, bodyProperty.Type.Location.Column);
279279
return;
280280
}
281281

src/Dibix.Sdk.CodeGeneration/Validation/UserDefinedTypeParameterModelValidator.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ private bool ValidateParameter(ActionParameter parameter, ActionDefinition actio
7979
return false;
8080
}
8181

82+
if (sourceProperty.Type == null) // 'Could not resolve type...' logged somewhere else
83+
return false;
84+
8285
if (sourceProperty.Type is not SchemaTypeReference sourcePropertySchemaTypeReference)
8386
{
8487
_logger.LogError($"Unexpected contract '{sourceProperty.Type?.GetType()}' for source property '{bodySchemaTypeReference.Key}.{sourceProperty.Name.Value}'. Expected object schema when mapping complex UDT parameter: @{parameter.InternalParameterName} {userDefinedTypeSchema.UdtName}.", target.SourceLocation.Source, target.SourceLocation.Line, target.SourceLocation.Column);

0 commit comments

Comments
 (0)