github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v3/notification/notification.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/monitoring/proto/v3/notification.proto 3 // DO NOT EDIT!!! 4 5 package notification 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 alert "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alert" 23 alerting_condition "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alerting_condition" 24 alerting_policy "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alerting_policy" 25 common "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/common" 26 notification_channel "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/notification_channel" 27 project "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/project" 28 meta "github.com/cloudwan/goten-sdk/types/meta" 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 _ = &alert.Alert{} 48 _ = &alerting_condition.AlertingCondition{} 49 _ = &alerting_policy.AlertingPolicy{} 50 _ = &common.LabelDescriptor{} 51 _ = ¬ification_channel.NotificationChannel{} 52 _ = &project.Project{} 53 _ = &meta.Meta{} 54 ) 55 56 type Notification_FieldMask struct { 57 Paths []Notification_FieldPath 58 } 59 60 func FullNotification_FieldMask() *Notification_FieldMask { 61 res := &Notification_FieldMask{} 62 res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorName}) 63 res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorMetadata}) 64 res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorAlertingPolicy}) 65 res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorAlerts}) 66 res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorState}) 67 return res 68 } 69 70 func (fieldMask *Notification_FieldMask) String() string { 71 if fieldMask == nil { 72 return "<nil>" 73 } 74 pathsStr := make([]string, 0, len(fieldMask.Paths)) 75 for _, path := range fieldMask.Paths { 76 pathsStr = append(pathsStr, path.String()) 77 } 78 return strings.Join(pathsStr, ", ") 79 } 80 81 func (fieldMask *Notification_FieldMask) IsFull() bool { 82 if fieldMask == nil { 83 return false 84 } 85 presentSelectors := make([]bool, 5) 86 for _, path := range fieldMask.Paths { 87 if asFinal, ok := path.(*Notification_FieldTerminalPath); ok { 88 presentSelectors[int(asFinal.selector)] = true 89 } 90 } 91 for _, flag := range presentSelectors { 92 if !flag { 93 return false 94 } 95 } 96 return true 97 } 98 99 func (fieldMask *Notification_FieldMask) ProtoReflect() preflect.Message { 100 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 101 return ParseNotification_FieldPath(raw) 102 }) 103 } 104 105 func (fieldMask *Notification_FieldMask) ProtoMessage() {} 106 107 func (fieldMask *Notification_FieldMask) Reset() { 108 if fieldMask != nil { 109 fieldMask.Paths = nil 110 } 111 } 112 113 func (fieldMask *Notification_FieldMask) Subtract(other *Notification_FieldMask) *Notification_FieldMask { 114 result := &Notification_FieldMask{} 115 removedSelectors := make([]bool, 5) 116 otherSubMasks := map[Notification_FieldPathSelector]gotenobject.FieldMask{ 117 Notification_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 118 Notification_FieldPathSelectorState: &Notification_State_FieldMask{}, 119 } 120 mySubMasks := map[Notification_FieldPathSelector]gotenobject.FieldMask{ 121 Notification_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 122 Notification_FieldPathSelectorState: &Notification_State_FieldMask{}, 123 } 124 125 for _, path := range other.GetPaths() { 126 switch tp := path.(type) { 127 case *Notification_FieldTerminalPath: 128 removedSelectors[int(tp.selector)] = true 129 case *Notification_FieldSubPath: 130 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 131 } 132 } 133 for _, path := range fieldMask.GetPaths() { 134 if !removedSelectors[int(path.Selector())] { 135 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 136 if tp, ok := path.(*Notification_FieldTerminalPath); ok { 137 switch tp.selector { 138 case Notification_FieldPathSelectorMetadata: 139 mySubMasks[Notification_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 140 case Notification_FieldPathSelectorState: 141 mySubMasks[Notification_FieldPathSelectorState] = FullNotification_State_FieldMask() 142 } 143 } else if tp, ok := path.(*Notification_FieldSubPath); ok { 144 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 145 } 146 } else { 147 result.Paths = append(result.Paths, path) 148 } 149 } 150 } 151 for selector, mySubMask := range mySubMasks { 152 if mySubMask.PathsCount() > 0 { 153 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 154 result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: selector, subPath: allowedPath}) 155 } 156 } 157 } 158 159 if len(result.Paths) == 0 { 160 return nil 161 } 162 return result 163 } 164 165 func (fieldMask *Notification_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 166 return fieldMask.Subtract(other.(*Notification_FieldMask)) 167 } 168 169 // FilterInputFields generates copy of field paths with output_only field paths removed 170 func (fieldMask *Notification_FieldMask) FilterInputFields() *Notification_FieldMask { 171 result := &Notification_FieldMask{} 172 for _, path := range fieldMask.Paths { 173 switch path.Selector() { 174 case Notification_FieldPathSelectorMetadata: 175 if _, ok := path.(*Notification_FieldTerminalPath); ok { 176 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 177 result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: path.Selector(), subPath: subpath}) 178 } 179 } else if sub, ok := path.(*Notification_FieldSubPath); ok { 180 selectedMask := &meta.Meta_FieldMask{ 181 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 182 } 183 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 184 result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: Notification_FieldPathSelectorMetadata, subPath: allowedPath}) 185 } 186 } 187 default: 188 result.Paths = append(result.Paths, path) 189 } 190 } 191 return result 192 } 193 194 // ToFieldMask is used for proto conversions 195 func (fieldMask *Notification_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 196 protoFieldMask := &googlefieldmaskpb.FieldMask{} 197 for _, path := range fieldMask.Paths { 198 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 199 } 200 return protoFieldMask 201 } 202 203 func (fieldMask *Notification_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 204 if fieldMask == nil { 205 return status.Error(codes.Internal, "target field mask is nil") 206 } 207 fieldMask.Paths = make([]Notification_FieldPath, 0, len(protoFieldMask.Paths)) 208 for _, strPath := range protoFieldMask.Paths { 209 path, err := ParseNotification_FieldPath(strPath) 210 if err != nil { 211 return err 212 } 213 fieldMask.Paths = append(fieldMask.Paths, path) 214 } 215 return nil 216 } 217 218 // implement methods required by customType 219 func (fieldMask Notification_FieldMask) Marshal() ([]byte, error) { 220 protoFieldMask := fieldMask.ToProtoFieldMask() 221 return proto.Marshal(protoFieldMask) 222 } 223 224 func (fieldMask *Notification_FieldMask) Unmarshal(data []byte) error { 225 protoFieldMask := &googlefieldmaskpb.FieldMask{} 226 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 227 return err 228 } 229 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 230 return err 231 } 232 return nil 233 } 234 235 func (fieldMask *Notification_FieldMask) Size() int { 236 return proto.Size(fieldMask.ToProtoFieldMask()) 237 } 238 239 func (fieldMask Notification_FieldMask) MarshalJSON() ([]byte, error) { 240 return json.Marshal(fieldMask.ToProtoFieldMask()) 241 } 242 243 func (fieldMask *Notification_FieldMask) UnmarshalJSON(data []byte) error { 244 protoFieldMask := &googlefieldmaskpb.FieldMask{} 245 if err := json.Unmarshal(data, protoFieldMask); err != nil { 246 return err 247 } 248 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 249 return err 250 } 251 return nil 252 } 253 254 func (fieldMask *Notification_FieldMask) AppendPath(path Notification_FieldPath) { 255 fieldMask.Paths = append(fieldMask.Paths, path) 256 } 257 258 func (fieldMask *Notification_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 259 fieldMask.Paths = append(fieldMask.Paths, path.(Notification_FieldPath)) 260 } 261 262 func (fieldMask *Notification_FieldMask) GetPaths() []Notification_FieldPath { 263 if fieldMask == nil { 264 return nil 265 } 266 return fieldMask.Paths 267 } 268 269 func (fieldMask *Notification_FieldMask) GetRawPaths() []gotenobject.FieldPath { 270 if fieldMask == nil { 271 return nil 272 } 273 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 274 for _, path := range fieldMask.Paths { 275 rawPaths = append(rawPaths, path) 276 } 277 return rawPaths 278 } 279 280 func (fieldMask *Notification_FieldMask) SetFromCliFlag(raw string) error { 281 path, err := ParseNotification_FieldPath(raw) 282 if err != nil { 283 return err 284 } 285 fieldMask.Paths = append(fieldMask.Paths, path) 286 return nil 287 } 288 289 func (fieldMask *Notification_FieldMask) Set(target, source *Notification) { 290 for _, path := range fieldMask.Paths { 291 val, _ := path.GetSingle(source) 292 // if val is nil, then field does not exist in source, skip 293 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 294 if val != nil { 295 path.WithIValue(val).SetTo(&target) 296 } 297 } 298 } 299 300 func (fieldMask *Notification_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 301 fieldMask.Set(target.(*Notification), source.(*Notification)) 302 } 303 304 func (fieldMask *Notification_FieldMask) Project(source *Notification) *Notification { 305 if source == nil { 306 return nil 307 } 308 if fieldMask == nil { 309 return source 310 } 311 result := &Notification{} 312 metadataMask := &meta.Meta_FieldMask{} 313 wholeMetadataAccepted := false 314 stateMask := &Notification_State_FieldMask{} 315 wholeStateAccepted := false 316 317 for _, p := range fieldMask.Paths { 318 switch tp := p.(type) { 319 case *Notification_FieldTerminalPath: 320 switch tp.selector { 321 case Notification_FieldPathSelectorName: 322 result.Name = source.Name 323 case Notification_FieldPathSelectorMetadata: 324 result.Metadata = source.Metadata 325 wholeMetadataAccepted = true 326 case Notification_FieldPathSelectorAlertingPolicy: 327 result.AlertingPolicy = source.AlertingPolicy 328 case Notification_FieldPathSelectorAlerts: 329 result.Alerts = source.Alerts 330 case Notification_FieldPathSelectorState: 331 result.State = source.State 332 wholeStateAccepted = true 333 } 334 case *Notification_FieldSubPath: 335 switch tp.selector { 336 case Notification_FieldPathSelectorMetadata: 337 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 338 case Notification_FieldPathSelectorState: 339 stateMask.AppendPath(tp.subPath.(NotificationState_FieldPath)) 340 } 341 } 342 } 343 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 344 result.Metadata = metadataMask.Project(source.GetMetadata()) 345 } 346 if wholeStateAccepted == false && len(stateMask.Paths) > 0 { 347 result.State = stateMask.Project(source.GetState()) 348 } 349 return result 350 } 351 352 func (fieldMask *Notification_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 353 return fieldMask.Project(source.(*Notification)) 354 } 355 356 func (fieldMask *Notification_FieldMask) PathsCount() int { 357 if fieldMask == nil { 358 return 0 359 } 360 return len(fieldMask.Paths) 361 } 362 363 type Notification_State_FieldMask struct { 364 Paths []NotificationState_FieldPath 365 } 366 367 func FullNotification_State_FieldMask() *Notification_State_FieldMask { 368 res := &Notification_State_FieldMask{} 369 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorIsResolved}) 370 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorNotificationState}) 371 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorIncidentNotifyAttemptsDone}) 372 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorResolutionNotifyAttemptsDone}) 373 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorAlertsLifetime}) 374 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorResolutionNotificationState}) 375 res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorLifecycleCompleted}) 376 return res 377 } 378 379 func (fieldMask *Notification_State_FieldMask) String() string { 380 if fieldMask == nil { 381 return "<nil>" 382 } 383 pathsStr := make([]string, 0, len(fieldMask.Paths)) 384 for _, path := range fieldMask.Paths { 385 pathsStr = append(pathsStr, path.String()) 386 } 387 return strings.Join(pathsStr, ", ") 388 } 389 390 func (fieldMask *Notification_State_FieldMask) IsFull() bool { 391 if fieldMask == nil { 392 return false 393 } 394 presentSelectors := make([]bool, 7) 395 for _, path := range fieldMask.Paths { 396 if asFinal, ok := path.(*NotificationState_FieldTerminalPath); ok { 397 presentSelectors[int(asFinal.selector)] = true 398 } 399 } 400 for _, flag := range presentSelectors { 401 if !flag { 402 return false 403 } 404 } 405 return true 406 } 407 408 func (fieldMask *Notification_State_FieldMask) ProtoReflect() preflect.Message { 409 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 410 return ParseNotificationState_FieldPath(raw) 411 }) 412 } 413 414 func (fieldMask *Notification_State_FieldMask) ProtoMessage() {} 415 416 func (fieldMask *Notification_State_FieldMask) Reset() { 417 if fieldMask != nil { 418 fieldMask.Paths = nil 419 } 420 } 421 422 func (fieldMask *Notification_State_FieldMask) Subtract(other *Notification_State_FieldMask) *Notification_State_FieldMask { 423 result := &Notification_State_FieldMask{} 424 removedSelectors := make([]bool, 7) 425 otherSubMasks := map[NotificationState_FieldPathSelector]gotenobject.FieldMask{ 426 NotificationState_FieldPathSelectorNotificationState: &Notification_State_NotificationState_FieldMask{}, 427 NotificationState_FieldPathSelectorAlertsLifetime: &common.TimeRange_FieldMask{}, 428 NotificationState_FieldPathSelectorResolutionNotificationState: &Notification_State_NotificationState_FieldMask{}, 429 } 430 mySubMasks := map[NotificationState_FieldPathSelector]gotenobject.FieldMask{ 431 NotificationState_FieldPathSelectorNotificationState: &Notification_State_NotificationState_FieldMask{}, 432 NotificationState_FieldPathSelectorAlertsLifetime: &common.TimeRange_FieldMask{}, 433 NotificationState_FieldPathSelectorResolutionNotificationState: &Notification_State_NotificationState_FieldMask{}, 434 } 435 436 for _, path := range other.GetPaths() { 437 switch tp := path.(type) { 438 case *NotificationState_FieldTerminalPath: 439 removedSelectors[int(tp.selector)] = true 440 case *NotificationState_FieldSubPath: 441 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 442 } 443 } 444 for _, path := range fieldMask.GetPaths() { 445 if !removedSelectors[int(path.Selector())] { 446 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 447 if tp, ok := path.(*NotificationState_FieldTerminalPath); ok { 448 switch tp.selector { 449 case NotificationState_FieldPathSelectorNotificationState: 450 mySubMasks[NotificationState_FieldPathSelectorNotificationState] = FullNotification_State_NotificationState_FieldMask() 451 case NotificationState_FieldPathSelectorAlertsLifetime: 452 mySubMasks[NotificationState_FieldPathSelectorAlertsLifetime] = common.FullTimeRange_FieldMask() 453 case NotificationState_FieldPathSelectorResolutionNotificationState: 454 mySubMasks[NotificationState_FieldPathSelectorResolutionNotificationState] = FullNotification_State_NotificationState_FieldMask() 455 } 456 } else if tp, ok := path.(*NotificationState_FieldSubPath); ok { 457 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 458 } 459 } else { 460 result.Paths = append(result.Paths, path) 461 } 462 } 463 } 464 for selector, mySubMask := range mySubMasks { 465 if mySubMask.PathsCount() > 0 { 466 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 467 result.Paths = append(result.Paths, &NotificationState_FieldSubPath{selector: selector, subPath: allowedPath}) 468 } 469 } 470 } 471 472 if len(result.Paths) == 0 { 473 return nil 474 } 475 return result 476 } 477 478 func (fieldMask *Notification_State_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 479 return fieldMask.Subtract(other.(*Notification_State_FieldMask)) 480 } 481 482 // FilterInputFields generates copy of field paths with output_only field paths removed 483 func (fieldMask *Notification_State_FieldMask) FilterInputFields() *Notification_State_FieldMask { 484 result := &Notification_State_FieldMask{} 485 result.Paths = append(result.Paths, fieldMask.Paths...) 486 return result 487 } 488 489 // ToFieldMask is used for proto conversions 490 func (fieldMask *Notification_State_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 491 protoFieldMask := &googlefieldmaskpb.FieldMask{} 492 for _, path := range fieldMask.Paths { 493 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 494 } 495 return protoFieldMask 496 } 497 498 func (fieldMask *Notification_State_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 499 if fieldMask == nil { 500 return status.Error(codes.Internal, "target field mask is nil") 501 } 502 fieldMask.Paths = make([]NotificationState_FieldPath, 0, len(protoFieldMask.Paths)) 503 for _, strPath := range protoFieldMask.Paths { 504 path, err := ParseNotificationState_FieldPath(strPath) 505 if err != nil { 506 return err 507 } 508 fieldMask.Paths = append(fieldMask.Paths, path) 509 } 510 return nil 511 } 512 513 // implement methods required by customType 514 func (fieldMask Notification_State_FieldMask) Marshal() ([]byte, error) { 515 protoFieldMask := fieldMask.ToProtoFieldMask() 516 return proto.Marshal(protoFieldMask) 517 } 518 519 func (fieldMask *Notification_State_FieldMask) Unmarshal(data []byte) error { 520 protoFieldMask := &googlefieldmaskpb.FieldMask{} 521 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 522 return err 523 } 524 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 525 return err 526 } 527 return nil 528 } 529 530 func (fieldMask *Notification_State_FieldMask) Size() int { 531 return proto.Size(fieldMask.ToProtoFieldMask()) 532 } 533 534 func (fieldMask Notification_State_FieldMask) MarshalJSON() ([]byte, error) { 535 return json.Marshal(fieldMask.ToProtoFieldMask()) 536 } 537 538 func (fieldMask *Notification_State_FieldMask) UnmarshalJSON(data []byte) error { 539 protoFieldMask := &googlefieldmaskpb.FieldMask{} 540 if err := json.Unmarshal(data, protoFieldMask); err != nil { 541 return err 542 } 543 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 544 return err 545 } 546 return nil 547 } 548 549 func (fieldMask *Notification_State_FieldMask) AppendPath(path NotificationState_FieldPath) { 550 fieldMask.Paths = append(fieldMask.Paths, path) 551 } 552 553 func (fieldMask *Notification_State_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 554 fieldMask.Paths = append(fieldMask.Paths, path.(NotificationState_FieldPath)) 555 } 556 557 func (fieldMask *Notification_State_FieldMask) GetPaths() []NotificationState_FieldPath { 558 if fieldMask == nil { 559 return nil 560 } 561 return fieldMask.Paths 562 } 563 564 func (fieldMask *Notification_State_FieldMask) GetRawPaths() []gotenobject.FieldPath { 565 if fieldMask == nil { 566 return nil 567 } 568 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 569 for _, path := range fieldMask.Paths { 570 rawPaths = append(rawPaths, path) 571 } 572 return rawPaths 573 } 574 575 func (fieldMask *Notification_State_FieldMask) SetFromCliFlag(raw string) error { 576 path, err := ParseNotificationState_FieldPath(raw) 577 if err != nil { 578 return err 579 } 580 fieldMask.Paths = append(fieldMask.Paths, path) 581 return nil 582 } 583 584 func (fieldMask *Notification_State_FieldMask) Set(target, source *Notification_State) { 585 for _, path := range fieldMask.Paths { 586 val, _ := path.GetSingle(source) 587 // if val is nil, then field does not exist in source, skip 588 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 589 if val != nil { 590 path.WithIValue(val).SetTo(&target) 591 } 592 } 593 } 594 595 func (fieldMask *Notification_State_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 596 fieldMask.Set(target.(*Notification_State), source.(*Notification_State)) 597 } 598 599 func (fieldMask *Notification_State_FieldMask) Project(source *Notification_State) *Notification_State { 600 if source == nil { 601 return nil 602 } 603 if fieldMask == nil { 604 return source 605 } 606 result := &Notification_State{} 607 notificationStateMask := &Notification_State_NotificationState_FieldMask{} 608 wholeNotificationStateAccepted := false 609 alertsLifetimeMask := &common.TimeRange_FieldMask{} 610 wholeAlertsLifetimeAccepted := false 611 resolutionNotificationStateMask := &Notification_State_NotificationState_FieldMask{} 612 wholeResolutionNotificationStateAccepted := false 613 614 for _, p := range fieldMask.Paths { 615 switch tp := p.(type) { 616 case *NotificationState_FieldTerminalPath: 617 switch tp.selector { 618 case NotificationState_FieldPathSelectorIsResolved: 619 result.IsResolved = source.IsResolved 620 case NotificationState_FieldPathSelectorNotificationState: 621 result.NotificationState = source.NotificationState 622 wholeNotificationStateAccepted = true 623 case NotificationState_FieldPathSelectorIncidentNotifyAttemptsDone: 624 result.IncidentNotifyAttemptsDone = source.IncidentNotifyAttemptsDone 625 case NotificationState_FieldPathSelectorResolutionNotifyAttemptsDone: 626 result.ResolutionNotifyAttemptsDone = source.ResolutionNotifyAttemptsDone 627 case NotificationState_FieldPathSelectorAlertsLifetime: 628 result.AlertsLifetime = source.AlertsLifetime 629 wholeAlertsLifetimeAccepted = true 630 case NotificationState_FieldPathSelectorResolutionNotificationState: 631 result.ResolutionNotificationState = source.ResolutionNotificationState 632 wholeResolutionNotificationStateAccepted = true 633 case NotificationState_FieldPathSelectorLifecycleCompleted: 634 result.LifecycleCompleted = source.LifecycleCompleted 635 } 636 case *NotificationState_FieldSubPath: 637 switch tp.selector { 638 case NotificationState_FieldPathSelectorNotificationState: 639 notificationStateMask.AppendPath(tp.subPath.(NotificationStateNotificationState_FieldPath)) 640 case NotificationState_FieldPathSelectorAlertsLifetime: 641 alertsLifetimeMask.AppendPath(tp.subPath.(common.TimeRange_FieldPath)) 642 case NotificationState_FieldPathSelectorResolutionNotificationState: 643 resolutionNotificationStateMask.AppendPath(tp.subPath.(NotificationStateNotificationState_FieldPath)) 644 } 645 } 646 } 647 if wholeNotificationStateAccepted == false && len(notificationStateMask.Paths) > 0 { 648 for _, sourceItem := range source.GetNotificationState() { 649 result.NotificationState = append(result.NotificationState, notificationStateMask.Project(sourceItem)) 650 } 651 } 652 if wholeAlertsLifetimeAccepted == false && len(alertsLifetimeMask.Paths) > 0 { 653 result.AlertsLifetime = alertsLifetimeMask.Project(source.GetAlertsLifetime()) 654 } 655 if wholeResolutionNotificationStateAccepted == false && len(resolutionNotificationStateMask.Paths) > 0 { 656 for _, sourceItem := range source.GetResolutionNotificationState() { 657 result.ResolutionNotificationState = append(result.ResolutionNotificationState, resolutionNotificationStateMask.Project(sourceItem)) 658 } 659 } 660 return result 661 } 662 663 func (fieldMask *Notification_State_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 664 return fieldMask.Project(source.(*Notification_State)) 665 } 666 667 func (fieldMask *Notification_State_FieldMask) PathsCount() int { 668 if fieldMask == nil { 669 return 0 670 } 671 return len(fieldMask.Paths) 672 } 673 674 type Notification_State_NotificationState_FieldMask struct { 675 Paths []NotificationStateNotificationState_FieldPath 676 } 677 678 func FullNotification_State_NotificationState_FieldMask() *Notification_State_NotificationState_FieldMask { 679 res := &Notification_State_NotificationState_FieldMask{} 680 res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorNotificationChannel}) 681 res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorStatus}) 682 res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorError}) 683 res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorProviderData}) 684 res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorNotifyAttempts}) 685 return res 686 } 687 688 func (fieldMask *Notification_State_NotificationState_FieldMask) String() string { 689 if fieldMask == nil { 690 return "<nil>" 691 } 692 pathsStr := make([]string, 0, len(fieldMask.Paths)) 693 for _, path := range fieldMask.Paths { 694 pathsStr = append(pathsStr, path.String()) 695 } 696 return strings.Join(pathsStr, ", ") 697 } 698 699 func (fieldMask *Notification_State_NotificationState_FieldMask) IsFull() bool { 700 if fieldMask == nil { 701 return false 702 } 703 presentSelectors := make([]bool, 5) 704 for _, path := range fieldMask.Paths { 705 if asFinal, ok := path.(*NotificationStateNotificationState_FieldTerminalPath); ok { 706 presentSelectors[int(asFinal.selector)] = true 707 } 708 } 709 for _, flag := range presentSelectors { 710 if !flag { 711 return false 712 } 713 } 714 return true 715 } 716 717 func (fieldMask *Notification_State_NotificationState_FieldMask) ProtoReflect() preflect.Message { 718 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 719 return ParseNotificationStateNotificationState_FieldPath(raw) 720 }) 721 } 722 723 func (fieldMask *Notification_State_NotificationState_FieldMask) ProtoMessage() {} 724 725 func (fieldMask *Notification_State_NotificationState_FieldMask) Reset() { 726 if fieldMask != nil { 727 fieldMask.Paths = nil 728 } 729 } 730 731 func (fieldMask *Notification_State_NotificationState_FieldMask) Subtract(other *Notification_State_NotificationState_FieldMask) *Notification_State_NotificationState_FieldMask { 732 result := &Notification_State_NotificationState_FieldMask{} 733 removedSelectors := make([]bool, 5) 734 otherSubMasks := map[NotificationStateNotificationState_FieldPathSelector]gotenobject.FieldMask{ 735 NotificationStateNotificationState_FieldPathSelectorProviderData: &Notification_State_NotificationState_ProviderData_FieldMask{}, 736 } 737 mySubMasks := map[NotificationStateNotificationState_FieldPathSelector]gotenobject.FieldMask{ 738 NotificationStateNotificationState_FieldPathSelectorProviderData: &Notification_State_NotificationState_ProviderData_FieldMask{}, 739 } 740 741 for _, path := range other.GetPaths() { 742 switch tp := path.(type) { 743 case *NotificationStateNotificationState_FieldTerminalPath: 744 removedSelectors[int(tp.selector)] = true 745 case *NotificationStateNotificationState_FieldSubPath: 746 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 747 } 748 } 749 for _, path := range fieldMask.GetPaths() { 750 if !removedSelectors[int(path.Selector())] { 751 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 752 if tp, ok := path.(*NotificationStateNotificationState_FieldTerminalPath); ok { 753 switch tp.selector { 754 case NotificationStateNotificationState_FieldPathSelectorProviderData: 755 mySubMasks[NotificationStateNotificationState_FieldPathSelectorProviderData] = FullNotification_State_NotificationState_ProviderData_FieldMask() 756 } 757 } else if tp, ok := path.(*NotificationStateNotificationState_FieldSubPath); ok { 758 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 759 } 760 } else { 761 result.Paths = append(result.Paths, path) 762 } 763 } 764 } 765 for selector, mySubMask := range mySubMasks { 766 if mySubMask.PathsCount() > 0 { 767 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 768 result.Paths = append(result.Paths, &NotificationStateNotificationState_FieldSubPath{selector: selector, subPath: allowedPath}) 769 } 770 } 771 } 772 773 if len(result.Paths) == 0 { 774 return nil 775 } 776 return result 777 } 778 779 func (fieldMask *Notification_State_NotificationState_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 780 return fieldMask.Subtract(other.(*Notification_State_NotificationState_FieldMask)) 781 } 782 783 // FilterInputFields generates copy of field paths with output_only field paths removed 784 func (fieldMask *Notification_State_NotificationState_FieldMask) FilterInputFields() *Notification_State_NotificationState_FieldMask { 785 result := &Notification_State_NotificationState_FieldMask{} 786 result.Paths = append(result.Paths, fieldMask.Paths...) 787 return result 788 } 789 790 // ToFieldMask is used for proto conversions 791 func (fieldMask *Notification_State_NotificationState_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 792 protoFieldMask := &googlefieldmaskpb.FieldMask{} 793 for _, path := range fieldMask.Paths { 794 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 795 } 796 return protoFieldMask 797 } 798 799 func (fieldMask *Notification_State_NotificationState_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 800 if fieldMask == nil { 801 return status.Error(codes.Internal, "target field mask is nil") 802 } 803 fieldMask.Paths = make([]NotificationStateNotificationState_FieldPath, 0, len(protoFieldMask.Paths)) 804 for _, strPath := range protoFieldMask.Paths { 805 path, err := ParseNotificationStateNotificationState_FieldPath(strPath) 806 if err != nil { 807 return err 808 } 809 fieldMask.Paths = append(fieldMask.Paths, path) 810 } 811 return nil 812 } 813 814 // implement methods required by customType 815 func (fieldMask Notification_State_NotificationState_FieldMask) Marshal() ([]byte, error) { 816 protoFieldMask := fieldMask.ToProtoFieldMask() 817 return proto.Marshal(protoFieldMask) 818 } 819 820 func (fieldMask *Notification_State_NotificationState_FieldMask) Unmarshal(data []byte) error { 821 protoFieldMask := &googlefieldmaskpb.FieldMask{} 822 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 823 return err 824 } 825 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 826 return err 827 } 828 return nil 829 } 830 831 func (fieldMask *Notification_State_NotificationState_FieldMask) Size() int { 832 return proto.Size(fieldMask.ToProtoFieldMask()) 833 } 834 835 func (fieldMask Notification_State_NotificationState_FieldMask) MarshalJSON() ([]byte, error) { 836 return json.Marshal(fieldMask.ToProtoFieldMask()) 837 } 838 839 func (fieldMask *Notification_State_NotificationState_FieldMask) UnmarshalJSON(data []byte) error { 840 protoFieldMask := &googlefieldmaskpb.FieldMask{} 841 if err := json.Unmarshal(data, protoFieldMask); err != nil { 842 return err 843 } 844 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 845 return err 846 } 847 return nil 848 } 849 850 func (fieldMask *Notification_State_NotificationState_FieldMask) AppendPath(path NotificationStateNotificationState_FieldPath) { 851 fieldMask.Paths = append(fieldMask.Paths, path) 852 } 853 854 func (fieldMask *Notification_State_NotificationState_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 855 fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationState_FieldPath)) 856 } 857 858 func (fieldMask *Notification_State_NotificationState_FieldMask) GetPaths() []NotificationStateNotificationState_FieldPath { 859 if fieldMask == nil { 860 return nil 861 } 862 return fieldMask.Paths 863 } 864 865 func (fieldMask *Notification_State_NotificationState_FieldMask) GetRawPaths() []gotenobject.FieldPath { 866 if fieldMask == nil { 867 return nil 868 } 869 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 870 for _, path := range fieldMask.Paths { 871 rawPaths = append(rawPaths, path) 872 } 873 return rawPaths 874 } 875 876 func (fieldMask *Notification_State_NotificationState_FieldMask) SetFromCliFlag(raw string) error { 877 path, err := ParseNotificationStateNotificationState_FieldPath(raw) 878 if err != nil { 879 return err 880 } 881 fieldMask.Paths = append(fieldMask.Paths, path) 882 return nil 883 } 884 885 func (fieldMask *Notification_State_NotificationState_FieldMask) Set(target, source *Notification_State_NotificationState) { 886 for _, path := range fieldMask.Paths { 887 val, _ := path.GetSingle(source) 888 // if val is nil, then field does not exist in source, skip 889 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 890 if val != nil { 891 path.WithIValue(val).SetTo(&target) 892 } 893 } 894 } 895 896 func (fieldMask *Notification_State_NotificationState_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 897 fieldMask.Set(target.(*Notification_State_NotificationState), source.(*Notification_State_NotificationState)) 898 } 899 900 func (fieldMask *Notification_State_NotificationState_FieldMask) Project(source *Notification_State_NotificationState) *Notification_State_NotificationState { 901 if source == nil { 902 return nil 903 } 904 if fieldMask == nil { 905 return source 906 } 907 result := &Notification_State_NotificationState{} 908 providerDataMask := &Notification_State_NotificationState_ProviderData_FieldMask{} 909 wholeProviderDataAccepted := false 910 911 for _, p := range fieldMask.Paths { 912 switch tp := p.(type) { 913 case *NotificationStateNotificationState_FieldTerminalPath: 914 switch tp.selector { 915 case NotificationStateNotificationState_FieldPathSelectorNotificationChannel: 916 result.NotificationChannel = source.NotificationChannel 917 case NotificationStateNotificationState_FieldPathSelectorStatus: 918 result.Status = source.Status 919 case NotificationStateNotificationState_FieldPathSelectorError: 920 result.Error = source.Error 921 case NotificationStateNotificationState_FieldPathSelectorProviderData: 922 result.ProviderData = source.ProviderData 923 wholeProviderDataAccepted = true 924 case NotificationStateNotificationState_FieldPathSelectorNotifyAttempts: 925 result.NotifyAttempts = source.NotifyAttempts 926 } 927 case *NotificationStateNotificationState_FieldSubPath: 928 switch tp.selector { 929 case NotificationStateNotificationState_FieldPathSelectorProviderData: 930 providerDataMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderData_FieldPath)) 931 } 932 } 933 } 934 if wholeProviderDataAccepted == false && len(providerDataMask.Paths) > 0 { 935 result.ProviderData = providerDataMask.Project(source.GetProviderData()) 936 } 937 return result 938 } 939 940 func (fieldMask *Notification_State_NotificationState_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 941 return fieldMask.Project(source.(*Notification_State_NotificationState)) 942 } 943 944 func (fieldMask *Notification_State_NotificationState_FieldMask) PathsCount() int { 945 if fieldMask == nil { 946 return 0 947 } 948 return len(fieldMask.Paths) 949 } 950 951 type Notification_State_NotificationState_ProviderData_FieldMask struct { 952 Paths []NotificationStateNotificationStateProviderData_FieldPath 953 } 954 955 func FullNotification_State_NotificationState_ProviderData_FieldMask() *Notification_State_NotificationState_ProviderData_FieldMask { 956 res := &Notification_State_NotificationState_ProviderData_FieldMask{} 957 res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderData_FieldTerminalPath{selector: NotificationStateNotificationStateProviderData_FieldPathSelectorSlack}) 958 res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderData_FieldTerminalPath{selector: NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty}) 959 return res 960 } 961 962 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) String() string { 963 if fieldMask == nil { 964 return "<nil>" 965 } 966 pathsStr := make([]string, 0, len(fieldMask.Paths)) 967 for _, path := range fieldMask.Paths { 968 pathsStr = append(pathsStr, path.String()) 969 } 970 return strings.Join(pathsStr, ", ") 971 } 972 973 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) IsFull() bool { 974 if fieldMask == nil { 975 return false 976 } 977 presentSelectors := make([]bool, 2) 978 for _, path := range fieldMask.Paths { 979 if asFinal, ok := path.(*NotificationStateNotificationStateProviderData_FieldTerminalPath); ok { 980 presentSelectors[int(asFinal.selector)] = true 981 } 982 } 983 for _, flag := range presentSelectors { 984 if !flag { 985 return false 986 } 987 } 988 return true 989 } 990 991 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProtoReflect() preflect.Message { 992 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 993 return ParseNotificationStateNotificationStateProviderData_FieldPath(raw) 994 }) 995 } 996 997 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProtoMessage() {} 998 999 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Reset() { 1000 if fieldMask != nil { 1001 fieldMask.Paths = nil 1002 } 1003 } 1004 1005 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_FieldMask) *Notification_State_NotificationState_ProviderData_FieldMask { 1006 result := &Notification_State_NotificationState_ProviderData_FieldMask{} 1007 removedSelectors := make([]bool, 2) 1008 otherSubMasks := map[NotificationStateNotificationStateProviderData_FieldPathSelector]gotenobject.FieldMask{ 1009 NotificationStateNotificationStateProviderData_FieldPathSelectorSlack: &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}, 1010 NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}, 1011 } 1012 mySubMasks := map[NotificationStateNotificationStateProviderData_FieldPathSelector]gotenobject.FieldMask{ 1013 NotificationStateNotificationStateProviderData_FieldPathSelectorSlack: &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}, 1014 NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}, 1015 } 1016 1017 for _, path := range other.GetPaths() { 1018 switch tp := path.(type) { 1019 case *NotificationStateNotificationStateProviderData_FieldTerminalPath: 1020 removedSelectors[int(tp.selector)] = true 1021 case *NotificationStateNotificationStateProviderData_FieldSubPath: 1022 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 1023 } 1024 } 1025 for _, path := range fieldMask.GetPaths() { 1026 if !removedSelectors[int(path.Selector())] { 1027 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 1028 if tp, ok := path.(*NotificationStateNotificationStateProviderData_FieldTerminalPath); ok { 1029 switch tp.selector { 1030 case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack: 1031 mySubMasks[NotificationStateNotificationStateProviderData_FieldPathSelectorSlack] = FullNotification_State_NotificationState_ProviderData_Slack_FieldMask() 1032 case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: 1033 mySubMasks[NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty] = FullNotification_State_NotificationState_ProviderData_PagerDuty_FieldMask() 1034 } 1035 } else if tp, ok := path.(*NotificationStateNotificationStateProviderData_FieldSubPath); ok { 1036 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 1037 } 1038 } else { 1039 result.Paths = append(result.Paths, path) 1040 } 1041 } 1042 } 1043 for selector, mySubMask := range mySubMasks { 1044 if mySubMask.PathsCount() > 0 { 1045 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 1046 result.Paths = append(result.Paths, &NotificationStateNotificationStateProviderData_FieldSubPath{selector: selector, subPath: allowedPath}) 1047 } 1048 } 1049 } 1050 1051 if len(result.Paths) == 0 { 1052 return nil 1053 } 1054 return result 1055 } 1056 1057 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1058 return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_FieldMask)) 1059 } 1060 1061 // FilterInputFields generates copy of field paths with output_only field paths removed 1062 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_FieldMask { 1063 result := &Notification_State_NotificationState_ProviderData_FieldMask{} 1064 result.Paths = append(result.Paths, fieldMask.Paths...) 1065 return result 1066 } 1067 1068 // ToFieldMask is used for proto conversions 1069 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1070 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1071 for _, path := range fieldMask.Paths { 1072 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1073 } 1074 return protoFieldMask 1075 } 1076 1077 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1078 if fieldMask == nil { 1079 return status.Error(codes.Internal, "target field mask is nil") 1080 } 1081 fieldMask.Paths = make([]NotificationStateNotificationStateProviderData_FieldPath, 0, len(protoFieldMask.Paths)) 1082 for _, strPath := range protoFieldMask.Paths { 1083 path, err := ParseNotificationStateNotificationStateProviderData_FieldPath(strPath) 1084 if err != nil { 1085 return err 1086 } 1087 fieldMask.Paths = append(fieldMask.Paths, path) 1088 } 1089 return nil 1090 } 1091 1092 // implement methods required by customType 1093 func (fieldMask Notification_State_NotificationState_ProviderData_FieldMask) Marshal() ([]byte, error) { 1094 protoFieldMask := fieldMask.ToProtoFieldMask() 1095 return proto.Marshal(protoFieldMask) 1096 } 1097 1098 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Unmarshal(data []byte) error { 1099 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1100 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1101 return err 1102 } 1103 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1104 return err 1105 } 1106 return nil 1107 } 1108 1109 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Size() int { 1110 return proto.Size(fieldMask.ToProtoFieldMask()) 1111 } 1112 1113 func (fieldMask Notification_State_NotificationState_ProviderData_FieldMask) MarshalJSON() ([]byte, error) { 1114 return json.Marshal(fieldMask.ToProtoFieldMask()) 1115 } 1116 1117 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) UnmarshalJSON(data []byte) error { 1118 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1119 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1120 return err 1121 } 1122 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1123 return err 1124 } 1125 return nil 1126 } 1127 1128 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) AppendPath(path NotificationStateNotificationStateProviderData_FieldPath) { 1129 fieldMask.Paths = append(fieldMask.Paths, path) 1130 } 1131 1132 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1133 fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderData_FieldPath)) 1134 } 1135 1136 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) GetPaths() []NotificationStateNotificationStateProviderData_FieldPath { 1137 if fieldMask == nil { 1138 return nil 1139 } 1140 return fieldMask.Paths 1141 } 1142 1143 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1144 if fieldMask == nil { 1145 return nil 1146 } 1147 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1148 for _, path := range fieldMask.Paths { 1149 rawPaths = append(rawPaths, path) 1150 } 1151 return rawPaths 1152 } 1153 1154 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SetFromCliFlag(raw string) error { 1155 path, err := ParseNotificationStateNotificationStateProviderData_FieldPath(raw) 1156 if err != nil { 1157 return err 1158 } 1159 fieldMask.Paths = append(fieldMask.Paths, path) 1160 return nil 1161 } 1162 1163 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData) { 1164 for _, path := range fieldMask.Paths { 1165 val, _ := path.GetSingle(source) 1166 // if val is nil, then field does not exist in source, skip 1167 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1168 if val != nil { 1169 path.WithIValue(val).SetTo(&target) 1170 } 1171 } 1172 } 1173 1174 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1175 fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData), source.(*Notification_State_NotificationState_ProviderData)) 1176 } 1177 1178 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Project(source *Notification_State_NotificationState_ProviderData) *Notification_State_NotificationState_ProviderData { 1179 if source == nil { 1180 return nil 1181 } 1182 if fieldMask == nil { 1183 return source 1184 } 1185 result := &Notification_State_NotificationState_ProviderData{} 1186 slackMask := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{} 1187 wholeSlackAccepted := false 1188 pagerDutyMask := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{} 1189 wholePagerDutyAccepted := false 1190 1191 for _, p := range fieldMask.Paths { 1192 switch tp := p.(type) { 1193 case *NotificationStateNotificationStateProviderData_FieldTerminalPath: 1194 switch tp.selector { 1195 case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack: 1196 result.Slack = source.Slack 1197 wholeSlackAccepted = true 1198 case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: 1199 result.PagerDuty = source.PagerDuty 1200 wholePagerDutyAccepted = true 1201 } 1202 case *NotificationStateNotificationStateProviderData_FieldSubPath: 1203 switch tp.selector { 1204 case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack: 1205 slackMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderDataSlack_FieldPath)) 1206 case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: 1207 pagerDutyMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderDataPagerDuty_FieldPath)) 1208 } 1209 } 1210 } 1211 if wholeSlackAccepted == false && len(slackMask.Paths) > 0 { 1212 result.Slack = slackMask.Project(source.GetSlack()) 1213 } 1214 if wholePagerDutyAccepted == false && len(pagerDutyMask.Paths) > 0 { 1215 result.PagerDuty = pagerDutyMask.Project(source.GetPagerDuty()) 1216 } 1217 return result 1218 } 1219 1220 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1221 return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData)) 1222 } 1223 1224 func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) PathsCount() int { 1225 if fieldMask == nil { 1226 return 0 1227 } 1228 return len(fieldMask.Paths) 1229 } 1230 1231 type Notification_State_NotificationState_ProviderData_Slack_FieldMask struct { 1232 Paths []NotificationStateNotificationStateProviderDataSlack_FieldPath 1233 } 1234 1235 func FullNotification_State_NotificationState_ProviderData_Slack_FieldMask() *Notification_State_NotificationState_ProviderData_Slack_FieldMask { 1236 res := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{} 1237 res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath{selector: NotificationStateNotificationStateProviderDataSlack_FieldPathSelectorTs}) 1238 return res 1239 } 1240 1241 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) String() string { 1242 if fieldMask == nil { 1243 return "<nil>" 1244 } 1245 pathsStr := make([]string, 0, len(fieldMask.Paths)) 1246 for _, path := range fieldMask.Paths { 1247 pathsStr = append(pathsStr, path.String()) 1248 } 1249 return strings.Join(pathsStr, ", ") 1250 } 1251 1252 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) IsFull() bool { 1253 if fieldMask == nil { 1254 return false 1255 } 1256 presentSelectors := make([]bool, 1) 1257 for _, path := range fieldMask.Paths { 1258 if asFinal, ok := path.(*NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath); ok { 1259 presentSelectors[int(asFinal.selector)] = true 1260 } 1261 } 1262 for _, flag := range presentSelectors { 1263 if !flag { 1264 return false 1265 } 1266 } 1267 return true 1268 } 1269 1270 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProtoReflect() preflect.Message { 1271 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 1272 return ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(raw) 1273 }) 1274 } 1275 1276 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProtoMessage() {} 1277 1278 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Reset() { 1279 if fieldMask != nil { 1280 fieldMask.Paths = nil 1281 } 1282 } 1283 1284 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_Slack_FieldMask) *Notification_State_NotificationState_ProviderData_Slack_FieldMask { 1285 result := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{} 1286 removedSelectors := make([]bool, 1) 1287 1288 for _, path := range other.GetPaths() { 1289 switch tp := path.(type) { 1290 case *NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath: 1291 removedSelectors[int(tp.selector)] = true 1292 } 1293 } 1294 for _, path := range fieldMask.GetPaths() { 1295 if !removedSelectors[int(path.Selector())] { 1296 result.Paths = append(result.Paths, path) 1297 } 1298 } 1299 1300 if len(result.Paths) == 0 { 1301 return nil 1302 } 1303 return result 1304 } 1305 1306 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1307 return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_Slack_FieldMask)) 1308 } 1309 1310 // FilterInputFields generates copy of field paths with output_only field paths removed 1311 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_Slack_FieldMask { 1312 result := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{} 1313 result.Paths = append(result.Paths, fieldMask.Paths...) 1314 return result 1315 } 1316 1317 // ToFieldMask is used for proto conversions 1318 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1319 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1320 for _, path := range fieldMask.Paths { 1321 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1322 } 1323 return protoFieldMask 1324 } 1325 1326 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1327 if fieldMask == nil { 1328 return status.Error(codes.Internal, "target field mask is nil") 1329 } 1330 fieldMask.Paths = make([]NotificationStateNotificationStateProviderDataSlack_FieldPath, 0, len(protoFieldMask.Paths)) 1331 for _, strPath := range protoFieldMask.Paths { 1332 path, err := ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(strPath) 1333 if err != nil { 1334 return err 1335 } 1336 fieldMask.Paths = append(fieldMask.Paths, path) 1337 } 1338 return nil 1339 } 1340 1341 // implement methods required by customType 1342 func (fieldMask Notification_State_NotificationState_ProviderData_Slack_FieldMask) Marshal() ([]byte, error) { 1343 protoFieldMask := fieldMask.ToProtoFieldMask() 1344 return proto.Marshal(protoFieldMask) 1345 } 1346 1347 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Unmarshal(data []byte) error { 1348 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1349 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1350 return err 1351 } 1352 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1353 return err 1354 } 1355 return nil 1356 } 1357 1358 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Size() int { 1359 return proto.Size(fieldMask.ToProtoFieldMask()) 1360 } 1361 1362 func (fieldMask Notification_State_NotificationState_ProviderData_Slack_FieldMask) MarshalJSON() ([]byte, error) { 1363 return json.Marshal(fieldMask.ToProtoFieldMask()) 1364 } 1365 1366 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) UnmarshalJSON(data []byte) error { 1367 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1368 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1369 return err 1370 } 1371 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1372 return err 1373 } 1374 return nil 1375 } 1376 1377 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) AppendPath(path NotificationStateNotificationStateProviderDataSlack_FieldPath) { 1378 fieldMask.Paths = append(fieldMask.Paths, path) 1379 } 1380 1381 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1382 fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderDataSlack_FieldPath)) 1383 } 1384 1385 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) GetPaths() []NotificationStateNotificationStateProviderDataSlack_FieldPath { 1386 if fieldMask == nil { 1387 return nil 1388 } 1389 return fieldMask.Paths 1390 } 1391 1392 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1393 if fieldMask == nil { 1394 return nil 1395 } 1396 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1397 for _, path := range fieldMask.Paths { 1398 rawPaths = append(rawPaths, path) 1399 } 1400 return rawPaths 1401 } 1402 1403 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SetFromCliFlag(raw string) error { 1404 path, err := ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(raw) 1405 if err != nil { 1406 return err 1407 } 1408 fieldMask.Paths = append(fieldMask.Paths, path) 1409 return nil 1410 } 1411 1412 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData_Slack) { 1413 for _, path := range fieldMask.Paths { 1414 val, _ := path.GetSingle(source) 1415 // if val is nil, then field does not exist in source, skip 1416 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1417 if val != nil { 1418 path.WithIValue(val).SetTo(&target) 1419 } 1420 } 1421 } 1422 1423 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1424 fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData_Slack), source.(*Notification_State_NotificationState_ProviderData_Slack)) 1425 } 1426 1427 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Project(source *Notification_State_NotificationState_ProviderData_Slack) *Notification_State_NotificationState_ProviderData_Slack { 1428 if source == nil { 1429 return nil 1430 } 1431 if fieldMask == nil { 1432 return source 1433 } 1434 result := &Notification_State_NotificationState_ProviderData_Slack{} 1435 1436 for _, p := range fieldMask.Paths { 1437 switch tp := p.(type) { 1438 case *NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath: 1439 switch tp.selector { 1440 case NotificationStateNotificationStateProviderDataSlack_FieldPathSelectorTs: 1441 result.Ts = source.Ts 1442 } 1443 } 1444 } 1445 return result 1446 } 1447 1448 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1449 return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData_Slack)) 1450 } 1451 1452 func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) PathsCount() int { 1453 if fieldMask == nil { 1454 return 0 1455 } 1456 return len(fieldMask.Paths) 1457 } 1458 1459 type Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask struct { 1460 Paths []NotificationStateNotificationStateProviderDataPagerDuty_FieldPath 1461 } 1462 1463 func FullNotification_State_NotificationState_ProviderData_PagerDuty_FieldMask() *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask { 1464 res := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{} 1465 res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath{selector: NotificationStateNotificationStateProviderDataPagerDuty_FieldPathSelectorIncidentKey}) 1466 return res 1467 } 1468 1469 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) String() string { 1470 if fieldMask == nil { 1471 return "<nil>" 1472 } 1473 pathsStr := make([]string, 0, len(fieldMask.Paths)) 1474 for _, path := range fieldMask.Paths { 1475 pathsStr = append(pathsStr, path.String()) 1476 } 1477 return strings.Join(pathsStr, ", ") 1478 } 1479 1480 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) IsFull() bool { 1481 if fieldMask == nil { 1482 return false 1483 } 1484 presentSelectors := make([]bool, 1) 1485 for _, path := range fieldMask.Paths { 1486 if asFinal, ok := path.(*NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath); ok { 1487 presentSelectors[int(asFinal.selector)] = true 1488 } 1489 } 1490 for _, flag := range presentSelectors { 1491 if !flag { 1492 return false 1493 } 1494 } 1495 return true 1496 } 1497 1498 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProtoReflect() preflect.Message { 1499 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 1500 return ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(raw) 1501 }) 1502 } 1503 1504 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProtoMessage() { 1505 } 1506 1507 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Reset() { 1508 if fieldMask != nil { 1509 fieldMask.Paths = nil 1510 } 1511 } 1512 1513 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask { 1514 result := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{} 1515 removedSelectors := make([]bool, 1) 1516 1517 for _, path := range other.GetPaths() { 1518 switch tp := path.(type) { 1519 case *NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath: 1520 removedSelectors[int(tp.selector)] = true 1521 } 1522 } 1523 for _, path := range fieldMask.GetPaths() { 1524 if !removedSelectors[int(path.Selector())] { 1525 result.Paths = append(result.Paths, path) 1526 } 1527 } 1528 1529 if len(result.Paths) == 0 { 1530 return nil 1531 } 1532 return result 1533 } 1534 1535 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1536 return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask)) 1537 } 1538 1539 // FilterInputFields generates copy of field paths with output_only field paths removed 1540 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask { 1541 result := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{} 1542 result.Paths = append(result.Paths, fieldMask.Paths...) 1543 return result 1544 } 1545 1546 // ToFieldMask is used for proto conversions 1547 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1548 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1549 for _, path := range fieldMask.Paths { 1550 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1551 } 1552 return protoFieldMask 1553 } 1554 1555 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1556 if fieldMask == nil { 1557 return status.Error(codes.Internal, "target field mask is nil") 1558 } 1559 fieldMask.Paths = make([]NotificationStateNotificationStateProviderDataPagerDuty_FieldPath, 0, len(protoFieldMask.Paths)) 1560 for _, strPath := range protoFieldMask.Paths { 1561 path, err := ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(strPath) 1562 if err != nil { 1563 return err 1564 } 1565 fieldMask.Paths = append(fieldMask.Paths, path) 1566 } 1567 return nil 1568 } 1569 1570 // implement methods required by customType 1571 func (fieldMask Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Marshal() ([]byte, error) { 1572 protoFieldMask := fieldMask.ToProtoFieldMask() 1573 return proto.Marshal(protoFieldMask) 1574 } 1575 1576 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Unmarshal(data []byte) error { 1577 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1578 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1579 return err 1580 } 1581 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1582 return err 1583 } 1584 return nil 1585 } 1586 1587 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Size() int { 1588 return proto.Size(fieldMask.ToProtoFieldMask()) 1589 } 1590 1591 func (fieldMask Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) MarshalJSON() ([]byte, error) { 1592 return json.Marshal(fieldMask.ToProtoFieldMask()) 1593 } 1594 1595 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) UnmarshalJSON(data []byte) error { 1596 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1597 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1598 return err 1599 } 1600 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1601 return err 1602 } 1603 return nil 1604 } 1605 1606 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) AppendPath(path NotificationStateNotificationStateProviderDataPagerDuty_FieldPath) { 1607 fieldMask.Paths = append(fieldMask.Paths, path) 1608 } 1609 1610 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1611 fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderDataPagerDuty_FieldPath)) 1612 } 1613 1614 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) GetPaths() []NotificationStateNotificationStateProviderDataPagerDuty_FieldPath { 1615 if fieldMask == nil { 1616 return nil 1617 } 1618 return fieldMask.Paths 1619 } 1620 1621 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1622 if fieldMask == nil { 1623 return nil 1624 } 1625 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1626 for _, path := range fieldMask.Paths { 1627 rawPaths = append(rawPaths, path) 1628 } 1629 return rawPaths 1630 } 1631 1632 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SetFromCliFlag(raw string) error { 1633 path, err := ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(raw) 1634 if err != nil { 1635 return err 1636 } 1637 fieldMask.Paths = append(fieldMask.Paths, path) 1638 return nil 1639 } 1640 1641 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData_PagerDuty) { 1642 for _, path := range fieldMask.Paths { 1643 val, _ := path.GetSingle(source) 1644 // if val is nil, then field does not exist in source, skip 1645 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1646 if val != nil { 1647 path.WithIValue(val).SetTo(&target) 1648 } 1649 } 1650 } 1651 1652 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1653 fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData_PagerDuty), source.(*Notification_State_NotificationState_ProviderData_PagerDuty)) 1654 } 1655 1656 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Project(source *Notification_State_NotificationState_ProviderData_PagerDuty) *Notification_State_NotificationState_ProviderData_PagerDuty { 1657 if source == nil { 1658 return nil 1659 } 1660 if fieldMask == nil { 1661 return source 1662 } 1663 result := &Notification_State_NotificationState_ProviderData_PagerDuty{} 1664 1665 for _, p := range fieldMask.Paths { 1666 switch tp := p.(type) { 1667 case *NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath: 1668 switch tp.selector { 1669 case NotificationStateNotificationStateProviderDataPagerDuty_FieldPathSelectorIncidentKey: 1670 result.IncidentKey = source.IncidentKey 1671 } 1672 } 1673 } 1674 return result 1675 } 1676 1677 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1678 return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData_PagerDuty)) 1679 } 1680 1681 func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) PathsCount() int { 1682 if fieldMask == nil { 1683 return 0 1684 } 1685 return len(fieldMask.Paths) 1686 }