in Libraries/src/Amazon.Lambda.Annotations.SourceGenerator/Models/Attributes/AttributeModelBuilder.cs [13:93]
public static AttributeModel Build(AttributeData att, GeneratorExecutionContext context)
{
if (att.AttributeClass == null)
{
throw new NotSupportedException($"An attribute must have an attribute class. Attribute class is not found for {att}");
}
AttributeModel model;
if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.LambdaFunctionAttribute), SymbolEqualityComparer.Default))
{
var data = LambdaFunctionAttributeDataBuilder.Build(att);
model = new AttributeModel<LambdaFunctionAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.FromQueryAttribute), SymbolEqualityComparer.Default))
{
var data = FromQueryAttributeBuilder.Build(att);
model = new AttributeModel<FromQueryAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.FromHeaderAttribute), SymbolEqualityComparer.Default))
{
var data = FromHeaderAttributeBuilder.Build(att);
model = new AttributeModel<FromHeaderAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.FromRouteAttribute), SymbolEqualityComparer.Default))
{
var data = FromRouteAttributeBuilder.Build(att);
model = new AttributeModel<FromRouteAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.HttpApiAttribute), SymbolEqualityComparer.Default))
{
var data = HttpApiAttributeBuilder.Build(att);
model = new AttributeModel<HttpApiAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.RestApiAttribute), SymbolEqualityComparer.Default))
{
var data = RestApiAttributeBuilder.Build(att);
model = new AttributeModel<RestApiAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else if (att.AttributeClass.Equals(context.Compilation.GetTypeByMetadataName(TypeFullNames.SQSEventAttribute), SymbolEqualityComparer.Default))
{
var data = SQSEventAttributeBuilder.Build(att);
model = new AttributeModel<SQSEventAttribute>
{
Data = data,
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
else
{
model = new AttributeModel
{
Type = TypeModelBuilder.Build(att.AttributeClass, context)
};
}
return model;
}