github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/catalog/v1alpha1/ProductReview.go (about) 1 /* 2 * This file is automatically generated 3 */ 4 5 package catalog 6 7 import ( 8 "encoding/json" 9 10 apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 11 12 "github.com/Axway/agent-sdk/pkg/util/log" 13 ) 14 15 var ( 16 ProductReviewCtx log.ContextField = "productReview" 17 18 _ProductReviewGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "catalog", 21 Kind: "ProductReview", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 ProductReviewScopes = []string{"Product"} 27 ) 28 29 const ( 30 ProductReviewResourceName = "productreviews" 31 ProductReviewMarketplaceSubResourceName = "marketplace" 32 ProductReviewStateSubResourceName = "state" 33 ) 34 35 func ProductReviewGVK() apiv1.GroupVersionKind { 36 return _ProductReviewGVK 37 } 38 39 func init() { 40 apiv1.RegisterGVK(_ProductReviewGVK, ProductReviewScopes[0], ProductReviewResourceName) 41 log.RegisterContextField(ProductReviewCtx) 42 } 43 44 // ProductReview Resource 45 type ProductReview struct { 46 apiv1.ResourceMeta 47 Marketplace ProductReviewMarketplace `json:"marketplace"` 48 Owner *apiv1.Owner `json:"owner"` 49 Spec ProductReviewSpec `json:"spec"` 50 State ProductReviewState `json:"state"` 51 } 52 53 // NewProductReview creates an empty *ProductReview 54 func NewProductReview(name, scopeName string) *ProductReview { 55 return &ProductReview{ 56 ResourceMeta: apiv1.ResourceMeta{ 57 Name: name, 58 GroupVersionKind: _ProductReviewGVK, 59 Metadata: apiv1.Metadata{ 60 Scope: apiv1.MetadataScope{ 61 Name: scopeName, 62 Kind: ProductReviewScopes[0], 63 }, 64 }, 65 }, 66 } 67 } 68 69 // ProductReviewFromInstanceArray converts a []*ResourceInstance to a []*ProductReview 70 func ProductReviewFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*ProductReview, error) { 71 newArray := make([]*ProductReview, 0) 72 for _, item := range fromArray { 73 res := &ProductReview{} 74 err := res.FromInstance(item) 75 if err != nil { 76 return make([]*ProductReview, 0), err 77 } 78 newArray = append(newArray, res) 79 } 80 81 return newArray, nil 82 } 83 84 // AsInstance converts a ProductReview to a ResourceInstance 85 func (res *ProductReview) AsInstance() (*apiv1.ResourceInstance, error) { 86 meta := res.ResourceMeta 87 meta.GroupVersionKind = ProductReviewGVK() 88 res.ResourceMeta = meta 89 90 m, err := json.Marshal(res) 91 if err != nil { 92 return nil, err 93 } 94 95 instance := apiv1.ResourceInstance{} 96 err = json.Unmarshal(m, &instance) 97 if err != nil { 98 return nil, err 99 } 100 101 return &instance, nil 102 } 103 104 // FromInstance converts a ResourceInstance to a ProductReview 105 func (res *ProductReview) FromInstance(ri *apiv1.ResourceInstance) error { 106 if ri == nil { 107 res = nil 108 return nil 109 } 110 var err error 111 rawResource := ri.GetRawResource() 112 if rawResource == nil { 113 rawResource, err = json.Marshal(ri) 114 if err != nil { 115 return err 116 } 117 } 118 err = json.Unmarshal(rawResource, res) 119 return err 120 } 121 122 // MarshalJSON custom marshaller to handle sub resources 123 func (res *ProductReview) MarshalJSON() ([]byte, error) { 124 m, err := json.Marshal(&res.ResourceMeta) 125 if err != nil { 126 return nil, err 127 } 128 129 var out map[string]interface{} 130 err = json.Unmarshal(m, &out) 131 if err != nil { 132 return nil, err 133 } 134 135 out["marketplace"] = res.Marketplace 136 out["owner"] = res.Owner 137 out["spec"] = res.Spec 138 out["state"] = res.State 139 140 return json.Marshal(out) 141 } 142 143 // UnmarshalJSON custom unmarshaller to handle sub resources 144 func (res *ProductReview) UnmarshalJSON(data []byte) error { 145 var err error 146 147 aux := &apiv1.ResourceInstance{} 148 err = json.Unmarshal(data, aux) 149 if err != nil { 150 return err 151 } 152 153 res.ResourceMeta = aux.ResourceMeta 154 res.Owner = aux.Owner 155 156 // ResourceInstance holds the spec as a map[string]interface{}. 157 // Convert it to bytes, then convert to the spec type for the resource. 158 sr, err := json.Marshal(aux.Spec) 159 if err != nil { 160 return err 161 } 162 163 err = json.Unmarshal(sr, &res.Spec) 164 if err != nil { 165 return err 166 } 167 168 // marshalling subresource Marketplace 169 if v, ok := aux.SubResources["marketplace"]; ok { 170 sr, err = json.Marshal(v) 171 if err != nil { 172 return err 173 } 174 175 delete(aux.SubResources, "marketplace") 176 err = json.Unmarshal(sr, &res.Marketplace) 177 if err != nil { 178 return err 179 } 180 } 181 182 // marshalling subresource State 183 if v, ok := aux.SubResources["state"]; ok { 184 sr, err = json.Marshal(v) 185 if err != nil { 186 return err 187 } 188 189 delete(aux.SubResources, "state") 190 err = json.Unmarshal(sr, &res.State) 191 if err != nil { 192 return err 193 } 194 } 195 196 return nil 197 } 198 199 // PluralName returns the plural name of the resource 200 func (res *ProductReview) PluralName() string { 201 return ProductReviewResourceName 202 }