github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1/condition/condition.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/iam/proto/v1/condition.proto 3 // DO NOT EDIT!!! 4 5 package condition 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 attestation_domain "github.com/cloudwan/edgelq-sdk/iam/resources/v1/attestation_domain" 23 organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization" 24 permission "github.com/cloudwan/edgelq-sdk/iam/resources/v1/permission" 25 project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project" 26 meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service" 27 meta "github.com/cloudwan/goten-sdk/types/meta" 28 structpb "google.golang.org/protobuf/types/known/structpb" 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 _ = &attestation_domain.AttestationDomain{} 48 _ = &organization.Organization{} 49 _ = &permission.Permission{} 50 _ = &project.Project{} 51 _ = &structpb.Struct{} 52 _ = &meta_service.Service{} 53 _ = &meta.Meta{} 54 ) 55 56 type Condition_FieldMask struct { 57 Paths []Condition_FieldPath 58 } 59 60 func FullCondition_FieldMask() *Condition_FieldMask { 61 res := &Condition_FieldMask{} 62 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorName}) 63 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorMetadata}) 64 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorDisplayName}) 65 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorDescription}) 66 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorIpCondition}) 67 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorAttestationCondition}) 68 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorExpression}) 69 res.Paths = append(res.Paths, &Condition_FieldTerminalPath{selector: Condition_FieldPathSelectorParameterDeclarations}) 70 return res 71 } 72 73 func (fieldMask *Condition_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 *Condition_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.(*Condition_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 *Condition_FieldMask) ProtoReflect() preflect.Message { 103 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 104 return ParseCondition_FieldPath(raw) 105 }) 106 } 107 108 func (fieldMask *Condition_FieldMask) ProtoMessage() {} 109 110 func (fieldMask *Condition_FieldMask) Reset() { 111 if fieldMask != nil { 112 fieldMask.Paths = nil 113 } 114 } 115 116 func (fieldMask *Condition_FieldMask) Subtract(other *Condition_FieldMask) *Condition_FieldMask { 117 result := &Condition_FieldMask{} 118 removedSelectors := make([]bool, 8) 119 otherSubMasks := map[Condition_FieldPathSelector]gotenobject.FieldMask{ 120 Condition_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 121 Condition_FieldPathSelectorIpCondition: &Condition_IpCondition_FieldMask{}, 122 Condition_FieldPathSelectorAttestationCondition: &Condition_AttestationCondition_FieldMask{}, 123 Condition_FieldPathSelectorParameterDeclarations: &Condition_ParameterDeclaration_FieldMask{}, 124 } 125 mySubMasks := map[Condition_FieldPathSelector]gotenobject.FieldMask{ 126 Condition_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 127 Condition_FieldPathSelectorIpCondition: &Condition_IpCondition_FieldMask{}, 128 Condition_FieldPathSelectorAttestationCondition: &Condition_AttestationCondition_FieldMask{}, 129 Condition_FieldPathSelectorParameterDeclarations: &Condition_ParameterDeclaration_FieldMask{}, 130 } 131 132 for _, path := range other.GetPaths() { 133 switch tp := path.(type) { 134 case *Condition_FieldTerminalPath: 135 removedSelectors[int(tp.selector)] = true 136 case *Condition_FieldSubPath: 137 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 138 } 139 } 140 for _, path := range fieldMask.GetPaths() { 141 if !removedSelectors[int(path.Selector())] { 142 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 143 if tp, ok := path.(*Condition_FieldTerminalPath); ok { 144 switch tp.selector { 145 case Condition_FieldPathSelectorMetadata: 146 mySubMasks[Condition_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 147 case Condition_FieldPathSelectorIpCondition: 148 mySubMasks[Condition_FieldPathSelectorIpCondition] = FullCondition_IpCondition_FieldMask() 149 case Condition_FieldPathSelectorAttestationCondition: 150 mySubMasks[Condition_FieldPathSelectorAttestationCondition] = FullCondition_AttestationCondition_FieldMask() 151 case Condition_FieldPathSelectorParameterDeclarations: 152 mySubMasks[Condition_FieldPathSelectorParameterDeclarations] = FullCondition_ParameterDeclaration_FieldMask() 153 } 154 } else if tp, ok := path.(*Condition_FieldSubPath); ok { 155 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 156 } 157 } else { 158 result.Paths = append(result.Paths, path) 159 } 160 } 161 } 162 for selector, mySubMask := range mySubMasks { 163 if mySubMask.PathsCount() > 0 { 164 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 165 result.Paths = append(result.Paths, &Condition_FieldSubPath{selector: selector, subPath: allowedPath}) 166 } 167 } 168 } 169 170 if len(result.Paths) == 0 { 171 return nil 172 } 173 return result 174 } 175 176 func (fieldMask *Condition_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 177 return fieldMask.Subtract(other.(*Condition_FieldMask)) 178 } 179 180 // FilterInputFields generates copy of field paths with output_only field paths removed 181 func (fieldMask *Condition_FieldMask) FilterInputFields() *Condition_FieldMask { 182 result := &Condition_FieldMask{} 183 for _, path := range fieldMask.Paths { 184 switch path.Selector() { 185 case Condition_FieldPathSelectorMetadata: 186 if _, ok := path.(*Condition_FieldTerminalPath); ok { 187 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 188 result.Paths = append(result.Paths, &Condition_FieldSubPath{selector: path.Selector(), subPath: subpath}) 189 } 190 } else if sub, ok := path.(*Condition_FieldSubPath); ok { 191 selectedMask := &meta.Meta_FieldMask{ 192 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 193 } 194 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 195 result.Paths = append(result.Paths, &Condition_FieldSubPath{selector: Condition_FieldPathSelectorMetadata, subPath: allowedPath}) 196 } 197 } 198 default: 199 result.Paths = append(result.Paths, path) 200 } 201 } 202 return result 203 } 204 205 // ToFieldMask is used for proto conversions 206 func (fieldMask *Condition_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 207 protoFieldMask := &googlefieldmaskpb.FieldMask{} 208 for _, path := range fieldMask.Paths { 209 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 210 } 211 return protoFieldMask 212 } 213 214 func (fieldMask *Condition_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 215 if fieldMask == nil { 216 return status.Error(codes.Internal, "target field mask is nil") 217 } 218 fieldMask.Paths = make([]Condition_FieldPath, 0, len(protoFieldMask.Paths)) 219 for _, strPath := range protoFieldMask.Paths { 220 path, err := ParseCondition_FieldPath(strPath) 221 if err != nil { 222 return err 223 } 224 fieldMask.Paths = append(fieldMask.Paths, path) 225 } 226 return nil 227 } 228 229 // implement methods required by customType 230 func (fieldMask Condition_FieldMask) Marshal() ([]byte, error) { 231 protoFieldMask := fieldMask.ToProtoFieldMask() 232 return proto.Marshal(protoFieldMask) 233 } 234 235 func (fieldMask *Condition_FieldMask) Unmarshal(data []byte) error { 236 protoFieldMask := &googlefieldmaskpb.FieldMask{} 237 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 238 return err 239 } 240 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 241 return err 242 } 243 return nil 244 } 245 246 func (fieldMask *Condition_FieldMask) Size() int { 247 return proto.Size(fieldMask.ToProtoFieldMask()) 248 } 249 250 func (fieldMask Condition_FieldMask) MarshalJSON() ([]byte, error) { 251 return json.Marshal(fieldMask.ToProtoFieldMask()) 252 } 253 254 func (fieldMask *Condition_FieldMask) UnmarshalJSON(data []byte) error { 255 protoFieldMask := &googlefieldmaskpb.FieldMask{} 256 if err := json.Unmarshal(data, protoFieldMask); err != nil { 257 return err 258 } 259 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 260 return err 261 } 262 return nil 263 } 264 265 func (fieldMask *Condition_FieldMask) AppendPath(path Condition_FieldPath) { 266 fieldMask.Paths = append(fieldMask.Paths, path) 267 } 268 269 func (fieldMask *Condition_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 270 fieldMask.Paths = append(fieldMask.Paths, path.(Condition_FieldPath)) 271 } 272 273 func (fieldMask *Condition_FieldMask) GetPaths() []Condition_FieldPath { 274 if fieldMask == nil { 275 return nil 276 } 277 return fieldMask.Paths 278 } 279 280 func (fieldMask *Condition_FieldMask) GetRawPaths() []gotenobject.FieldPath { 281 if fieldMask == nil { 282 return nil 283 } 284 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 285 for _, path := range fieldMask.Paths { 286 rawPaths = append(rawPaths, path) 287 } 288 return rawPaths 289 } 290 291 func (fieldMask *Condition_FieldMask) SetFromCliFlag(raw string) error { 292 path, err := ParseCondition_FieldPath(raw) 293 if err != nil { 294 return err 295 } 296 fieldMask.Paths = append(fieldMask.Paths, path) 297 return nil 298 } 299 300 func (fieldMask *Condition_FieldMask) Set(target, source *Condition) { 301 for _, path := range fieldMask.Paths { 302 val, _ := path.GetSingle(source) 303 // if val is nil, then field does not exist in source, skip 304 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 305 if val != nil { 306 path.WithIValue(val).SetTo(&target) 307 } 308 } 309 } 310 311 func (fieldMask *Condition_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 312 fieldMask.Set(target.(*Condition), source.(*Condition)) 313 } 314 315 func (fieldMask *Condition_FieldMask) Project(source *Condition) *Condition { 316 if source == nil { 317 return nil 318 } 319 if fieldMask == nil { 320 return source 321 } 322 result := &Condition{} 323 metadataMask := &meta.Meta_FieldMask{} 324 wholeMetadataAccepted := false 325 ipConditionMask := &Condition_IpCondition_FieldMask{} 326 wholeIpConditionAccepted := false 327 attestationConditionMask := &Condition_AttestationCondition_FieldMask{} 328 wholeAttestationConditionAccepted := false 329 parameterDeclarationsMask := &Condition_ParameterDeclaration_FieldMask{} 330 wholeParameterDeclarationsAccepted := false 331 332 for _, p := range fieldMask.Paths { 333 switch tp := p.(type) { 334 case *Condition_FieldTerminalPath: 335 switch tp.selector { 336 case Condition_FieldPathSelectorName: 337 result.Name = source.Name 338 case Condition_FieldPathSelectorMetadata: 339 result.Metadata = source.Metadata 340 wholeMetadataAccepted = true 341 case Condition_FieldPathSelectorDisplayName: 342 result.DisplayName = source.DisplayName 343 case Condition_FieldPathSelectorDescription: 344 result.Description = source.Description 345 case Condition_FieldPathSelectorIpCondition: 346 if source, ok := source.Condition.(*Condition_IpCondition_); ok { 347 result.Condition = &Condition_IpCondition_{ 348 IpCondition: source.IpCondition, 349 } 350 } 351 wholeIpConditionAccepted = true 352 case Condition_FieldPathSelectorAttestationCondition: 353 if source, ok := source.Condition.(*Condition_AttestationCondition_); ok { 354 result.Condition = &Condition_AttestationCondition_{ 355 AttestationCondition: source.AttestationCondition, 356 } 357 } 358 wholeAttestationConditionAccepted = true 359 case Condition_FieldPathSelectorExpression: 360 result.Expression = source.Expression 361 case Condition_FieldPathSelectorParameterDeclarations: 362 result.ParameterDeclarations = source.ParameterDeclarations 363 wholeParameterDeclarationsAccepted = true 364 } 365 case *Condition_FieldSubPath: 366 switch tp.selector { 367 case Condition_FieldPathSelectorMetadata: 368 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 369 case Condition_FieldPathSelectorIpCondition: 370 ipConditionMask.AppendPath(tp.subPath.(ConditionIpCondition_FieldPath)) 371 case Condition_FieldPathSelectorAttestationCondition: 372 attestationConditionMask.AppendPath(tp.subPath.(ConditionAttestationCondition_FieldPath)) 373 case Condition_FieldPathSelectorParameterDeclarations: 374 parameterDeclarationsMask.AppendPath(tp.subPath.(ConditionParameterDeclaration_FieldPath)) 375 } 376 } 377 } 378 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 379 result.Metadata = metadataMask.Project(source.GetMetadata()) 380 } 381 if wholeIpConditionAccepted == false && len(ipConditionMask.Paths) > 0 { 382 if asOneOf, ok := source.Condition.(*Condition_IpCondition_); ok { 383 result.Condition = (*Condition_IpCondition_)(nil) 384 if asOneOf != nil { 385 oneOfRes := &Condition_IpCondition_{} 386 oneOfRes.IpCondition = ipConditionMask.Project(asOneOf.IpCondition) 387 result.Condition = oneOfRes 388 } 389 } 390 } 391 if wholeAttestationConditionAccepted == false && len(attestationConditionMask.Paths) > 0 { 392 if asOneOf, ok := source.Condition.(*Condition_AttestationCondition_); ok { 393 result.Condition = (*Condition_AttestationCondition_)(nil) 394 if asOneOf != nil { 395 oneOfRes := &Condition_AttestationCondition_{} 396 oneOfRes.AttestationCondition = attestationConditionMask.Project(asOneOf.AttestationCondition) 397 result.Condition = oneOfRes 398 } 399 } 400 } 401 if wholeParameterDeclarationsAccepted == false && len(parameterDeclarationsMask.Paths) > 0 { 402 for _, sourceItem := range source.GetParameterDeclarations() { 403 result.ParameterDeclarations = append(result.ParameterDeclarations, parameterDeclarationsMask.Project(sourceItem)) 404 } 405 } 406 return result 407 } 408 409 func (fieldMask *Condition_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 410 return fieldMask.Project(source.(*Condition)) 411 } 412 413 func (fieldMask *Condition_FieldMask) PathsCount() int { 414 if fieldMask == nil { 415 return 0 416 } 417 return len(fieldMask.Paths) 418 } 419 420 type Condition_ParameterDeclaration_FieldMask struct { 421 Paths []ConditionParameterDeclaration_FieldPath 422 } 423 424 func FullCondition_ParameterDeclaration_FieldMask() *Condition_ParameterDeclaration_FieldMask { 425 res := &Condition_ParameterDeclaration_FieldMask{} 426 res.Paths = append(res.Paths, &ConditionParameterDeclaration_FieldTerminalPath{selector: ConditionParameterDeclaration_FieldPathSelectorKey}) 427 res.Paths = append(res.Paths, &ConditionParameterDeclaration_FieldTerminalPath{selector: ConditionParameterDeclaration_FieldPathSelectorType}) 428 return res 429 } 430 431 func (fieldMask *Condition_ParameterDeclaration_FieldMask) String() string { 432 if fieldMask == nil { 433 return "<nil>" 434 } 435 pathsStr := make([]string, 0, len(fieldMask.Paths)) 436 for _, path := range fieldMask.Paths { 437 pathsStr = append(pathsStr, path.String()) 438 } 439 return strings.Join(pathsStr, ", ") 440 } 441 442 func (fieldMask *Condition_ParameterDeclaration_FieldMask) IsFull() bool { 443 if fieldMask == nil { 444 return false 445 } 446 presentSelectors := make([]bool, 2) 447 for _, path := range fieldMask.Paths { 448 if asFinal, ok := path.(*ConditionParameterDeclaration_FieldTerminalPath); ok { 449 presentSelectors[int(asFinal.selector)] = true 450 } 451 } 452 for _, flag := range presentSelectors { 453 if !flag { 454 return false 455 } 456 } 457 return true 458 } 459 460 func (fieldMask *Condition_ParameterDeclaration_FieldMask) ProtoReflect() preflect.Message { 461 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 462 return ParseConditionParameterDeclaration_FieldPath(raw) 463 }) 464 } 465 466 func (fieldMask *Condition_ParameterDeclaration_FieldMask) ProtoMessage() {} 467 468 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Reset() { 469 if fieldMask != nil { 470 fieldMask.Paths = nil 471 } 472 } 473 474 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Subtract(other *Condition_ParameterDeclaration_FieldMask) *Condition_ParameterDeclaration_FieldMask { 475 result := &Condition_ParameterDeclaration_FieldMask{} 476 removedSelectors := make([]bool, 2) 477 478 for _, path := range other.GetPaths() { 479 switch tp := path.(type) { 480 case *ConditionParameterDeclaration_FieldTerminalPath: 481 removedSelectors[int(tp.selector)] = true 482 } 483 } 484 for _, path := range fieldMask.GetPaths() { 485 if !removedSelectors[int(path.Selector())] { 486 result.Paths = append(result.Paths, path) 487 } 488 } 489 490 if len(result.Paths) == 0 { 491 return nil 492 } 493 return result 494 } 495 496 func (fieldMask *Condition_ParameterDeclaration_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 497 return fieldMask.Subtract(other.(*Condition_ParameterDeclaration_FieldMask)) 498 } 499 500 // FilterInputFields generates copy of field paths with output_only field paths removed 501 func (fieldMask *Condition_ParameterDeclaration_FieldMask) FilterInputFields() *Condition_ParameterDeclaration_FieldMask { 502 result := &Condition_ParameterDeclaration_FieldMask{} 503 result.Paths = append(result.Paths, fieldMask.Paths...) 504 return result 505 } 506 507 // ToFieldMask is used for proto conversions 508 func (fieldMask *Condition_ParameterDeclaration_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 509 protoFieldMask := &googlefieldmaskpb.FieldMask{} 510 for _, path := range fieldMask.Paths { 511 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 512 } 513 return protoFieldMask 514 } 515 516 func (fieldMask *Condition_ParameterDeclaration_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 517 if fieldMask == nil { 518 return status.Error(codes.Internal, "target field mask is nil") 519 } 520 fieldMask.Paths = make([]ConditionParameterDeclaration_FieldPath, 0, len(protoFieldMask.Paths)) 521 for _, strPath := range protoFieldMask.Paths { 522 path, err := ParseConditionParameterDeclaration_FieldPath(strPath) 523 if err != nil { 524 return err 525 } 526 fieldMask.Paths = append(fieldMask.Paths, path) 527 } 528 return nil 529 } 530 531 // implement methods required by customType 532 func (fieldMask Condition_ParameterDeclaration_FieldMask) Marshal() ([]byte, error) { 533 protoFieldMask := fieldMask.ToProtoFieldMask() 534 return proto.Marshal(protoFieldMask) 535 } 536 537 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Unmarshal(data []byte) error { 538 protoFieldMask := &googlefieldmaskpb.FieldMask{} 539 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 540 return err 541 } 542 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 543 return err 544 } 545 return nil 546 } 547 548 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Size() int { 549 return proto.Size(fieldMask.ToProtoFieldMask()) 550 } 551 552 func (fieldMask Condition_ParameterDeclaration_FieldMask) MarshalJSON() ([]byte, error) { 553 return json.Marshal(fieldMask.ToProtoFieldMask()) 554 } 555 556 func (fieldMask *Condition_ParameterDeclaration_FieldMask) UnmarshalJSON(data []byte) error { 557 protoFieldMask := &googlefieldmaskpb.FieldMask{} 558 if err := json.Unmarshal(data, protoFieldMask); err != nil { 559 return err 560 } 561 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 562 return err 563 } 564 return nil 565 } 566 567 func (fieldMask *Condition_ParameterDeclaration_FieldMask) AppendPath(path ConditionParameterDeclaration_FieldPath) { 568 fieldMask.Paths = append(fieldMask.Paths, path) 569 } 570 571 func (fieldMask *Condition_ParameterDeclaration_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 572 fieldMask.Paths = append(fieldMask.Paths, path.(ConditionParameterDeclaration_FieldPath)) 573 } 574 575 func (fieldMask *Condition_ParameterDeclaration_FieldMask) GetPaths() []ConditionParameterDeclaration_FieldPath { 576 if fieldMask == nil { 577 return nil 578 } 579 return fieldMask.Paths 580 } 581 582 func (fieldMask *Condition_ParameterDeclaration_FieldMask) GetRawPaths() []gotenobject.FieldPath { 583 if fieldMask == nil { 584 return nil 585 } 586 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 587 for _, path := range fieldMask.Paths { 588 rawPaths = append(rawPaths, path) 589 } 590 return rawPaths 591 } 592 593 func (fieldMask *Condition_ParameterDeclaration_FieldMask) SetFromCliFlag(raw string) error { 594 path, err := ParseConditionParameterDeclaration_FieldPath(raw) 595 if err != nil { 596 return err 597 } 598 fieldMask.Paths = append(fieldMask.Paths, path) 599 return nil 600 } 601 602 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Set(target, source *Condition_ParameterDeclaration) { 603 for _, path := range fieldMask.Paths { 604 val, _ := path.GetSingle(source) 605 // if val is nil, then field does not exist in source, skip 606 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 607 if val != nil { 608 path.WithIValue(val).SetTo(&target) 609 } 610 } 611 } 612 613 func (fieldMask *Condition_ParameterDeclaration_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 614 fieldMask.Set(target.(*Condition_ParameterDeclaration), source.(*Condition_ParameterDeclaration)) 615 } 616 617 func (fieldMask *Condition_ParameterDeclaration_FieldMask) Project(source *Condition_ParameterDeclaration) *Condition_ParameterDeclaration { 618 if source == nil { 619 return nil 620 } 621 if fieldMask == nil { 622 return source 623 } 624 result := &Condition_ParameterDeclaration{} 625 626 for _, p := range fieldMask.Paths { 627 switch tp := p.(type) { 628 case *ConditionParameterDeclaration_FieldTerminalPath: 629 switch tp.selector { 630 case ConditionParameterDeclaration_FieldPathSelectorKey: 631 result.Key = source.Key 632 case ConditionParameterDeclaration_FieldPathSelectorType: 633 result.Type = source.Type 634 } 635 } 636 } 637 return result 638 } 639 640 func (fieldMask *Condition_ParameterDeclaration_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 641 return fieldMask.Project(source.(*Condition_ParameterDeclaration)) 642 } 643 644 func (fieldMask *Condition_ParameterDeclaration_FieldMask) PathsCount() int { 645 if fieldMask == nil { 646 return 0 647 } 648 return len(fieldMask.Paths) 649 } 650 651 type Condition_IpCondition_FieldMask struct { 652 Paths []ConditionIpCondition_FieldPath 653 } 654 655 func FullCondition_IpCondition_FieldMask() *Condition_IpCondition_FieldMask { 656 res := &Condition_IpCondition_FieldMask{} 657 res.Paths = append(res.Paths, &ConditionIpCondition_FieldTerminalPath{selector: ConditionIpCondition_FieldPathSelectorAllowedCidrs}) 658 res.Paths = append(res.Paths, &ConditionIpCondition_FieldTerminalPath{selector: ConditionIpCondition_FieldPathSelectorDisabledCidrs}) 659 return res 660 } 661 662 func (fieldMask *Condition_IpCondition_FieldMask) String() string { 663 if fieldMask == nil { 664 return "<nil>" 665 } 666 pathsStr := make([]string, 0, len(fieldMask.Paths)) 667 for _, path := range fieldMask.Paths { 668 pathsStr = append(pathsStr, path.String()) 669 } 670 return strings.Join(pathsStr, ", ") 671 } 672 673 func (fieldMask *Condition_IpCondition_FieldMask) IsFull() bool { 674 if fieldMask == nil { 675 return false 676 } 677 presentSelectors := make([]bool, 2) 678 for _, path := range fieldMask.Paths { 679 if asFinal, ok := path.(*ConditionIpCondition_FieldTerminalPath); ok { 680 presentSelectors[int(asFinal.selector)] = true 681 } 682 } 683 for _, flag := range presentSelectors { 684 if !flag { 685 return false 686 } 687 } 688 return true 689 } 690 691 func (fieldMask *Condition_IpCondition_FieldMask) ProtoReflect() preflect.Message { 692 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 693 return ParseConditionIpCondition_FieldPath(raw) 694 }) 695 } 696 697 func (fieldMask *Condition_IpCondition_FieldMask) ProtoMessage() {} 698 699 func (fieldMask *Condition_IpCondition_FieldMask) Reset() { 700 if fieldMask != nil { 701 fieldMask.Paths = nil 702 } 703 } 704 705 func (fieldMask *Condition_IpCondition_FieldMask) Subtract(other *Condition_IpCondition_FieldMask) *Condition_IpCondition_FieldMask { 706 result := &Condition_IpCondition_FieldMask{} 707 removedSelectors := make([]bool, 2) 708 709 for _, path := range other.GetPaths() { 710 switch tp := path.(type) { 711 case *ConditionIpCondition_FieldTerminalPath: 712 removedSelectors[int(tp.selector)] = true 713 } 714 } 715 for _, path := range fieldMask.GetPaths() { 716 if !removedSelectors[int(path.Selector())] { 717 result.Paths = append(result.Paths, path) 718 } 719 } 720 721 if len(result.Paths) == 0 { 722 return nil 723 } 724 return result 725 } 726 727 func (fieldMask *Condition_IpCondition_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 728 return fieldMask.Subtract(other.(*Condition_IpCondition_FieldMask)) 729 } 730 731 // FilterInputFields generates copy of field paths with output_only field paths removed 732 func (fieldMask *Condition_IpCondition_FieldMask) FilterInputFields() *Condition_IpCondition_FieldMask { 733 result := &Condition_IpCondition_FieldMask{} 734 result.Paths = append(result.Paths, fieldMask.Paths...) 735 return result 736 } 737 738 // ToFieldMask is used for proto conversions 739 func (fieldMask *Condition_IpCondition_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 740 protoFieldMask := &googlefieldmaskpb.FieldMask{} 741 for _, path := range fieldMask.Paths { 742 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 743 } 744 return protoFieldMask 745 } 746 747 func (fieldMask *Condition_IpCondition_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 748 if fieldMask == nil { 749 return status.Error(codes.Internal, "target field mask is nil") 750 } 751 fieldMask.Paths = make([]ConditionIpCondition_FieldPath, 0, len(protoFieldMask.Paths)) 752 for _, strPath := range protoFieldMask.Paths { 753 path, err := ParseConditionIpCondition_FieldPath(strPath) 754 if err != nil { 755 return err 756 } 757 fieldMask.Paths = append(fieldMask.Paths, path) 758 } 759 return nil 760 } 761 762 // implement methods required by customType 763 func (fieldMask Condition_IpCondition_FieldMask) Marshal() ([]byte, error) { 764 protoFieldMask := fieldMask.ToProtoFieldMask() 765 return proto.Marshal(protoFieldMask) 766 } 767 768 func (fieldMask *Condition_IpCondition_FieldMask) Unmarshal(data []byte) error { 769 protoFieldMask := &googlefieldmaskpb.FieldMask{} 770 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 771 return err 772 } 773 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 774 return err 775 } 776 return nil 777 } 778 779 func (fieldMask *Condition_IpCondition_FieldMask) Size() int { 780 return proto.Size(fieldMask.ToProtoFieldMask()) 781 } 782 783 func (fieldMask Condition_IpCondition_FieldMask) MarshalJSON() ([]byte, error) { 784 return json.Marshal(fieldMask.ToProtoFieldMask()) 785 } 786 787 func (fieldMask *Condition_IpCondition_FieldMask) UnmarshalJSON(data []byte) error { 788 protoFieldMask := &googlefieldmaskpb.FieldMask{} 789 if err := json.Unmarshal(data, protoFieldMask); err != nil { 790 return err 791 } 792 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 793 return err 794 } 795 return nil 796 } 797 798 func (fieldMask *Condition_IpCondition_FieldMask) AppendPath(path ConditionIpCondition_FieldPath) { 799 fieldMask.Paths = append(fieldMask.Paths, path) 800 } 801 802 func (fieldMask *Condition_IpCondition_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 803 fieldMask.Paths = append(fieldMask.Paths, path.(ConditionIpCondition_FieldPath)) 804 } 805 806 func (fieldMask *Condition_IpCondition_FieldMask) GetPaths() []ConditionIpCondition_FieldPath { 807 if fieldMask == nil { 808 return nil 809 } 810 return fieldMask.Paths 811 } 812 813 func (fieldMask *Condition_IpCondition_FieldMask) GetRawPaths() []gotenobject.FieldPath { 814 if fieldMask == nil { 815 return nil 816 } 817 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 818 for _, path := range fieldMask.Paths { 819 rawPaths = append(rawPaths, path) 820 } 821 return rawPaths 822 } 823 824 func (fieldMask *Condition_IpCondition_FieldMask) SetFromCliFlag(raw string) error { 825 path, err := ParseConditionIpCondition_FieldPath(raw) 826 if err != nil { 827 return err 828 } 829 fieldMask.Paths = append(fieldMask.Paths, path) 830 return nil 831 } 832 833 func (fieldMask *Condition_IpCondition_FieldMask) Set(target, source *Condition_IpCondition) { 834 for _, path := range fieldMask.Paths { 835 val, _ := path.GetSingle(source) 836 // if val is nil, then field does not exist in source, skip 837 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 838 if val != nil { 839 path.WithIValue(val).SetTo(&target) 840 } 841 } 842 } 843 844 func (fieldMask *Condition_IpCondition_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 845 fieldMask.Set(target.(*Condition_IpCondition), source.(*Condition_IpCondition)) 846 } 847 848 func (fieldMask *Condition_IpCondition_FieldMask) Project(source *Condition_IpCondition) *Condition_IpCondition { 849 if source == nil { 850 return nil 851 } 852 if fieldMask == nil { 853 return source 854 } 855 result := &Condition_IpCondition{} 856 857 for _, p := range fieldMask.Paths { 858 switch tp := p.(type) { 859 case *ConditionIpCondition_FieldTerminalPath: 860 switch tp.selector { 861 case ConditionIpCondition_FieldPathSelectorAllowedCidrs: 862 result.AllowedCidrs = source.AllowedCidrs 863 case ConditionIpCondition_FieldPathSelectorDisabledCidrs: 864 result.DisabledCidrs = source.DisabledCidrs 865 } 866 } 867 } 868 return result 869 } 870 871 func (fieldMask *Condition_IpCondition_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 872 return fieldMask.Project(source.(*Condition_IpCondition)) 873 } 874 875 func (fieldMask *Condition_IpCondition_FieldMask) PathsCount() int { 876 if fieldMask == nil { 877 return 0 878 } 879 return len(fieldMask.Paths) 880 } 881 882 type Condition_AttestationCondition_FieldMask struct { 883 Paths []ConditionAttestationCondition_FieldPath 884 } 885 886 func FullCondition_AttestationCondition_FieldMask() *Condition_AttestationCondition_FieldMask { 887 res := &Condition_AttestationCondition_FieldMask{} 888 res.Paths = append(res.Paths, &ConditionAttestationCondition_FieldTerminalPath{selector: ConditionAttestationCondition_FieldPathSelectorDomain}) 889 res.Paths = append(res.Paths, &ConditionAttestationCondition_FieldTerminalPath{selector: ConditionAttestationCondition_FieldPathSelectorExceptPermissions}) 890 return res 891 } 892 893 func (fieldMask *Condition_AttestationCondition_FieldMask) String() string { 894 if fieldMask == nil { 895 return "<nil>" 896 } 897 pathsStr := make([]string, 0, len(fieldMask.Paths)) 898 for _, path := range fieldMask.Paths { 899 pathsStr = append(pathsStr, path.String()) 900 } 901 return strings.Join(pathsStr, ", ") 902 } 903 904 func (fieldMask *Condition_AttestationCondition_FieldMask) IsFull() bool { 905 if fieldMask == nil { 906 return false 907 } 908 presentSelectors := make([]bool, 2) 909 for _, path := range fieldMask.Paths { 910 if asFinal, ok := path.(*ConditionAttestationCondition_FieldTerminalPath); ok { 911 presentSelectors[int(asFinal.selector)] = true 912 } 913 } 914 for _, flag := range presentSelectors { 915 if !flag { 916 return false 917 } 918 } 919 return true 920 } 921 922 func (fieldMask *Condition_AttestationCondition_FieldMask) ProtoReflect() preflect.Message { 923 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 924 return ParseConditionAttestationCondition_FieldPath(raw) 925 }) 926 } 927 928 func (fieldMask *Condition_AttestationCondition_FieldMask) ProtoMessage() {} 929 930 func (fieldMask *Condition_AttestationCondition_FieldMask) Reset() { 931 if fieldMask != nil { 932 fieldMask.Paths = nil 933 } 934 } 935 936 func (fieldMask *Condition_AttestationCondition_FieldMask) Subtract(other *Condition_AttestationCondition_FieldMask) *Condition_AttestationCondition_FieldMask { 937 result := &Condition_AttestationCondition_FieldMask{} 938 removedSelectors := make([]bool, 2) 939 940 for _, path := range other.GetPaths() { 941 switch tp := path.(type) { 942 case *ConditionAttestationCondition_FieldTerminalPath: 943 removedSelectors[int(tp.selector)] = true 944 } 945 } 946 for _, path := range fieldMask.GetPaths() { 947 if !removedSelectors[int(path.Selector())] { 948 result.Paths = append(result.Paths, path) 949 } 950 } 951 952 if len(result.Paths) == 0 { 953 return nil 954 } 955 return result 956 } 957 958 func (fieldMask *Condition_AttestationCondition_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 959 return fieldMask.Subtract(other.(*Condition_AttestationCondition_FieldMask)) 960 } 961 962 // FilterInputFields generates copy of field paths with output_only field paths removed 963 func (fieldMask *Condition_AttestationCondition_FieldMask) FilterInputFields() *Condition_AttestationCondition_FieldMask { 964 result := &Condition_AttestationCondition_FieldMask{} 965 result.Paths = append(result.Paths, fieldMask.Paths...) 966 return result 967 } 968 969 // ToFieldMask is used for proto conversions 970 func (fieldMask *Condition_AttestationCondition_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 971 protoFieldMask := &googlefieldmaskpb.FieldMask{} 972 for _, path := range fieldMask.Paths { 973 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 974 } 975 return protoFieldMask 976 } 977 978 func (fieldMask *Condition_AttestationCondition_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 979 if fieldMask == nil { 980 return status.Error(codes.Internal, "target field mask is nil") 981 } 982 fieldMask.Paths = make([]ConditionAttestationCondition_FieldPath, 0, len(protoFieldMask.Paths)) 983 for _, strPath := range protoFieldMask.Paths { 984 path, err := ParseConditionAttestationCondition_FieldPath(strPath) 985 if err != nil { 986 return err 987 } 988 fieldMask.Paths = append(fieldMask.Paths, path) 989 } 990 return nil 991 } 992 993 // implement methods required by customType 994 func (fieldMask Condition_AttestationCondition_FieldMask) Marshal() ([]byte, error) { 995 protoFieldMask := fieldMask.ToProtoFieldMask() 996 return proto.Marshal(protoFieldMask) 997 } 998 999 func (fieldMask *Condition_AttestationCondition_FieldMask) Unmarshal(data []byte) error { 1000 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1001 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1002 return err 1003 } 1004 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1005 return err 1006 } 1007 return nil 1008 } 1009 1010 func (fieldMask *Condition_AttestationCondition_FieldMask) Size() int { 1011 return proto.Size(fieldMask.ToProtoFieldMask()) 1012 } 1013 1014 func (fieldMask Condition_AttestationCondition_FieldMask) MarshalJSON() ([]byte, error) { 1015 return json.Marshal(fieldMask.ToProtoFieldMask()) 1016 } 1017 1018 func (fieldMask *Condition_AttestationCondition_FieldMask) UnmarshalJSON(data []byte) error { 1019 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1020 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1021 return err 1022 } 1023 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1024 return err 1025 } 1026 return nil 1027 } 1028 1029 func (fieldMask *Condition_AttestationCondition_FieldMask) AppendPath(path ConditionAttestationCondition_FieldPath) { 1030 fieldMask.Paths = append(fieldMask.Paths, path) 1031 } 1032 1033 func (fieldMask *Condition_AttestationCondition_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1034 fieldMask.Paths = append(fieldMask.Paths, path.(ConditionAttestationCondition_FieldPath)) 1035 } 1036 1037 func (fieldMask *Condition_AttestationCondition_FieldMask) GetPaths() []ConditionAttestationCondition_FieldPath { 1038 if fieldMask == nil { 1039 return nil 1040 } 1041 return fieldMask.Paths 1042 } 1043 1044 func (fieldMask *Condition_AttestationCondition_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1045 if fieldMask == nil { 1046 return nil 1047 } 1048 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1049 for _, path := range fieldMask.Paths { 1050 rawPaths = append(rawPaths, path) 1051 } 1052 return rawPaths 1053 } 1054 1055 func (fieldMask *Condition_AttestationCondition_FieldMask) SetFromCliFlag(raw string) error { 1056 path, err := ParseConditionAttestationCondition_FieldPath(raw) 1057 if err != nil { 1058 return err 1059 } 1060 fieldMask.Paths = append(fieldMask.Paths, path) 1061 return nil 1062 } 1063 1064 func (fieldMask *Condition_AttestationCondition_FieldMask) Set(target, source *Condition_AttestationCondition) { 1065 for _, path := range fieldMask.Paths { 1066 val, _ := path.GetSingle(source) 1067 // if val is nil, then field does not exist in source, skip 1068 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1069 if val != nil { 1070 path.WithIValue(val).SetTo(&target) 1071 } 1072 } 1073 } 1074 1075 func (fieldMask *Condition_AttestationCondition_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1076 fieldMask.Set(target.(*Condition_AttestationCondition), source.(*Condition_AttestationCondition)) 1077 } 1078 1079 func (fieldMask *Condition_AttestationCondition_FieldMask) Project(source *Condition_AttestationCondition) *Condition_AttestationCondition { 1080 if source == nil { 1081 return nil 1082 } 1083 if fieldMask == nil { 1084 return source 1085 } 1086 result := &Condition_AttestationCondition{} 1087 1088 for _, p := range fieldMask.Paths { 1089 switch tp := p.(type) { 1090 case *ConditionAttestationCondition_FieldTerminalPath: 1091 switch tp.selector { 1092 case ConditionAttestationCondition_FieldPathSelectorDomain: 1093 result.Domain = source.Domain 1094 case ConditionAttestationCondition_FieldPathSelectorExceptPermissions: 1095 result.ExceptPermissions = source.ExceptPermissions 1096 } 1097 } 1098 } 1099 return result 1100 } 1101 1102 func (fieldMask *Condition_AttestationCondition_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1103 return fieldMask.Project(source.(*Condition_AttestationCondition)) 1104 } 1105 1106 func (fieldMask *Condition_AttestationCondition_FieldMask) PathsCount() int { 1107 if fieldMask == nil { 1108 return 0 1109 } 1110 return len(fieldMask.Paths) 1111 } 1112 1113 type ExecutableCondition_FieldMask struct { 1114 Paths []ExecutableCondition_FieldPath 1115 } 1116 1117 func FullExecutableCondition_FieldMask() *ExecutableCondition_FieldMask { 1118 res := &ExecutableCondition_FieldMask{} 1119 res.Paths = append(res.Paths, &ExecutableCondition_FieldTerminalPath{selector: ExecutableCondition_FieldPathSelectorCondition}) 1120 res.Paths = append(res.Paths, &ExecutableCondition_FieldTerminalPath{selector: ExecutableCondition_FieldPathSelectorParams}) 1121 return res 1122 } 1123 1124 func (fieldMask *ExecutableCondition_FieldMask) String() string { 1125 if fieldMask == nil { 1126 return "<nil>" 1127 } 1128 pathsStr := make([]string, 0, len(fieldMask.Paths)) 1129 for _, path := range fieldMask.Paths { 1130 pathsStr = append(pathsStr, path.String()) 1131 } 1132 return strings.Join(pathsStr, ", ") 1133 } 1134 1135 func (fieldMask *ExecutableCondition_FieldMask) IsFull() bool { 1136 if fieldMask == nil { 1137 return false 1138 } 1139 presentSelectors := make([]bool, 2) 1140 for _, path := range fieldMask.Paths { 1141 if asFinal, ok := path.(*ExecutableCondition_FieldTerminalPath); ok { 1142 presentSelectors[int(asFinal.selector)] = true 1143 } 1144 } 1145 for _, flag := range presentSelectors { 1146 if !flag { 1147 return false 1148 } 1149 } 1150 return true 1151 } 1152 1153 func (fieldMask *ExecutableCondition_FieldMask) ProtoReflect() preflect.Message { 1154 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 1155 return ParseExecutableCondition_FieldPath(raw) 1156 }) 1157 } 1158 1159 func (fieldMask *ExecutableCondition_FieldMask) ProtoMessage() {} 1160 1161 func (fieldMask *ExecutableCondition_FieldMask) Reset() { 1162 if fieldMask != nil { 1163 fieldMask.Paths = nil 1164 } 1165 } 1166 1167 func (fieldMask *ExecutableCondition_FieldMask) Subtract(other *ExecutableCondition_FieldMask) *ExecutableCondition_FieldMask { 1168 result := &ExecutableCondition_FieldMask{} 1169 removedSelectors := make([]bool, 2) 1170 1171 for _, path := range other.GetPaths() { 1172 switch tp := path.(type) { 1173 case *ExecutableCondition_FieldTerminalPath: 1174 removedSelectors[int(tp.selector)] = true 1175 } 1176 } 1177 for _, path := range fieldMask.GetPaths() { 1178 if !removedSelectors[int(path.Selector())] { 1179 result.Paths = append(result.Paths, path) 1180 } 1181 } 1182 1183 if len(result.Paths) == 0 { 1184 return nil 1185 } 1186 return result 1187 } 1188 1189 func (fieldMask *ExecutableCondition_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 1190 return fieldMask.Subtract(other.(*ExecutableCondition_FieldMask)) 1191 } 1192 1193 // FilterInputFields generates copy of field paths with output_only field paths removed 1194 func (fieldMask *ExecutableCondition_FieldMask) FilterInputFields() *ExecutableCondition_FieldMask { 1195 result := &ExecutableCondition_FieldMask{} 1196 result.Paths = append(result.Paths, fieldMask.Paths...) 1197 return result 1198 } 1199 1200 // ToFieldMask is used for proto conversions 1201 func (fieldMask *ExecutableCondition_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 1202 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1203 for _, path := range fieldMask.Paths { 1204 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 1205 } 1206 return protoFieldMask 1207 } 1208 1209 func (fieldMask *ExecutableCondition_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 1210 if fieldMask == nil { 1211 return status.Error(codes.Internal, "target field mask is nil") 1212 } 1213 fieldMask.Paths = make([]ExecutableCondition_FieldPath, 0, len(protoFieldMask.Paths)) 1214 for _, strPath := range protoFieldMask.Paths { 1215 path, err := ParseExecutableCondition_FieldPath(strPath) 1216 if err != nil { 1217 return err 1218 } 1219 fieldMask.Paths = append(fieldMask.Paths, path) 1220 } 1221 return nil 1222 } 1223 1224 // implement methods required by customType 1225 func (fieldMask ExecutableCondition_FieldMask) Marshal() ([]byte, error) { 1226 protoFieldMask := fieldMask.ToProtoFieldMask() 1227 return proto.Marshal(protoFieldMask) 1228 } 1229 1230 func (fieldMask *ExecutableCondition_FieldMask) Unmarshal(data []byte) error { 1231 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1232 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 1233 return err 1234 } 1235 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1236 return err 1237 } 1238 return nil 1239 } 1240 1241 func (fieldMask *ExecutableCondition_FieldMask) Size() int { 1242 return proto.Size(fieldMask.ToProtoFieldMask()) 1243 } 1244 1245 func (fieldMask ExecutableCondition_FieldMask) MarshalJSON() ([]byte, error) { 1246 return json.Marshal(fieldMask.ToProtoFieldMask()) 1247 } 1248 1249 func (fieldMask *ExecutableCondition_FieldMask) UnmarshalJSON(data []byte) error { 1250 protoFieldMask := &googlefieldmaskpb.FieldMask{} 1251 if err := json.Unmarshal(data, protoFieldMask); err != nil { 1252 return err 1253 } 1254 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 1255 return err 1256 } 1257 return nil 1258 } 1259 1260 func (fieldMask *ExecutableCondition_FieldMask) AppendPath(path ExecutableCondition_FieldPath) { 1261 fieldMask.Paths = append(fieldMask.Paths, path) 1262 } 1263 1264 func (fieldMask *ExecutableCondition_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 1265 fieldMask.Paths = append(fieldMask.Paths, path.(ExecutableCondition_FieldPath)) 1266 } 1267 1268 func (fieldMask *ExecutableCondition_FieldMask) GetPaths() []ExecutableCondition_FieldPath { 1269 if fieldMask == nil { 1270 return nil 1271 } 1272 return fieldMask.Paths 1273 } 1274 1275 func (fieldMask *ExecutableCondition_FieldMask) GetRawPaths() []gotenobject.FieldPath { 1276 if fieldMask == nil { 1277 return nil 1278 } 1279 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 1280 for _, path := range fieldMask.Paths { 1281 rawPaths = append(rawPaths, path) 1282 } 1283 return rawPaths 1284 } 1285 1286 func (fieldMask *ExecutableCondition_FieldMask) SetFromCliFlag(raw string) error { 1287 path, err := ParseExecutableCondition_FieldPath(raw) 1288 if err != nil { 1289 return err 1290 } 1291 fieldMask.Paths = append(fieldMask.Paths, path) 1292 return nil 1293 } 1294 1295 func (fieldMask *ExecutableCondition_FieldMask) Set(target, source *ExecutableCondition) { 1296 for _, path := range fieldMask.Paths { 1297 val, _ := path.GetSingle(source) 1298 // if val is nil, then field does not exist in source, skip 1299 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 1300 if val != nil { 1301 path.WithIValue(val).SetTo(&target) 1302 } 1303 } 1304 } 1305 1306 func (fieldMask *ExecutableCondition_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 1307 fieldMask.Set(target.(*ExecutableCondition), source.(*ExecutableCondition)) 1308 } 1309 1310 func (fieldMask *ExecutableCondition_FieldMask) Project(source *ExecutableCondition) *ExecutableCondition { 1311 if source == nil { 1312 return nil 1313 } 1314 if fieldMask == nil { 1315 return source 1316 } 1317 result := &ExecutableCondition{} 1318 1319 for _, p := range fieldMask.Paths { 1320 switch tp := p.(type) { 1321 case *ExecutableCondition_FieldTerminalPath: 1322 switch tp.selector { 1323 case ExecutableCondition_FieldPathSelectorCondition: 1324 result.Condition = source.Condition 1325 case ExecutableCondition_FieldPathSelectorParams: 1326 result.Params = source.Params 1327 } 1328 } 1329 } 1330 return result 1331 } 1332 1333 func (fieldMask *ExecutableCondition_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 1334 return fieldMask.Project(source.(*ExecutableCondition)) 1335 } 1336 1337 func (fieldMask *ExecutableCondition_FieldMask) PathsCount() int { 1338 if fieldMask == nil { 1339 return 0 1340 } 1341 return len(fieldMask.Paths) 1342 }