github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1/role_binding/role_binding.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/iam/proto/v1/role_binding.proto 3 // DO NOT EDIT!!! 4 5 package role_binding 6 7 import ( 8 "encoding/json" 9 "strings" 10 11 "google.golang.org/grpc/codes" 12 "google.golang.org/grpc/status" 13 "google.golang.org/protobuf/proto" 14 preflect "google.golang.org/protobuf/reflect/protoreflect" 15 googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 16 17 gotenobject "github.com/cloudwan/goten-sdk/runtime/object" 18 ) 19 20 // proto imports 21 import ( 22 condition "github.com/cloudwan/edgelq-sdk/iam/resources/v1/condition" 23 organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization" 24 project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project" 25 role "github.com/cloudwan/edgelq-sdk/iam/resources/v1/role" 26 meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service" 27 meta "github.com/cloudwan/goten-sdk/types/meta" 28 ) 29 30 // ensure the imports are used 31 var ( 32 _ = new(json.Marshaler) 33 _ = strings.Builder{} 34 35 _ = codes.NotFound 36 _ = status.Status{} 37 _ = new(proto.Message) 38 _ = new(preflect.Message) 39 _ = googlefieldmaskpb.FieldMask{} 40 41 _ = new(gotenobject.FieldMask) 42 ) 43 44 // make sure we're using proto imports 45 var ( 46 _ = &condition.Condition{} 47 _ = &organization.Organization{} 48 _ = &project.Project{} 49 _ = &role.Role{} 50 _ = &meta_service.Service{} 51 _ = &meta.Meta{} 52 ) 53 54 type RoleBinding_FieldMask struct { 55 Paths []RoleBinding_FieldPath 56 } 57 58 func FullRoleBinding_FieldMask() *RoleBinding_FieldMask { 59 res := &RoleBinding_FieldMask{} 60 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorName}) 61 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMetadata}) 62 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorRole}) 63 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMember}) 64 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorScopeParams}) 65 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorExecutableConditions}) 66 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorOwnedObjects}) 67 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMemberType}) 68 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorCategory}) 69 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorAncestryPath}) 70 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorParentByOrg}) 71 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorSpecGeneration}) 72 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorHasOwnedObjects}) 73 res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorDisableForChildScopes}) 74 return res 75 } 76 77 func (fieldMask *RoleBinding_FieldMask) String() string { 78 if fieldMask == nil { 79 return "<nil>" 80 } 81 pathsStr := make([]string, 0, len(fieldMask.Paths)) 82 for _, path := range fieldMask.Paths { 83 pathsStr = append(pathsStr, path.String()) 84 } 85 return strings.Join(pathsStr, ", ") 86 } 87 88 func (fieldMask *RoleBinding_FieldMask) IsFull() bool { 89 if fieldMask == nil { 90 return false 91 } 92 presentSelectors := make([]bool, 14) 93 for _, path := range fieldMask.Paths { 94 if asFinal, ok := path.(*RoleBinding_FieldTerminalPath); ok { 95 presentSelectors[int(asFinal.selector)] = true 96 } 97 } 98 for _, flag := range presentSelectors { 99 if !flag { 100 return false 101 } 102 } 103 return true 104 } 105 106 func (fieldMask *RoleBinding_FieldMask) ProtoReflect() preflect.Message { 107 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 108 return ParseRoleBinding_FieldPath(raw) 109 }) 110 } 111 112 func (fieldMask *RoleBinding_FieldMask) ProtoMessage() {} 113 114 func (fieldMask *RoleBinding_FieldMask) Reset() { 115 if fieldMask != nil { 116 fieldMask.Paths = nil 117 } 118 } 119 120 func (fieldMask *RoleBinding_FieldMask) Subtract(other *RoleBinding_FieldMask) *RoleBinding_FieldMask { 121 result := &RoleBinding_FieldMask{} 122 removedSelectors := make([]bool, 14) 123 otherSubMasks := map[RoleBinding_FieldPathSelector]gotenobject.FieldMask{ 124 RoleBinding_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 125 RoleBinding_FieldPathSelectorScopeParams: &role.ScopeParam_FieldMask{}, 126 RoleBinding_FieldPathSelectorExecutableConditions: &condition.ExecutableCondition_FieldMask{}, 127 RoleBinding_FieldPathSelectorAncestryPath: &RoleBinding_Parent_FieldMask{}, 128 } 129 mySubMasks := map[RoleBinding_FieldPathSelector]gotenobject.FieldMask{ 130 RoleBinding_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 131 RoleBinding_FieldPathSelectorScopeParams: &role.ScopeParam_FieldMask{}, 132 RoleBinding_FieldPathSelectorExecutableConditions: &condition.ExecutableCondition_FieldMask{}, 133 RoleBinding_FieldPathSelectorAncestryPath: &RoleBinding_Parent_FieldMask{}, 134 } 135 136 for _, path := range other.GetPaths() { 137 switch tp := path.(type) { 138 case *RoleBinding_FieldTerminalPath: 139 removedSelectors[int(tp.selector)] = true 140 case *RoleBinding_FieldSubPath: 141 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 142 } 143 } 144 for _, path := range fieldMask.GetPaths() { 145 if !removedSelectors[int(path.Selector())] { 146 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 147 if tp, ok := path.(*RoleBinding_FieldTerminalPath); ok { 148 switch tp.selector { 149 case RoleBinding_FieldPathSelectorMetadata: 150 mySubMasks[RoleBinding_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 151 case RoleBinding_FieldPathSelectorScopeParams: 152 mySubMasks[RoleBinding_FieldPathSelectorScopeParams] = role.FullScopeParam_FieldMask() 153 case RoleBinding_FieldPathSelectorExecutableConditions: 154 mySubMasks[RoleBinding_FieldPathSelectorExecutableConditions] = condition.FullExecutableCondition_FieldMask() 155 case RoleBinding_FieldPathSelectorAncestryPath: 156 mySubMasks[RoleBinding_FieldPathSelectorAncestryPath] = FullRoleBinding_Parent_FieldMask() 157 } 158 } else if tp, ok := path.(*RoleBinding_FieldSubPath); ok { 159 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 160 } 161 } else { 162 result.Paths = append(result.Paths, path) 163 } 164 } 165 } 166 for selector, mySubMask := range mySubMasks { 167 if mySubMask.PathsCount() > 0 { 168 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 169 result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: selector, subPath: allowedPath}) 170 } 171 } 172 } 173 174 if len(result.Paths) == 0 { 175 return nil 176 } 177 return result 178 } 179 180 func (fieldMask *RoleBinding_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 181 return fieldMask.Subtract(other.(*RoleBinding_FieldMask)) 182 } 183 184 // FilterInputFields generates copy of field paths with output_only field paths removed 185 func (fieldMask *RoleBinding_FieldMask) FilterInputFields() *RoleBinding_FieldMask { 186 result := &RoleBinding_FieldMask{} 187 for _, path := range fieldMask.Paths { 188 switch path.Selector() { 189 case RoleBinding_FieldPathSelectorOwnedObjects: 190 case RoleBinding_FieldPathSelectorMemberType: 191 case RoleBinding_FieldPathSelectorCategory: 192 case RoleBinding_FieldPathSelectorSpecGeneration: 193 case RoleBinding_FieldPathSelectorHasOwnedObjects: 194 case RoleBinding_FieldPathSelectorDisableForChildScopes: 195 case RoleBinding_FieldPathSelectorMetadata: 196 if _, ok := path.(*RoleBinding_FieldTerminalPath); ok { 197 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 198 result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: path.Selector(), subPath: subpath}) 199 } 200 } else if sub, ok := path.(*RoleBinding_FieldSubPath); ok { 201 selectedMask := &meta.Meta_FieldMask{ 202 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 203 } 204 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 205 result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: RoleBinding_FieldPathSelectorMetadata, subPath: allowedPath}) 206 } 207 } 208 default: 209 result.Paths = append(result.Paths, path) 210 } 211 } 212 return result 213 } 214 215 // ToFieldMask is used for proto conversions 216 func (fieldMask *RoleBinding_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 217 protoFieldMask := &googlefieldmaskpb.FieldMask{} 218 for _, path := range fieldMask.Paths { 219 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 220 } 221 return protoFieldMask 222 } 223 224 func (fieldMask *RoleBinding_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 225 if fieldMask == nil { 226 return status.Error(codes.Internal, "target field mask is nil") 227 } 228 fieldMask.Paths = make([]RoleBinding_FieldPath, 0, len(protoFieldMask.Paths)) 229 for _, strPath := range protoFieldMask.Paths { 230 path, err := ParseRoleBinding_FieldPath(strPath) 231 if err != nil { 232 return err 233 } 234 fieldMask.Paths = append(fieldMask.Paths, path) 235 } 236 return nil 237 } 238 239 // implement methods required by customType 240 func (fieldMask RoleBinding_FieldMask) Marshal() ([]byte, error) { 241 protoFieldMask := fieldMask.ToProtoFieldMask() 242 return proto.Marshal(protoFieldMask) 243 } 244 245 func (fieldMask *RoleBinding_FieldMask) Unmarshal(data []byte) error { 246 protoFieldMask := &googlefieldmaskpb.FieldMask{} 247 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 248 return err 249 } 250 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 251 return err 252 } 253 return nil 254 } 255 256 func (fieldMask *RoleBinding_FieldMask) Size() int { 257 return proto.Size(fieldMask.ToProtoFieldMask()) 258 } 259 260 func (fieldMask RoleBinding_FieldMask) MarshalJSON() ([]byte, error) { 261 return json.Marshal(fieldMask.ToProtoFieldMask()) 262 } 263 264 func (fieldMask *RoleBinding_FieldMask) UnmarshalJSON(data []byte) error { 265 protoFieldMask := &googlefieldmaskpb.FieldMask{} 266 if err := json.Unmarshal(data, protoFieldMask); err != nil { 267 return err 268 } 269 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 270 return err 271 } 272 return nil 273 } 274 275 func (fieldMask *RoleBinding_FieldMask) AppendPath(path RoleBinding_FieldPath) { 276 fieldMask.Paths = append(fieldMask.Paths, path) 277 } 278 279 func (fieldMask *RoleBinding_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 280 fieldMask.Paths = append(fieldMask.Paths, path.(RoleBinding_FieldPath)) 281 } 282 283 func (fieldMask *RoleBinding_FieldMask) GetPaths() []RoleBinding_FieldPath { 284 if fieldMask == nil { 285 return nil 286 } 287 return fieldMask.Paths 288 } 289 290 func (fieldMask *RoleBinding_FieldMask) GetRawPaths() []gotenobject.FieldPath { 291 if fieldMask == nil { 292 return nil 293 } 294 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 295 for _, path := range fieldMask.Paths { 296 rawPaths = append(rawPaths, path) 297 } 298 return rawPaths 299 } 300 301 func (fieldMask *RoleBinding_FieldMask) SetFromCliFlag(raw string) error { 302 path, err := ParseRoleBinding_FieldPath(raw) 303 if err != nil { 304 return err 305 } 306 fieldMask.Paths = append(fieldMask.Paths, path) 307 return nil 308 } 309 310 func (fieldMask *RoleBinding_FieldMask) Set(target, source *RoleBinding) { 311 for _, path := range fieldMask.Paths { 312 val, _ := path.GetSingle(source) 313 // if val is nil, then field does not exist in source, skip 314 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 315 if val != nil { 316 path.WithIValue(val).SetTo(&target) 317 } 318 } 319 } 320 321 func (fieldMask *RoleBinding_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 322 fieldMask.Set(target.(*RoleBinding), source.(*RoleBinding)) 323 } 324 325 func (fieldMask *RoleBinding_FieldMask) Project(source *RoleBinding) *RoleBinding { 326 if source == nil { 327 return nil 328 } 329 if fieldMask == nil { 330 return source 331 } 332 result := &RoleBinding{} 333 metadataMask := &meta.Meta_FieldMask{} 334 wholeMetadataAccepted := false 335 scopeParamsMask := &role.ScopeParam_FieldMask{} 336 wholeScopeParamsAccepted := false 337 executableConditionsMask := &condition.ExecutableCondition_FieldMask{} 338 wholeExecutableConditionsAccepted := false 339 ancestryPathMask := &RoleBinding_Parent_FieldMask{} 340 wholeAncestryPathAccepted := false 341 342 for _, p := range fieldMask.Paths { 343 switch tp := p.(type) { 344 case *RoleBinding_FieldTerminalPath: 345 switch tp.selector { 346 case RoleBinding_FieldPathSelectorName: 347 result.Name = source.Name 348 case RoleBinding_FieldPathSelectorMetadata: 349 result.Metadata = source.Metadata 350 wholeMetadataAccepted = true 351 case RoleBinding_FieldPathSelectorRole: 352 result.Role = source.Role 353 case RoleBinding_FieldPathSelectorMember: 354 result.Member = source.Member 355 case RoleBinding_FieldPathSelectorScopeParams: 356 result.ScopeParams = source.ScopeParams 357 wholeScopeParamsAccepted = true 358 case RoleBinding_FieldPathSelectorExecutableConditions: 359 result.ExecutableConditions = source.ExecutableConditions 360 wholeExecutableConditionsAccepted = true 361 case RoleBinding_FieldPathSelectorOwnedObjects: 362 result.OwnedObjects = source.OwnedObjects 363 case RoleBinding_FieldPathSelectorMemberType: 364 result.MemberType = source.MemberType 365 case RoleBinding_FieldPathSelectorCategory: 366 result.Category = source.Category 367 case RoleBinding_FieldPathSelectorAncestryPath: 368 result.AncestryPath = source.AncestryPath 369 wholeAncestryPathAccepted = true 370 case RoleBinding_FieldPathSelectorParentByOrg: 371 result.ParentByOrg = source.ParentByOrg 372 case RoleBinding_FieldPathSelectorSpecGeneration: 373 result.SpecGeneration = source.SpecGeneration 374 case RoleBinding_FieldPathSelectorHasOwnedObjects: 375 result.HasOwnedObjects = source.HasOwnedObjects 376 case RoleBinding_FieldPathSelectorDisableForChildScopes: 377 result.DisableForChildScopes = source.DisableForChildScopes 378 } 379 case *RoleBinding_FieldSubPath: 380 switch tp.selector { 381 case RoleBinding_FieldPathSelectorMetadata: 382 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 383 case RoleBinding_FieldPathSelectorScopeParams: 384 scopeParamsMask.AppendPath(tp.subPath.(role.ScopeParam_FieldPath)) 385 case RoleBinding_FieldPathSelectorExecutableConditions: 386 executableConditionsMask.AppendPath(tp.subPath.(condition.ExecutableCondition_FieldPath)) 387 case RoleBinding_FieldPathSelectorAncestryPath: 388 ancestryPathMask.AppendPath(tp.subPath.(RoleBindingParent_FieldPath)) 389 } 390 } 391 } 392 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 393 result.Metadata = metadataMask.Project(source.GetMetadata()) 394 } 395 if wholeScopeParamsAccepted == false && len(scopeParamsMask.Paths) > 0 { 396 for _, sourceItem := range source.GetScopeParams() { 397 result.ScopeParams = append(result.ScopeParams, scopeParamsMask.Project(sourceItem)) 398 } 399 } 400 if wholeExecutableConditionsAccepted == false && len(executableConditionsMask.Paths) > 0 { 401 for _, sourceItem := range source.GetExecutableConditions() { 402 result.ExecutableConditions = append(result.ExecutableConditions, executableConditionsMask.Project(sourceItem)) 403 } 404 } 405 if wholeAncestryPathAccepted == false && len(ancestryPathMask.Paths) > 0 { 406 for _, sourceItem := range source.GetAncestryPath() { 407 result.AncestryPath = append(result.AncestryPath, ancestryPathMask.Project(sourceItem)) 408 } 409 } 410 return result 411 } 412 413 func (fieldMask *RoleBinding_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 414 return fieldMask.Project(source.(*RoleBinding)) 415 } 416 417 func (fieldMask *RoleBinding_FieldMask) PathsCount() int { 418 if fieldMask == nil { 419 return 0 420 } 421 return len(fieldMask.Paths) 422 } 423 424 type RoleBinding_Parent_FieldMask struct { 425 Paths []RoleBindingParent_FieldPath 426 } 427 428 func FullRoleBinding_Parent_FieldMask() *RoleBinding_Parent_FieldMask { 429 res := &RoleBinding_Parent_FieldMask{} 430 res.Paths = append(res.Paths, &RoleBindingParent_FieldTerminalPath{selector: RoleBindingParent_FieldPathSelectorParent}) 431 res.Paths = append(res.Paths, &RoleBindingParent_FieldTerminalPath{selector: RoleBindingParent_FieldPathSelectorMember}) 432 return res 433 } 434 435 func (fieldMask *RoleBinding_Parent_FieldMask) String() string { 436 if fieldMask == nil { 437 return "<nil>" 438 } 439 pathsStr := make([]string, 0, len(fieldMask.Paths)) 440 for _, path := range fieldMask.Paths { 441 pathsStr = append(pathsStr, path.String()) 442 } 443 return strings.Join(pathsStr, ", ") 444 } 445 446 func (fieldMask *RoleBinding_Parent_FieldMask) IsFull() bool { 447 if fieldMask == nil { 448 return false 449 } 450 presentSelectors := make([]bool, 2) 451 for _, path := range fieldMask.Paths { 452 if asFinal, ok := path.(*RoleBindingParent_FieldTerminalPath); ok { 453 presentSelectors[int(asFinal.selector)] = true 454 } 455 } 456 for _, flag := range presentSelectors { 457 if !flag { 458 return false 459 } 460 } 461 return true 462 } 463 464 func (fieldMask *RoleBinding_Parent_FieldMask) ProtoReflect() preflect.Message { 465 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 466 return ParseRoleBindingParent_FieldPath(raw) 467 }) 468 } 469 470 func (fieldMask *RoleBinding_Parent_FieldMask) ProtoMessage() {} 471 472 func (fieldMask *RoleBinding_Parent_FieldMask) Reset() { 473 if fieldMask != nil { 474 fieldMask.Paths = nil 475 } 476 } 477 478 func (fieldMask *RoleBinding_Parent_FieldMask) Subtract(other *RoleBinding_Parent_FieldMask) *RoleBinding_Parent_FieldMask { 479 result := &RoleBinding_Parent_FieldMask{} 480 removedSelectors := make([]bool, 2) 481 482 for _, path := range other.GetPaths() { 483 switch tp := path.(type) { 484 case *RoleBindingParent_FieldTerminalPath: 485 removedSelectors[int(tp.selector)] = true 486 } 487 } 488 for _, path := range fieldMask.GetPaths() { 489 if !removedSelectors[int(path.Selector())] { 490 result.Paths = append(result.Paths, path) 491 } 492 } 493 494 if len(result.Paths) == 0 { 495 return nil 496 } 497 return result 498 } 499 500 func (fieldMask *RoleBinding_Parent_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 501 return fieldMask.Subtract(other.(*RoleBinding_Parent_FieldMask)) 502 } 503 504 // FilterInputFields generates copy of field paths with output_only field paths removed 505 func (fieldMask *RoleBinding_Parent_FieldMask) FilterInputFields() *RoleBinding_Parent_FieldMask { 506 result := &RoleBinding_Parent_FieldMask{} 507 result.Paths = append(result.Paths, fieldMask.Paths...) 508 return result 509 } 510 511 // ToFieldMask is used for proto conversions 512 func (fieldMask *RoleBinding_Parent_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 513 protoFieldMask := &googlefieldmaskpb.FieldMask{} 514 for _, path := range fieldMask.Paths { 515 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 516 } 517 return protoFieldMask 518 } 519 520 func (fieldMask *RoleBinding_Parent_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 521 if fieldMask == nil { 522 return status.Error(codes.Internal, "target field mask is nil") 523 } 524 fieldMask.Paths = make([]RoleBindingParent_FieldPath, 0, len(protoFieldMask.Paths)) 525 for _, strPath := range protoFieldMask.Paths { 526 path, err := ParseRoleBindingParent_FieldPath(strPath) 527 if err != nil { 528 return err 529 } 530 fieldMask.Paths = append(fieldMask.Paths, path) 531 } 532 return nil 533 } 534 535 // implement methods required by customType 536 func (fieldMask RoleBinding_Parent_FieldMask) Marshal() ([]byte, error) { 537 protoFieldMask := fieldMask.ToProtoFieldMask() 538 return proto.Marshal(protoFieldMask) 539 } 540 541 func (fieldMask *RoleBinding_Parent_FieldMask) Unmarshal(data []byte) error { 542 protoFieldMask := &googlefieldmaskpb.FieldMask{} 543 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 544 return err 545 } 546 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 547 return err 548 } 549 return nil 550 } 551 552 func (fieldMask *RoleBinding_Parent_FieldMask) Size() int { 553 return proto.Size(fieldMask.ToProtoFieldMask()) 554 } 555 556 func (fieldMask RoleBinding_Parent_FieldMask) MarshalJSON() ([]byte, error) { 557 return json.Marshal(fieldMask.ToProtoFieldMask()) 558 } 559 560 func (fieldMask *RoleBinding_Parent_FieldMask) UnmarshalJSON(data []byte) error { 561 protoFieldMask := &googlefieldmaskpb.FieldMask{} 562 if err := json.Unmarshal(data, protoFieldMask); err != nil { 563 return err 564 } 565 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 566 return err 567 } 568 return nil 569 } 570 571 func (fieldMask *RoleBinding_Parent_FieldMask) AppendPath(path RoleBindingParent_FieldPath) { 572 fieldMask.Paths = append(fieldMask.Paths, path) 573 } 574 575 func (fieldMask *RoleBinding_Parent_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 576 fieldMask.Paths = append(fieldMask.Paths, path.(RoleBindingParent_FieldPath)) 577 } 578 579 func (fieldMask *RoleBinding_Parent_FieldMask) GetPaths() []RoleBindingParent_FieldPath { 580 if fieldMask == nil { 581 return nil 582 } 583 return fieldMask.Paths 584 } 585 586 func (fieldMask *RoleBinding_Parent_FieldMask) GetRawPaths() []gotenobject.FieldPath { 587 if fieldMask == nil { 588 return nil 589 } 590 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 591 for _, path := range fieldMask.Paths { 592 rawPaths = append(rawPaths, path) 593 } 594 return rawPaths 595 } 596 597 func (fieldMask *RoleBinding_Parent_FieldMask) SetFromCliFlag(raw string) error { 598 path, err := ParseRoleBindingParent_FieldPath(raw) 599 if err != nil { 600 return err 601 } 602 fieldMask.Paths = append(fieldMask.Paths, path) 603 return nil 604 } 605 606 func (fieldMask *RoleBinding_Parent_FieldMask) Set(target, source *RoleBinding_Parent) { 607 for _, path := range fieldMask.Paths { 608 val, _ := path.GetSingle(source) 609 // if val is nil, then field does not exist in source, skip 610 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 611 if val != nil { 612 path.WithIValue(val).SetTo(&target) 613 } 614 } 615 } 616 617 func (fieldMask *RoleBinding_Parent_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 618 fieldMask.Set(target.(*RoleBinding_Parent), source.(*RoleBinding_Parent)) 619 } 620 621 func (fieldMask *RoleBinding_Parent_FieldMask) Project(source *RoleBinding_Parent) *RoleBinding_Parent { 622 if source == nil { 623 return nil 624 } 625 if fieldMask == nil { 626 return source 627 } 628 result := &RoleBinding_Parent{} 629 630 for _, p := range fieldMask.Paths { 631 switch tp := p.(type) { 632 case *RoleBindingParent_FieldTerminalPath: 633 switch tp.selector { 634 case RoleBindingParent_FieldPathSelectorParent: 635 result.Parent = source.Parent 636 case RoleBindingParent_FieldPathSelectorMember: 637 result.Member = source.Member 638 } 639 } 640 } 641 return result 642 } 643 644 func (fieldMask *RoleBinding_Parent_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 645 return fieldMask.Project(source.(*RoleBinding_Parent)) 646 } 647 648 func (fieldMask *RoleBinding_Parent_FieldMask) PathsCount() int { 649 if fieldMask == nil { 650 return 0 651 } 652 return len(fieldMask.Paths) 653 }