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