github.com/cloudwan/edgelq-sdk@v1.15.4/devices/resources/v1alpha2/provisioning_approval_request/provisioning_approval_request.pb.fieldmask.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/devices/proto/v1alpha2/provisioning_approval_request.proto
     3  // DO NOT EDIT!!!
     4  
     5  package provisioning_approval_request
     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  	provisioning_policy "github.com/cloudwan/edgelq-sdk/devices/resources/v1alpha2/provisioning_policy"
    23  	iam_service_account "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/service_account"
    24  	meta "github.com/cloudwan/goten-sdk/types/meta"
    25  )
    26  
    27  // ensure the imports are used
    28  var (
    29  	_ = new(json.Marshaler)
    30  	_ = strings.Builder{}
    31  
    32  	_ = codes.NotFound
    33  	_ = status.Status{}
    34  	_ = new(proto.Message)
    35  	_ = new(preflect.Message)
    36  	_ = googlefieldmaskpb.FieldMask{}
    37  
    38  	_ = new(gotenobject.FieldMask)
    39  )
    40  
    41  // make sure we're using proto imports
    42  var (
    43  	_ = &provisioning_policy.ProvisioningPolicy{}
    44  	_ = &iam_service_account.ServiceAccount{}
    45  	_ = &meta.Meta{}
    46  )
    47  
    48  type ProvisioningApprovalRequest_FieldMask struct {
    49  	Paths []ProvisioningApprovalRequest_FieldPath
    50  }
    51  
    52  func FullProvisioningApprovalRequest_FieldMask() *ProvisioningApprovalRequest_FieldMask {
    53  	res := &ProvisioningApprovalRequest_FieldMask{}
    54  	res.Paths = append(res.Paths, &ProvisioningApprovalRequest_FieldTerminalPath{selector: ProvisioningApprovalRequest_FieldPathSelectorName})
    55  	res.Paths = append(res.Paths, &ProvisioningApprovalRequest_FieldTerminalPath{selector: ProvisioningApprovalRequest_FieldPathSelectorSpec})
    56  	res.Paths = append(res.Paths, &ProvisioningApprovalRequest_FieldTerminalPath{selector: ProvisioningApprovalRequest_FieldPathSelectorStatus})
    57  	res.Paths = append(res.Paths, &ProvisioningApprovalRequest_FieldTerminalPath{selector: ProvisioningApprovalRequest_FieldPathSelectorMetadata})
    58  	return res
    59  }
    60  
    61  func (fieldMask *ProvisioningApprovalRequest_FieldMask) String() string {
    62  	if fieldMask == nil {
    63  		return "<nil>"
    64  	}
    65  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    66  	for _, path := range fieldMask.Paths {
    67  		pathsStr = append(pathsStr, path.String())
    68  	}
    69  	return strings.Join(pathsStr, ", ")
    70  }
    71  
    72  func (fieldMask *ProvisioningApprovalRequest_FieldMask) IsFull() bool {
    73  	if fieldMask == nil {
    74  		return false
    75  	}
    76  	presentSelectors := make([]bool, 4)
    77  	for _, path := range fieldMask.Paths {
    78  		if asFinal, ok := path.(*ProvisioningApprovalRequest_FieldTerminalPath); ok {
    79  			presentSelectors[int(asFinal.selector)] = true
    80  		}
    81  	}
    82  	for _, flag := range presentSelectors {
    83  		if !flag {
    84  			return false
    85  		}
    86  	}
    87  	return true
    88  }
    89  
    90  func (fieldMask *ProvisioningApprovalRequest_FieldMask) ProtoReflect() preflect.Message {
    91  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    92  		return ParseProvisioningApprovalRequest_FieldPath(raw)
    93  	})
    94  }
    95  
    96  func (fieldMask *ProvisioningApprovalRequest_FieldMask) ProtoMessage() {}
    97  
    98  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Reset() {
    99  	if fieldMask != nil {
   100  		fieldMask.Paths = nil
   101  	}
   102  }
   103  
   104  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Subtract(other *ProvisioningApprovalRequest_FieldMask) *ProvisioningApprovalRequest_FieldMask {
   105  	result := &ProvisioningApprovalRequest_FieldMask{}
   106  	removedSelectors := make([]bool, 4)
   107  	otherSubMasks := map[ProvisioningApprovalRequest_FieldPathSelector]gotenobject.FieldMask{
   108  		ProvisioningApprovalRequest_FieldPathSelectorSpec:     &ProvisioningApprovalRequest_Spec_FieldMask{},
   109  		ProvisioningApprovalRequest_FieldPathSelectorStatus:   &ProvisioningApprovalRequest_Status_FieldMask{},
   110  		ProvisioningApprovalRequest_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   111  	}
   112  	mySubMasks := map[ProvisioningApprovalRequest_FieldPathSelector]gotenobject.FieldMask{
   113  		ProvisioningApprovalRequest_FieldPathSelectorSpec:     &ProvisioningApprovalRequest_Spec_FieldMask{},
   114  		ProvisioningApprovalRequest_FieldPathSelectorStatus:   &ProvisioningApprovalRequest_Status_FieldMask{},
   115  		ProvisioningApprovalRequest_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   116  	}
   117  
   118  	for _, path := range other.GetPaths() {
   119  		switch tp := path.(type) {
   120  		case *ProvisioningApprovalRequest_FieldTerminalPath:
   121  			removedSelectors[int(tp.selector)] = true
   122  		case *ProvisioningApprovalRequest_FieldSubPath:
   123  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   124  		}
   125  	}
   126  	for _, path := range fieldMask.GetPaths() {
   127  		if !removedSelectors[int(path.Selector())] {
   128  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   129  				if tp, ok := path.(*ProvisioningApprovalRequest_FieldTerminalPath); ok {
   130  					switch tp.selector {
   131  					case ProvisioningApprovalRequest_FieldPathSelectorSpec:
   132  						mySubMasks[ProvisioningApprovalRequest_FieldPathSelectorSpec] = FullProvisioningApprovalRequest_Spec_FieldMask()
   133  					case ProvisioningApprovalRequest_FieldPathSelectorStatus:
   134  						mySubMasks[ProvisioningApprovalRequest_FieldPathSelectorStatus] = FullProvisioningApprovalRequest_Status_FieldMask()
   135  					case ProvisioningApprovalRequest_FieldPathSelectorMetadata:
   136  						mySubMasks[ProvisioningApprovalRequest_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   137  					}
   138  				} else if tp, ok := path.(*ProvisioningApprovalRequest_FieldSubPath); ok {
   139  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   140  				}
   141  			} else {
   142  				result.Paths = append(result.Paths, path)
   143  			}
   144  		}
   145  	}
   146  	for selector, mySubMask := range mySubMasks {
   147  		if mySubMask.PathsCount() > 0 {
   148  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   149  				result.Paths = append(result.Paths, &ProvisioningApprovalRequest_FieldSubPath{selector: selector, subPath: allowedPath})
   150  			}
   151  		}
   152  	}
   153  
   154  	if len(result.Paths) == 0 {
   155  		return nil
   156  	}
   157  	return result
   158  }
   159  
   160  func (fieldMask *ProvisioningApprovalRequest_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   161  	return fieldMask.Subtract(other.(*ProvisioningApprovalRequest_FieldMask))
   162  }
   163  
   164  // FilterInputFields generates copy of field paths with output_only field paths removed
   165  func (fieldMask *ProvisioningApprovalRequest_FieldMask) FilterInputFields() *ProvisioningApprovalRequest_FieldMask {
   166  	result := &ProvisioningApprovalRequest_FieldMask{}
   167  	for _, path := range fieldMask.Paths {
   168  		switch path.Selector() {
   169  		case ProvisioningApprovalRequest_FieldPathSelectorMetadata:
   170  			if _, ok := path.(*ProvisioningApprovalRequest_FieldTerminalPath); ok {
   171  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   172  					result.Paths = append(result.Paths, &ProvisioningApprovalRequest_FieldSubPath{selector: path.Selector(), subPath: subpath})
   173  				}
   174  			} else if sub, ok := path.(*ProvisioningApprovalRequest_FieldSubPath); ok {
   175  				selectedMask := &meta.Meta_FieldMask{
   176  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   177  				}
   178  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   179  					result.Paths = append(result.Paths, &ProvisioningApprovalRequest_FieldSubPath{selector: ProvisioningApprovalRequest_FieldPathSelectorMetadata, subPath: allowedPath})
   180  				}
   181  			}
   182  		default:
   183  			result.Paths = append(result.Paths, path)
   184  		}
   185  	}
   186  	return result
   187  }
   188  
   189  // ToFieldMask is used for proto conversions
   190  func (fieldMask *ProvisioningApprovalRequest_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   191  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   192  	for _, path := range fieldMask.Paths {
   193  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   194  	}
   195  	return protoFieldMask
   196  }
   197  
   198  func (fieldMask *ProvisioningApprovalRequest_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   199  	if fieldMask == nil {
   200  		return status.Error(codes.Internal, "target field mask is nil")
   201  	}
   202  	fieldMask.Paths = make([]ProvisioningApprovalRequest_FieldPath, 0, len(protoFieldMask.Paths))
   203  	for _, strPath := range protoFieldMask.Paths {
   204  		path, err := ParseProvisioningApprovalRequest_FieldPath(strPath)
   205  		if err != nil {
   206  			return err
   207  		}
   208  		fieldMask.Paths = append(fieldMask.Paths, path)
   209  	}
   210  	return nil
   211  }
   212  
   213  // implement methods required by customType
   214  func (fieldMask ProvisioningApprovalRequest_FieldMask) Marshal() ([]byte, error) {
   215  	protoFieldMask := fieldMask.ToProtoFieldMask()
   216  	return proto.Marshal(protoFieldMask)
   217  }
   218  
   219  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Unmarshal(data []byte) error {
   220  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   221  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   222  		return err
   223  	}
   224  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   225  		return err
   226  	}
   227  	return nil
   228  }
   229  
   230  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Size() int {
   231  	return proto.Size(fieldMask.ToProtoFieldMask())
   232  }
   233  
   234  func (fieldMask ProvisioningApprovalRequest_FieldMask) MarshalJSON() ([]byte, error) {
   235  	return json.Marshal(fieldMask.ToProtoFieldMask())
   236  }
   237  
   238  func (fieldMask *ProvisioningApprovalRequest_FieldMask) UnmarshalJSON(data []byte) error {
   239  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   240  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   241  		return err
   242  	}
   243  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   244  		return err
   245  	}
   246  	return nil
   247  }
   248  
   249  func (fieldMask *ProvisioningApprovalRequest_FieldMask) AppendPath(path ProvisioningApprovalRequest_FieldPath) {
   250  	fieldMask.Paths = append(fieldMask.Paths, path)
   251  }
   252  
   253  func (fieldMask *ProvisioningApprovalRequest_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   254  	fieldMask.Paths = append(fieldMask.Paths, path.(ProvisioningApprovalRequest_FieldPath))
   255  }
   256  
   257  func (fieldMask *ProvisioningApprovalRequest_FieldMask) GetPaths() []ProvisioningApprovalRequest_FieldPath {
   258  	if fieldMask == nil {
   259  		return nil
   260  	}
   261  	return fieldMask.Paths
   262  }
   263  
   264  func (fieldMask *ProvisioningApprovalRequest_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   265  	if fieldMask == nil {
   266  		return nil
   267  	}
   268  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   269  	for _, path := range fieldMask.Paths {
   270  		rawPaths = append(rawPaths, path)
   271  	}
   272  	return rawPaths
   273  }
   274  
   275  func (fieldMask *ProvisioningApprovalRequest_FieldMask) SetFromCliFlag(raw string) error {
   276  	path, err := ParseProvisioningApprovalRequest_FieldPath(raw)
   277  	if err != nil {
   278  		return err
   279  	}
   280  	fieldMask.Paths = append(fieldMask.Paths, path)
   281  	return nil
   282  }
   283  
   284  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Set(target, source *ProvisioningApprovalRequest) {
   285  	for _, path := range fieldMask.Paths {
   286  		val, _ := path.GetSingle(source)
   287  		// if val is nil, then field does not exist in source, skip
   288  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   289  		if val != nil {
   290  			path.WithIValue(val).SetTo(&target)
   291  		}
   292  	}
   293  }
   294  
   295  func (fieldMask *ProvisioningApprovalRequest_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   296  	fieldMask.Set(target.(*ProvisioningApprovalRequest), source.(*ProvisioningApprovalRequest))
   297  }
   298  
   299  func (fieldMask *ProvisioningApprovalRequest_FieldMask) Project(source *ProvisioningApprovalRequest) *ProvisioningApprovalRequest {
   300  	if source == nil {
   301  		return nil
   302  	}
   303  	if fieldMask == nil {
   304  		return source
   305  	}
   306  	result := &ProvisioningApprovalRequest{}
   307  	specMask := &ProvisioningApprovalRequest_Spec_FieldMask{}
   308  	wholeSpecAccepted := false
   309  	statusMask := &ProvisioningApprovalRequest_Status_FieldMask{}
   310  	wholeStatusAccepted := false
   311  	metadataMask := &meta.Meta_FieldMask{}
   312  	wholeMetadataAccepted := false
   313  
   314  	for _, p := range fieldMask.Paths {
   315  		switch tp := p.(type) {
   316  		case *ProvisioningApprovalRequest_FieldTerminalPath:
   317  			switch tp.selector {
   318  			case ProvisioningApprovalRequest_FieldPathSelectorName:
   319  				result.Name = source.Name
   320  			case ProvisioningApprovalRequest_FieldPathSelectorSpec:
   321  				result.Spec = source.Spec
   322  				wholeSpecAccepted = true
   323  			case ProvisioningApprovalRequest_FieldPathSelectorStatus:
   324  				result.Status = source.Status
   325  				wholeStatusAccepted = true
   326  			case ProvisioningApprovalRequest_FieldPathSelectorMetadata:
   327  				result.Metadata = source.Metadata
   328  				wholeMetadataAccepted = true
   329  			}
   330  		case *ProvisioningApprovalRequest_FieldSubPath:
   331  			switch tp.selector {
   332  			case ProvisioningApprovalRequest_FieldPathSelectorSpec:
   333  				specMask.AppendPath(tp.subPath.(ProvisioningApprovalRequestSpec_FieldPath))
   334  			case ProvisioningApprovalRequest_FieldPathSelectorStatus:
   335  				statusMask.AppendPath(tp.subPath.(ProvisioningApprovalRequestStatus_FieldPath))
   336  			case ProvisioningApprovalRequest_FieldPathSelectorMetadata:
   337  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   338  			}
   339  		}
   340  	}
   341  	if wholeSpecAccepted == false && len(specMask.Paths) > 0 {
   342  		result.Spec = specMask.Project(source.GetSpec())
   343  	}
   344  	if wholeStatusAccepted == false && len(statusMask.Paths) > 0 {
   345  		result.Status = statusMask.Project(source.GetStatus())
   346  	}
   347  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   348  		result.Metadata = metadataMask.Project(source.GetMetadata())
   349  	}
   350  	return result
   351  }
   352  
   353  func (fieldMask *ProvisioningApprovalRequest_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   354  	return fieldMask.Project(source.(*ProvisioningApprovalRequest))
   355  }
   356  
   357  func (fieldMask *ProvisioningApprovalRequest_FieldMask) PathsCount() int {
   358  	if fieldMask == nil {
   359  		return 0
   360  	}
   361  	return len(fieldMask.Paths)
   362  }
   363  
   364  type ProvisioningApprovalRequest_Spec_FieldMask struct {
   365  	Paths []ProvisioningApprovalRequestSpec_FieldPath
   366  }
   367  
   368  func FullProvisioningApprovalRequest_Spec_FieldMask() *ProvisioningApprovalRequest_Spec_FieldMask {
   369  	res := &ProvisioningApprovalRequest_Spec_FieldMask{}
   370  	res.Paths = append(res.Paths, &ProvisioningApprovalRequestSpec_FieldTerminalPath{selector: ProvisioningApprovalRequestSpec_FieldPathSelectorConclusion})
   371  	res.Paths = append(res.Paths, &ProvisioningApprovalRequestSpec_FieldTerminalPath{selector: ProvisioningApprovalRequestSpec_FieldPathSelectorServiceAccount})
   372  	return res
   373  }
   374  
   375  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) String() string {
   376  	if fieldMask == nil {
   377  		return "<nil>"
   378  	}
   379  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   380  	for _, path := range fieldMask.Paths {
   381  		pathsStr = append(pathsStr, path.String())
   382  	}
   383  	return strings.Join(pathsStr, ", ")
   384  }
   385  
   386  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) IsFull() bool {
   387  	if fieldMask == nil {
   388  		return false
   389  	}
   390  	presentSelectors := make([]bool, 2)
   391  	for _, path := range fieldMask.Paths {
   392  		if asFinal, ok := path.(*ProvisioningApprovalRequestSpec_FieldTerminalPath); ok {
   393  			presentSelectors[int(asFinal.selector)] = true
   394  		}
   395  	}
   396  	for _, flag := range presentSelectors {
   397  		if !flag {
   398  			return false
   399  		}
   400  	}
   401  	return true
   402  }
   403  
   404  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) ProtoReflect() preflect.Message {
   405  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   406  		return ParseProvisioningApprovalRequestSpec_FieldPath(raw)
   407  	})
   408  }
   409  
   410  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) ProtoMessage() {}
   411  
   412  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Reset() {
   413  	if fieldMask != nil {
   414  		fieldMask.Paths = nil
   415  	}
   416  }
   417  
   418  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Subtract(other *ProvisioningApprovalRequest_Spec_FieldMask) *ProvisioningApprovalRequest_Spec_FieldMask {
   419  	result := &ProvisioningApprovalRequest_Spec_FieldMask{}
   420  	removedSelectors := make([]bool, 2)
   421  
   422  	for _, path := range other.GetPaths() {
   423  		switch tp := path.(type) {
   424  		case *ProvisioningApprovalRequestSpec_FieldTerminalPath:
   425  			removedSelectors[int(tp.selector)] = true
   426  		}
   427  	}
   428  	for _, path := range fieldMask.GetPaths() {
   429  		if !removedSelectors[int(path.Selector())] {
   430  			result.Paths = append(result.Paths, path)
   431  		}
   432  	}
   433  
   434  	if len(result.Paths) == 0 {
   435  		return nil
   436  	}
   437  	return result
   438  }
   439  
   440  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   441  	return fieldMask.Subtract(other.(*ProvisioningApprovalRequest_Spec_FieldMask))
   442  }
   443  
   444  // FilterInputFields generates copy of field paths with output_only field paths removed
   445  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) FilterInputFields() *ProvisioningApprovalRequest_Spec_FieldMask {
   446  	result := &ProvisioningApprovalRequest_Spec_FieldMask{}
   447  	result.Paths = append(result.Paths, fieldMask.Paths...)
   448  	return result
   449  }
   450  
   451  // ToFieldMask is used for proto conversions
   452  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   453  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   454  	for _, path := range fieldMask.Paths {
   455  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   456  	}
   457  	return protoFieldMask
   458  }
   459  
   460  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   461  	if fieldMask == nil {
   462  		return status.Error(codes.Internal, "target field mask is nil")
   463  	}
   464  	fieldMask.Paths = make([]ProvisioningApprovalRequestSpec_FieldPath, 0, len(protoFieldMask.Paths))
   465  	for _, strPath := range protoFieldMask.Paths {
   466  		path, err := ParseProvisioningApprovalRequestSpec_FieldPath(strPath)
   467  		if err != nil {
   468  			return err
   469  		}
   470  		fieldMask.Paths = append(fieldMask.Paths, path)
   471  	}
   472  	return nil
   473  }
   474  
   475  // implement methods required by customType
   476  func (fieldMask ProvisioningApprovalRequest_Spec_FieldMask) Marshal() ([]byte, error) {
   477  	protoFieldMask := fieldMask.ToProtoFieldMask()
   478  	return proto.Marshal(protoFieldMask)
   479  }
   480  
   481  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Unmarshal(data []byte) error {
   482  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   483  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   484  		return err
   485  	}
   486  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   487  		return err
   488  	}
   489  	return nil
   490  }
   491  
   492  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Size() int {
   493  	return proto.Size(fieldMask.ToProtoFieldMask())
   494  }
   495  
   496  func (fieldMask ProvisioningApprovalRequest_Spec_FieldMask) MarshalJSON() ([]byte, error) {
   497  	return json.Marshal(fieldMask.ToProtoFieldMask())
   498  }
   499  
   500  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) UnmarshalJSON(data []byte) error {
   501  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   502  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   503  		return err
   504  	}
   505  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   506  		return err
   507  	}
   508  	return nil
   509  }
   510  
   511  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) AppendPath(path ProvisioningApprovalRequestSpec_FieldPath) {
   512  	fieldMask.Paths = append(fieldMask.Paths, path)
   513  }
   514  
   515  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   516  	fieldMask.Paths = append(fieldMask.Paths, path.(ProvisioningApprovalRequestSpec_FieldPath))
   517  }
   518  
   519  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) GetPaths() []ProvisioningApprovalRequestSpec_FieldPath {
   520  	if fieldMask == nil {
   521  		return nil
   522  	}
   523  	return fieldMask.Paths
   524  }
   525  
   526  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   527  	if fieldMask == nil {
   528  		return nil
   529  	}
   530  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   531  	for _, path := range fieldMask.Paths {
   532  		rawPaths = append(rawPaths, path)
   533  	}
   534  	return rawPaths
   535  }
   536  
   537  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) SetFromCliFlag(raw string) error {
   538  	path, err := ParseProvisioningApprovalRequestSpec_FieldPath(raw)
   539  	if err != nil {
   540  		return err
   541  	}
   542  	fieldMask.Paths = append(fieldMask.Paths, path)
   543  	return nil
   544  }
   545  
   546  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Set(target, source *ProvisioningApprovalRequest_Spec) {
   547  	for _, path := range fieldMask.Paths {
   548  		val, _ := path.GetSingle(source)
   549  		// if val is nil, then field does not exist in source, skip
   550  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   551  		if val != nil {
   552  			path.WithIValue(val).SetTo(&target)
   553  		}
   554  	}
   555  }
   556  
   557  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   558  	fieldMask.Set(target.(*ProvisioningApprovalRequest_Spec), source.(*ProvisioningApprovalRequest_Spec))
   559  }
   560  
   561  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) Project(source *ProvisioningApprovalRequest_Spec) *ProvisioningApprovalRequest_Spec {
   562  	if source == nil {
   563  		return nil
   564  	}
   565  	if fieldMask == nil {
   566  		return source
   567  	}
   568  	result := &ProvisioningApprovalRequest_Spec{}
   569  
   570  	for _, p := range fieldMask.Paths {
   571  		switch tp := p.(type) {
   572  		case *ProvisioningApprovalRequestSpec_FieldTerminalPath:
   573  			switch tp.selector {
   574  			case ProvisioningApprovalRequestSpec_FieldPathSelectorConclusion:
   575  				result.Conclusion = source.Conclusion
   576  			case ProvisioningApprovalRequestSpec_FieldPathSelectorServiceAccount:
   577  				result.ServiceAccount = source.ServiceAccount
   578  			}
   579  		}
   580  	}
   581  	return result
   582  }
   583  
   584  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   585  	return fieldMask.Project(source.(*ProvisioningApprovalRequest_Spec))
   586  }
   587  
   588  func (fieldMask *ProvisioningApprovalRequest_Spec_FieldMask) PathsCount() int {
   589  	if fieldMask == nil {
   590  		return 0
   591  	}
   592  	return len(fieldMask.Paths)
   593  }
   594  
   595  type ProvisioningApprovalRequest_Status_FieldMask struct {
   596  	Paths []ProvisioningApprovalRequestStatus_FieldPath
   597  }
   598  
   599  func FullProvisioningApprovalRequest_Status_FieldMask() *ProvisioningApprovalRequest_Status_FieldMask {
   600  	res := &ProvisioningApprovalRequest_Status_FieldMask{}
   601  	return res
   602  }
   603  
   604  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) String() string {
   605  	if fieldMask == nil {
   606  		return "<nil>"
   607  	}
   608  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   609  	for _, path := range fieldMask.Paths {
   610  		pathsStr = append(pathsStr, path.String())
   611  	}
   612  	return strings.Join(pathsStr, ", ")
   613  }
   614  
   615  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) IsFull() bool {
   616  	if fieldMask == nil {
   617  		return false
   618  	}
   619  	presentSelectors := make([]bool, 0)
   620  	for _, path := range fieldMask.Paths {
   621  		if asFinal, ok := path.(*ProvisioningApprovalRequestStatus_FieldTerminalPath); ok {
   622  			presentSelectors[int(asFinal.selector)] = true
   623  		}
   624  	}
   625  	for _, flag := range presentSelectors {
   626  		if !flag {
   627  			return false
   628  		}
   629  	}
   630  	return true
   631  }
   632  
   633  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) ProtoReflect() preflect.Message {
   634  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   635  		return ParseProvisioningApprovalRequestStatus_FieldPath(raw)
   636  	})
   637  }
   638  
   639  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) ProtoMessage() {}
   640  
   641  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Reset() {
   642  	if fieldMask != nil {
   643  		fieldMask.Paths = nil
   644  	}
   645  }
   646  
   647  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Subtract(other *ProvisioningApprovalRequest_Status_FieldMask) *ProvisioningApprovalRequest_Status_FieldMask {
   648  	result := &ProvisioningApprovalRequest_Status_FieldMask{}
   649  	removedSelectors := make([]bool, 0)
   650  
   651  	for _, path := range other.GetPaths() {
   652  		switch tp := path.(type) {
   653  		case *ProvisioningApprovalRequestStatus_FieldTerminalPath:
   654  			removedSelectors[int(tp.selector)] = true
   655  		}
   656  	}
   657  	for _, path := range fieldMask.GetPaths() {
   658  		if !removedSelectors[int(path.Selector())] {
   659  			result.Paths = append(result.Paths, path)
   660  		}
   661  	}
   662  
   663  	if len(result.Paths) == 0 {
   664  		return nil
   665  	}
   666  	return result
   667  }
   668  
   669  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   670  	return fieldMask.Subtract(other.(*ProvisioningApprovalRequest_Status_FieldMask))
   671  }
   672  
   673  // FilterInputFields generates copy of field paths with output_only field paths removed
   674  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) FilterInputFields() *ProvisioningApprovalRequest_Status_FieldMask {
   675  	result := &ProvisioningApprovalRequest_Status_FieldMask{}
   676  	result.Paths = append(result.Paths, fieldMask.Paths...)
   677  	return result
   678  }
   679  
   680  // ToFieldMask is used for proto conversions
   681  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   682  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   683  	for _, path := range fieldMask.Paths {
   684  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   685  	}
   686  	return protoFieldMask
   687  }
   688  
   689  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   690  	if fieldMask == nil {
   691  		return status.Error(codes.Internal, "target field mask is nil")
   692  	}
   693  	fieldMask.Paths = make([]ProvisioningApprovalRequestStatus_FieldPath, 0, len(protoFieldMask.Paths))
   694  	for _, strPath := range protoFieldMask.Paths {
   695  		path, err := ParseProvisioningApprovalRequestStatus_FieldPath(strPath)
   696  		if err != nil {
   697  			return err
   698  		}
   699  		fieldMask.Paths = append(fieldMask.Paths, path)
   700  	}
   701  	return nil
   702  }
   703  
   704  // implement methods required by customType
   705  func (fieldMask ProvisioningApprovalRequest_Status_FieldMask) Marshal() ([]byte, error) {
   706  	protoFieldMask := fieldMask.ToProtoFieldMask()
   707  	return proto.Marshal(protoFieldMask)
   708  }
   709  
   710  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Unmarshal(data []byte) error {
   711  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   712  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   713  		return err
   714  	}
   715  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   716  		return err
   717  	}
   718  	return nil
   719  }
   720  
   721  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Size() int {
   722  	return proto.Size(fieldMask.ToProtoFieldMask())
   723  }
   724  
   725  func (fieldMask ProvisioningApprovalRequest_Status_FieldMask) MarshalJSON() ([]byte, error) {
   726  	return json.Marshal(fieldMask.ToProtoFieldMask())
   727  }
   728  
   729  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) UnmarshalJSON(data []byte) error {
   730  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   731  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   732  		return err
   733  	}
   734  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   735  		return err
   736  	}
   737  	return nil
   738  }
   739  
   740  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) AppendPath(path ProvisioningApprovalRequestStatus_FieldPath) {
   741  	fieldMask.Paths = append(fieldMask.Paths, path)
   742  }
   743  
   744  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   745  	fieldMask.Paths = append(fieldMask.Paths, path.(ProvisioningApprovalRequestStatus_FieldPath))
   746  }
   747  
   748  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) GetPaths() []ProvisioningApprovalRequestStatus_FieldPath {
   749  	if fieldMask == nil {
   750  		return nil
   751  	}
   752  	return fieldMask.Paths
   753  }
   754  
   755  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   756  	if fieldMask == nil {
   757  		return nil
   758  	}
   759  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   760  	for _, path := range fieldMask.Paths {
   761  		rawPaths = append(rawPaths, path)
   762  	}
   763  	return rawPaths
   764  }
   765  
   766  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) SetFromCliFlag(raw string) error {
   767  	path, err := ParseProvisioningApprovalRequestStatus_FieldPath(raw)
   768  	if err != nil {
   769  		return err
   770  	}
   771  	fieldMask.Paths = append(fieldMask.Paths, path)
   772  	return nil
   773  }
   774  
   775  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Set(target, source *ProvisioningApprovalRequest_Status) {
   776  	for _, path := range fieldMask.Paths {
   777  		val, _ := path.GetSingle(source)
   778  		// if val is nil, then field does not exist in source, skip
   779  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   780  		if val != nil {
   781  			path.WithIValue(val).SetTo(&target)
   782  		}
   783  	}
   784  }
   785  
   786  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   787  	fieldMask.Set(target.(*ProvisioningApprovalRequest_Status), source.(*ProvisioningApprovalRequest_Status))
   788  }
   789  
   790  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) Project(source *ProvisioningApprovalRequest_Status) *ProvisioningApprovalRequest_Status {
   791  	if source == nil {
   792  		return nil
   793  	}
   794  	if fieldMask == nil {
   795  		return source
   796  	}
   797  	result := &ProvisioningApprovalRequest_Status{}
   798  
   799  	for _, p := range fieldMask.Paths {
   800  		switch tp := p.(type) {
   801  		case *ProvisioningApprovalRequestStatus_FieldTerminalPath:
   802  			switch tp.selector {
   803  			}
   804  		}
   805  	}
   806  	return result
   807  }
   808  
   809  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   810  	return fieldMask.Project(source.(*ProvisioningApprovalRequest_Status))
   811  }
   812  
   813  func (fieldMask *ProvisioningApprovalRequest_Status_FieldMask) PathsCount() int {
   814  	if fieldMask == nil {
   815  		return 0
   816  	}
   817  	return len(fieldMask.Paths)
   818  }