1
+ using System ;
2
+ using System . Collections . Generic ;
3
+ using System . Linq ;
4
+ using Intent . Metadata . Models ;
5
+ using Intent . Modules . Common ;
6
+ using Intent . RoslynWeaver . Attributes ;
7
+
8
+ [ assembly: DefaultIntentManaged ( Mode . Fully ) ]
9
+ [ assembly: IntentTemplate ( "Intent.ModuleBuilder.Templates.Api.ApiElementModel" , Version = "1.0" ) ]
10
+
11
+ namespace Intent . Metadata . ApiGateway . Api
12
+ {
13
+ [ IntentManaged ( Mode . Fully , Signature = Mode . Fully ) ]
14
+ public class BodyFieldModel : IMetadataModel , IHasStereotypes , IHasName , IElementWrapper , IHasTypeReference
15
+ {
16
+ public const string SpecializationType = "Body Field" ;
17
+ public const string SpecializationTypeId = "6b201f1e-03e3-4a9d-923f-ca3976c998c5" ;
18
+ protected readonly IElement _element ;
19
+
20
+ [ IntentManaged ( Mode . Fully ) ]
21
+ public BodyFieldModel ( IElement element , string requiredType = SpecializationType )
22
+ {
23
+ if ( ! requiredType . Equals ( element . SpecializationType , StringComparison . InvariantCultureIgnoreCase ) )
24
+ {
25
+ throw new Exception ( $ "Cannot create a '{ GetType ( ) . Name } ' from element with specialization type '{ element . SpecializationType } '. Must be of type '{ SpecializationType } '") ;
26
+ }
27
+ _element = element ;
28
+ }
29
+
30
+ public string Id => _element . Id ;
31
+
32
+ public string Name => _element . Name ;
33
+
34
+ public string Comment => _element . Comment ;
35
+
36
+ public IEnumerable < IStereotype > Stereotypes => _element . Stereotypes ;
37
+
38
+ public ITypeReference TypeReference => _element . TypeReference ;
39
+
40
+
41
+ public IElement InternalElement => _element ;
42
+
43
+ public override string ToString ( )
44
+ {
45
+ return _element . ToString ( ) ;
46
+ }
47
+
48
+ public bool Equals ( BodyFieldModel other )
49
+ {
50
+ return Equals ( _element , other ? . _element ) ;
51
+ }
52
+
53
+ public override bool Equals ( object obj )
54
+ {
55
+ if ( ReferenceEquals ( null , obj ) ) return false ;
56
+ if ( ReferenceEquals ( this , obj ) ) return true ;
57
+ if ( obj . GetType ( ) != this . GetType ( ) ) return false ;
58
+ return Equals ( ( BodyFieldModel ) obj ) ;
59
+ }
60
+
61
+ public override int GetHashCode ( )
62
+ {
63
+ return ( _element != null ? _element . GetHashCode ( ) : 0 ) ;
64
+ }
65
+ }
66
+
67
+ [ IntentManaged ( Mode . Fully ) ]
68
+ public static class BodyFieldModelExtensions
69
+ {
70
+
71
+ public static bool IsBodyFieldModel ( this ICanBeReferencedType type )
72
+ {
73
+ return type != null && type is IElement element && element . SpecializationTypeId == BodyFieldModel . SpecializationTypeId ;
74
+ }
75
+
76
+ public static BodyFieldModel AsBodyFieldModel ( this ICanBeReferencedType type )
77
+ {
78
+ return type . IsBodyFieldModel ( ) ? new BodyFieldModel ( ( IElement ) type ) : null ;
79
+ }
80
+ }
81
+ }
0 commit comments