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