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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/audit/proto/v1alpha2/resource_change_log.proto
     3  // DO NOT EDIT!!!
     4  
     5  package resource_change_log
     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  	common "github.com/cloudwan/edgelq-sdk/audit/resources/v1alpha2/common"
    23  	iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/organization"
    24  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/project"
    25  	anypb "google.golang.org/protobuf/types/known/anypb"
    26  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    27  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    28  )
    29  
    30  // ensure the imports are used
    31  var (
    32  	_ = new(json.Marshaler)
    33  	_ = strings.Builder{}
    34  
    35  	_ = codes.NotFound
    36  	_ = status.Status{}
    37  	_ = new(proto.Message)
    38  	_ = new(preflect.Message)
    39  	_ = googlefieldmaskpb.FieldMask{}
    40  
    41  	_ = new(gotenobject.FieldMask)
    42  )
    43  
    44  // make sure we're using proto imports
    45  var (
    46  	_ = &common.Authentication{}
    47  	_ = &iam_organization.Organization{}
    48  	_ = &iam_project.Project{}
    49  	_ = &anypb.Any{}
    50  	_ = &fieldmaskpb.FieldMask{}
    51  	_ = &timestamppb.Timestamp{}
    52  )
    53  
    54  type ResourceChangeLog_FieldMask struct {
    55  	Paths []ResourceChangeLog_FieldPath
    56  }
    57  
    58  func FullResourceChangeLog_FieldMask() *ResourceChangeLog_FieldMask {
    59  	res := &ResourceChangeLog_FieldMask{}
    60  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorName})
    61  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorScope})
    62  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorRequestId})
    63  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorTimestamp})
    64  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorAuthentication})
    65  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorService})
    66  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorResource})
    67  	res.Paths = append(res.Paths, &ResourceChangeLog_FieldTerminalPath{selector: ResourceChangeLog_FieldPathSelectorTransaction})
    68  	return res
    69  }
    70  
    71  func (fieldMask *ResourceChangeLog_FieldMask) String() string {
    72  	if fieldMask == nil {
    73  		return "<nil>"
    74  	}
    75  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    76  	for _, path := range fieldMask.Paths {
    77  		pathsStr = append(pathsStr, path.String())
    78  	}
    79  	return strings.Join(pathsStr, ", ")
    80  }
    81  
    82  func (fieldMask *ResourceChangeLog_FieldMask) IsFull() bool {
    83  	if fieldMask == nil {
    84  		return false
    85  	}
    86  	presentSelectors := make([]bool, 8)
    87  	for _, path := range fieldMask.Paths {
    88  		if asFinal, ok := path.(*ResourceChangeLog_FieldTerminalPath); ok {
    89  			presentSelectors[int(asFinal.selector)] = true
    90  		}
    91  	}
    92  	for _, flag := range presentSelectors {
    93  		if !flag {
    94  			return false
    95  		}
    96  	}
    97  	return true
    98  }
    99  
   100  func (fieldMask *ResourceChangeLog_FieldMask) ProtoReflect() preflect.Message {
   101  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   102  		return ParseResourceChangeLog_FieldPath(raw)
   103  	})
   104  }
   105  
   106  func (fieldMask *ResourceChangeLog_FieldMask) ProtoMessage() {}
   107  
   108  func (fieldMask *ResourceChangeLog_FieldMask) Reset() {
   109  	if fieldMask != nil {
   110  		fieldMask.Paths = nil
   111  	}
   112  }
   113  
   114  func (fieldMask *ResourceChangeLog_FieldMask) Subtract(other *ResourceChangeLog_FieldMask) *ResourceChangeLog_FieldMask {
   115  	result := &ResourceChangeLog_FieldMask{}
   116  	removedSelectors := make([]bool, 8)
   117  	otherSubMasks := map[ResourceChangeLog_FieldPathSelector]gotenobject.FieldMask{
   118  		ResourceChangeLog_FieldPathSelectorAuthentication: &common.Authentication_FieldMask{},
   119  		ResourceChangeLog_FieldPathSelectorService:        &common.ServiceData_FieldMask{},
   120  		ResourceChangeLog_FieldPathSelectorResource:       &ResourceChangeLog_ResourceChange_FieldMask{},
   121  		ResourceChangeLog_FieldPathSelectorTransaction:    &ResourceChangeLog_TransactionInfo_FieldMask{},
   122  	}
   123  	mySubMasks := map[ResourceChangeLog_FieldPathSelector]gotenobject.FieldMask{
   124  		ResourceChangeLog_FieldPathSelectorAuthentication: &common.Authentication_FieldMask{},
   125  		ResourceChangeLog_FieldPathSelectorService:        &common.ServiceData_FieldMask{},
   126  		ResourceChangeLog_FieldPathSelectorResource:       &ResourceChangeLog_ResourceChange_FieldMask{},
   127  		ResourceChangeLog_FieldPathSelectorTransaction:    &ResourceChangeLog_TransactionInfo_FieldMask{},
   128  	}
   129  
   130  	for _, path := range other.GetPaths() {
   131  		switch tp := path.(type) {
   132  		case *ResourceChangeLog_FieldTerminalPath:
   133  			removedSelectors[int(tp.selector)] = true
   134  		case *ResourceChangeLog_FieldSubPath:
   135  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   136  		}
   137  	}
   138  	for _, path := range fieldMask.GetPaths() {
   139  		if !removedSelectors[int(path.Selector())] {
   140  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   141  				if tp, ok := path.(*ResourceChangeLog_FieldTerminalPath); ok {
   142  					switch tp.selector {
   143  					case ResourceChangeLog_FieldPathSelectorAuthentication:
   144  						mySubMasks[ResourceChangeLog_FieldPathSelectorAuthentication] = common.FullAuthentication_FieldMask()
   145  					case ResourceChangeLog_FieldPathSelectorService:
   146  						mySubMasks[ResourceChangeLog_FieldPathSelectorService] = common.FullServiceData_FieldMask()
   147  					case ResourceChangeLog_FieldPathSelectorResource:
   148  						mySubMasks[ResourceChangeLog_FieldPathSelectorResource] = FullResourceChangeLog_ResourceChange_FieldMask()
   149  					case ResourceChangeLog_FieldPathSelectorTransaction:
   150  						mySubMasks[ResourceChangeLog_FieldPathSelectorTransaction] = FullResourceChangeLog_TransactionInfo_FieldMask()
   151  					}
   152  				} else if tp, ok := path.(*ResourceChangeLog_FieldSubPath); ok {
   153  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   154  				}
   155  			} else {
   156  				result.Paths = append(result.Paths, path)
   157  			}
   158  		}
   159  	}
   160  	for selector, mySubMask := range mySubMasks {
   161  		if mySubMask.PathsCount() > 0 {
   162  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   163  				result.Paths = append(result.Paths, &ResourceChangeLog_FieldSubPath{selector: selector, subPath: allowedPath})
   164  			}
   165  		}
   166  	}
   167  
   168  	if len(result.Paths) == 0 {
   169  		return nil
   170  	}
   171  	return result
   172  }
   173  
   174  func (fieldMask *ResourceChangeLog_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   175  	return fieldMask.Subtract(other.(*ResourceChangeLog_FieldMask))
   176  }
   177  
   178  // FilterInputFields generates copy of field paths with output_only field paths removed
   179  func (fieldMask *ResourceChangeLog_FieldMask) FilterInputFields() *ResourceChangeLog_FieldMask {
   180  	result := &ResourceChangeLog_FieldMask{}
   181  	result.Paths = append(result.Paths, fieldMask.Paths...)
   182  	return result
   183  }
   184  
   185  // ToFieldMask is used for proto conversions
   186  func (fieldMask *ResourceChangeLog_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   187  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   188  	for _, path := range fieldMask.Paths {
   189  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   190  	}
   191  	return protoFieldMask
   192  }
   193  
   194  func (fieldMask *ResourceChangeLog_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   195  	if fieldMask == nil {
   196  		return status.Error(codes.Internal, "target field mask is nil")
   197  	}
   198  	fieldMask.Paths = make([]ResourceChangeLog_FieldPath, 0, len(protoFieldMask.Paths))
   199  	for _, strPath := range protoFieldMask.Paths {
   200  		path, err := ParseResourceChangeLog_FieldPath(strPath)
   201  		if err != nil {
   202  			return err
   203  		}
   204  		fieldMask.Paths = append(fieldMask.Paths, path)
   205  	}
   206  	return nil
   207  }
   208  
   209  // implement methods required by customType
   210  func (fieldMask ResourceChangeLog_FieldMask) Marshal() ([]byte, error) {
   211  	protoFieldMask := fieldMask.ToProtoFieldMask()
   212  	return proto.Marshal(protoFieldMask)
   213  }
   214  
   215  func (fieldMask *ResourceChangeLog_FieldMask) Unmarshal(data []byte) error {
   216  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   217  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   218  		return err
   219  	}
   220  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   221  		return err
   222  	}
   223  	return nil
   224  }
   225  
   226  func (fieldMask *ResourceChangeLog_FieldMask) Size() int {
   227  	return proto.Size(fieldMask.ToProtoFieldMask())
   228  }
   229  
   230  func (fieldMask ResourceChangeLog_FieldMask) MarshalJSON() ([]byte, error) {
   231  	return json.Marshal(fieldMask.ToProtoFieldMask())
   232  }
   233  
   234  func (fieldMask *ResourceChangeLog_FieldMask) UnmarshalJSON(data []byte) error {
   235  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   236  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   237  		return err
   238  	}
   239  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   240  		return err
   241  	}
   242  	return nil
   243  }
   244  
   245  func (fieldMask *ResourceChangeLog_FieldMask) AppendPath(path ResourceChangeLog_FieldPath) {
   246  	fieldMask.Paths = append(fieldMask.Paths, path)
   247  }
   248  
   249  func (fieldMask *ResourceChangeLog_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   250  	fieldMask.Paths = append(fieldMask.Paths, path.(ResourceChangeLog_FieldPath))
   251  }
   252  
   253  func (fieldMask *ResourceChangeLog_FieldMask) GetPaths() []ResourceChangeLog_FieldPath {
   254  	if fieldMask == nil {
   255  		return nil
   256  	}
   257  	return fieldMask.Paths
   258  }
   259  
   260  func (fieldMask *ResourceChangeLog_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   261  	if fieldMask == nil {
   262  		return nil
   263  	}
   264  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   265  	for _, path := range fieldMask.Paths {
   266  		rawPaths = append(rawPaths, path)
   267  	}
   268  	return rawPaths
   269  }
   270  
   271  func (fieldMask *ResourceChangeLog_FieldMask) SetFromCliFlag(raw string) error {
   272  	path, err := ParseResourceChangeLog_FieldPath(raw)
   273  	if err != nil {
   274  		return err
   275  	}
   276  	fieldMask.Paths = append(fieldMask.Paths, path)
   277  	return nil
   278  }
   279  
   280  func (fieldMask *ResourceChangeLog_FieldMask) Set(target, source *ResourceChangeLog) {
   281  	for _, path := range fieldMask.Paths {
   282  		val, _ := path.GetSingle(source)
   283  		// if val is nil, then field does not exist in source, skip
   284  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   285  		if val != nil {
   286  			path.WithIValue(val).SetTo(&target)
   287  		}
   288  	}
   289  }
   290  
   291  func (fieldMask *ResourceChangeLog_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   292  	fieldMask.Set(target.(*ResourceChangeLog), source.(*ResourceChangeLog))
   293  }
   294  
   295  func (fieldMask *ResourceChangeLog_FieldMask) Project(source *ResourceChangeLog) *ResourceChangeLog {
   296  	if source == nil {
   297  		return nil
   298  	}
   299  	if fieldMask == nil {
   300  		return source
   301  	}
   302  	result := &ResourceChangeLog{}
   303  	authenticationMask := &common.Authentication_FieldMask{}
   304  	wholeAuthenticationAccepted := false
   305  	serviceMask := &common.ServiceData_FieldMask{}
   306  	wholeServiceAccepted := false
   307  	resourceMask := &ResourceChangeLog_ResourceChange_FieldMask{}
   308  	wholeResourceAccepted := false
   309  	transactionMask := &ResourceChangeLog_TransactionInfo_FieldMask{}
   310  	wholeTransactionAccepted := false
   311  
   312  	for _, p := range fieldMask.Paths {
   313  		switch tp := p.(type) {
   314  		case *ResourceChangeLog_FieldTerminalPath:
   315  			switch tp.selector {
   316  			case ResourceChangeLog_FieldPathSelectorName:
   317  				result.Name = source.Name
   318  			case ResourceChangeLog_FieldPathSelectorScope:
   319  				result.Scope = source.Scope
   320  			case ResourceChangeLog_FieldPathSelectorRequestId:
   321  				result.RequestId = source.RequestId
   322  			case ResourceChangeLog_FieldPathSelectorTimestamp:
   323  				result.Timestamp = source.Timestamp
   324  			case ResourceChangeLog_FieldPathSelectorAuthentication:
   325  				result.Authentication = source.Authentication
   326  				wholeAuthenticationAccepted = true
   327  			case ResourceChangeLog_FieldPathSelectorService:
   328  				result.Service = source.Service
   329  				wholeServiceAccepted = true
   330  			case ResourceChangeLog_FieldPathSelectorResource:
   331  				result.Resource = source.Resource
   332  				wholeResourceAccepted = true
   333  			case ResourceChangeLog_FieldPathSelectorTransaction:
   334  				result.Transaction = source.Transaction
   335  				wholeTransactionAccepted = true
   336  			}
   337  		case *ResourceChangeLog_FieldSubPath:
   338  			switch tp.selector {
   339  			case ResourceChangeLog_FieldPathSelectorAuthentication:
   340  				authenticationMask.AppendPath(tp.subPath.(common.Authentication_FieldPath))
   341  			case ResourceChangeLog_FieldPathSelectorService:
   342  				serviceMask.AppendPath(tp.subPath.(common.ServiceData_FieldPath))
   343  			case ResourceChangeLog_FieldPathSelectorResource:
   344  				resourceMask.AppendPath(tp.subPath.(ResourceChangeLogResourceChange_FieldPath))
   345  			case ResourceChangeLog_FieldPathSelectorTransaction:
   346  				transactionMask.AppendPath(tp.subPath.(ResourceChangeLogTransactionInfo_FieldPath))
   347  			}
   348  		}
   349  	}
   350  	if wholeAuthenticationAccepted == false && len(authenticationMask.Paths) > 0 {
   351  		result.Authentication = authenticationMask.Project(source.GetAuthentication())
   352  	}
   353  	if wholeServiceAccepted == false && len(serviceMask.Paths) > 0 {
   354  		result.Service = serviceMask.Project(source.GetService())
   355  	}
   356  	if wholeResourceAccepted == false && len(resourceMask.Paths) > 0 {
   357  		result.Resource = resourceMask.Project(source.GetResource())
   358  	}
   359  	if wholeTransactionAccepted == false && len(transactionMask.Paths) > 0 {
   360  		result.Transaction = transactionMask.Project(source.GetTransaction())
   361  	}
   362  	return result
   363  }
   364  
   365  func (fieldMask *ResourceChangeLog_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   366  	return fieldMask.Project(source.(*ResourceChangeLog))
   367  }
   368  
   369  func (fieldMask *ResourceChangeLog_FieldMask) PathsCount() int {
   370  	if fieldMask == nil {
   371  		return 0
   372  	}
   373  	return len(fieldMask.Paths)
   374  }
   375  
   376  type ResourceChangeLog_ResourceChange_FieldMask struct {
   377  	Paths []ResourceChangeLogResourceChange_FieldPath
   378  }
   379  
   380  func FullResourceChangeLog_ResourceChange_FieldMask() *ResourceChangeLog_ResourceChange_FieldMask {
   381  	res := &ResourceChangeLog_ResourceChange_FieldMask{}
   382  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorName})
   383  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorType})
   384  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorAction})
   385  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorUpdatedFields})
   386  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorPrevious})
   387  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorCurrent})
   388  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorLabels})
   389  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorPre})
   390  	res.Paths = append(res.Paths, &ResourceChangeLogResourceChange_FieldTerminalPath{selector: ResourceChangeLogResourceChange_FieldPathSelectorPost})
   391  	return res
   392  }
   393  
   394  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) String() string {
   395  	if fieldMask == nil {
   396  		return "<nil>"
   397  	}
   398  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   399  	for _, path := range fieldMask.Paths {
   400  		pathsStr = append(pathsStr, path.String())
   401  	}
   402  	return strings.Join(pathsStr, ", ")
   403  }
   404  
   405  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) IsFull() bool {
   406  	if fieldMask == nil {
   407  		return false
   408  	}
   409  	presentSelectors := make([]bool, 9)
   410  	for _, path := range fieldMask.Paths {
   411  		if asFinal, ok := path.(*ResourceChangeLogResourceChange_FieldTerminalPath); ok {
   412  			presentSelectors[int(asFinal.selector)] = true
   413  		}
   414  	}
   415  	for _, flag := range presentSelectors {
   416  		if !flag {
   417  			return false
   418  		}
   419  	}
   420  	return true
   421  }
   422  
   423  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) ProtoReflect() preflect.Message {
   424  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   425  		return ParseResourceChangeLogResourceChange_FieldPath(raw)
   426  	})
   427  }
   428  
   429  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) ProtoMessage() {}
   430  
   431  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Reset() {
   432  	if fieldMask != nil {
   433  		fieldMask.Paths = nil
   434  	}
   435  }
   436  
   437  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Subtract(other *ResourceChangeLog_ResourceChange_FieldMask) *ResourceChangeLog_ResourceChange_FieldMask {
   438  	result := &ResourceChangeLog_ResourceChange_FieldMask{}
   439  	removedSelectors := make([]bool, 9)
   440  	otherSubMasks := map[ResourceChangeLogResourceChange_FieldPathSelector]gotenobject.FieldMask{
   441  		ResourceChangeLogResourceChange_FieldPathSelectorPre:  &common.ObjectState_FieldMask{},
   442  		ResourceChangeLogResourceChange_FieldPathSelectorPost: &common.ObjectState_FieldMask{},
   443  	}
   444  	mySubMasks := map[ResourceChangeLogResourceChange_FieldPathSelector]gotenobject.FieldMask{
   445  		ResourceChangeLogResourceChange_FieldPathSelectorPre:  &common.ObjectState_FieldMask{},
   446  		ResourceChangeLogResourceChange_FieldPathSelectorPost: &common.ObjectState_FieldMask{},
   447  	}
   448  
   449  	for _, path := range other.GetPaths() {
   450  		switch tp := path.(type) {
   451  		case *ResourceChangeLogResourceChange_FieldTerminalPath:
   452  			removedSelectors[int(tp.selector)] = true
   453  		case *ResourceChangeLogResourceChange_FieldSubPath:
   454  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   455  		}
   456  	}
   457  	for _, path := range fieldMask.GetPaths() {
   458  		if !removedSelectors[int(path.Selector())] {
   459  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   460  				if tp, ok := path.(*ResourceChangeLogResourceChange_FieldTerminalPath); ok {
   461  					switch tp.selector {
   462  					case ResourceChangeLogResourceChange_FieldPathSelectorPre:
   463  						mySubMasks[ResourceChangeLogResourceChange_FieldPathSelectorPre] = common.FullObjectState_FieldMask()
   464  					case ResourceChangeLogResourceChange_FieldPathSelectorPost:
   465  						mySubMasks[ResourceChangeLogResourceChange_FieldPathSelectorPost] = common.FullObjectState_FieldMask()
   466  					}
   467  				} else if tp, ok := path.(*ResourceChangeLogResourceChange_FieldSubPath); ok {
   468  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   469  				}
   470  			} else {
   471  				result.Paths = append(result.Paths, path)
   472  			}
   473  		}
   474  	}
   475  	for selector, mySubMask := range mySubMasks {
   476  		if mySubMask.PathsCount() > 0 {
   477  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   478  				result.Paths = append(result.Paths, &ResourceChangeLogResourceChange_FieldSubPath{selector: selector, subPath: allowedPath})
   479  			}
   480  		}
   481  	}
   482  
   483  	if len(result.Paths) == 0 {
   484  		return nil
   485  	}
   486  	return result
   487  }
   488  
   489  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   490  	return fieldMask.Subtract(other.(*ResourceChangeLog_ResourceChange_FieldMask))
   491  }
   492  
   493  // FilterInputFields generates copy of field paths with output_only field paths removed
   494  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) FilterInputFields() *ResourceChangeLog_ResourceChange_FieldMask {
   495  	result := &ResourceChangeLog_ResourceChange_FieldMask{}
   496  	result.Paths = append(result.Paths, fieldMask.Paths...)
   497  	return result
   498  }
   499  
   500  // ToFieldMask is used for proto conversions
   501  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   502  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   503  	for _, path := range fieldMask.Paths {
   504  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   505  	}
   506  	return protoFieldMask
   507  }
   508  
   509  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   510  	if fieldMask == nil {
   511  		return status.Error(codes.Internal, "target field mask is nil")
   512  	}
   513  	fieldMask.Paths = make([]ResourceChangeLogResourceChange_FieldPath, 0, len(protoFieldMask.Paths))
   514  	for _, strPath := range protoFieldMask.Paths {
   515  		path, err := ParseResourceChangeLogResourceChange_FieldPath(strPath)
   516  		if err != nil {
   517  			return err
   518  		}
   519  		fieldMask.Paths = append(fieldMask.Paths, path)
   520  	}
   521  	return nil
   522  }
   523  
   524  // implement methods required by customType
   525  func (fieldMask ResourceChangeLog_ResourceChange_FieldMask) Marshal() ([]byte, error) {
   526  	protoFieldMask := fieldMask.ToProtoFieldMask()
   527  	return proto.Marshal(protoFieldMask)
   528  }
   529  
   530  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Unmarshal(data []byte) error {
   531  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   532  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   533  		return err
   534  	}
   535  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   536  		return err
   537  	}
   538  	return nil
   539  }
   540  
   541  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Size() int {
   542  	return proto.Size(fieldMask.ToProtoFieldMask())
   543  }
   544  
   545  func (fieldMask ResourceChangeLog_ResourceChange_FieldMask) MarshalJSON() ([]byte, error) {
   546  	return json.Marshal(fieldMask.ToProtoFieldMask())
   547  }
   548  
   549  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) UnmarshalJSON(data []byte) error {
   550  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   551  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   552  		return err
   553  	}
   554  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   555  		return err
   556  	}
   557  	return nil
   558  }
   559  
   560  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) AppendPath(path ResourceChangeLogResourceChange_FieldPath) {
   561  	fieldMask.Paths = append(fieldMask.Paths, path)
   562  }
   563  
   564  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   565  	fieldMask.Paths = append(fieldMask.Paths, path.(ResourceChangeLogResourceChange_FieldPath))
   566  }
   567  
   568  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) GetPaths() []ResourceChangeLogResourceChange_FieldPath {
   569  	if fieldMask == nil {
   570  		return nil
   571  	}
   572  	return fieldMask.Paths
   573  }
   574  
   575  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   576  	if fieldMask == nil {
   577  		return nil
   578  	}
   579  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   580  	for _, path := range fieldMask.Paths {
   581  		rawPaths = append(rawPaths, path)
   582  	}
   583  	return rawPaths
   584  }
   585  
   586  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) SetFromCliFlag(raw string) error {
   587  	path, err := ParseResourceChangeLogResourceChange_FieldPath(raw)
   588  	if err != nil {
   589  		return err
   590  	}
   591  	fieldMask.Paths = append(fieldMask.Paths, path)
   592  	return nil
   593  }
   594  
   595  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Set(target, source *ResourceChangeLog_ResourceChange) {
   596  	for _, path := range fieldMask.Paths {
   597  		val, _ := path.GetSingle(source)
   598  		// if val is nil, then field does not exist in source, skip
   599  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   600  		if val != nil {
   601  			path.WithIValue(val).SetTo(&target)
   602  		}
   603  	}
   604  }
   605  
   606  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   607  	fieldMask.Set(target.(*ResourceChangeLog_ResourceChange), source.(*ResourceChangeLog_ResourceChange))
   608  }
   609  
   610  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) Project(source *ResourceChangeLog_ResourceChange) *ResourceChangeLog_ResourceChange {
   611  	if source == nil {
   612  		return nil
   613  	}
   614  	if fieldMask == nil {
   615  		return source
   616  	}
   617  	result := &ResourceChangeLog_ResourceChange{}
   618  	preMask := &common.ObjectState_FieldMask{}
   619  	wholePreAccepted := false
   620  	postMask := &common.ObjectState_FieldMask{}
   621  	wholePostAccepted := false
   622  	var labelsMapKeys []string
   623  	wholeLabelsAccepted := false
   624  
   625  	for _, p := range fieldMask.Paths {
   626  		switch tp := p.(type) {
   627  		case *ResourceChangeLogResourceChange_FieldTerminalPath:
   628  			switch tp.selector {
   629  			case ResourceChangeLogResourceChange_FieldPathSelectorName:
   630  				result.Name = source.Name
   631  			case ResourceChangeLogResourceChange_FieldPathSelectorType:
   632  				result.Type = source.Type
   633  			case ResourceChangeLogResourceChange_FieldPathSelectorAction:
   634  				result.Action = source.Action
   635  			case ResourceChangeLogResourceChange_FieldPathSelectorUpdatedFields:
   636  				result.UpdatedFields = source.UpdatedFields
   637  			case ResourceChangeLogResourceChange_FieldPathSelectorPrevious:
   638  				result.Previous = source.Previous
   639  			case ResourceChangeLogResourceChange_FieldPathSelectorCurrent:
   640  				result.Current = source.Current
   641  			case ResourceChangeLogResourceChange_FieldPathSelectorLabels:
   642  				result.Labels = source.Labels
   643  				wholeLabelsAccepted = true
   644  			case ResourceChangeLogResourceChange_FieldPathSelectorPre:
   645  				result.Pre = source.Pre
   646  				wholePreAccepted = true
   647  			case ResourceChangeLogResourceChange_FieldPathSelectorPost:
   648  				result.Post = source.Post
   649  				wholePostAccepted = true
   650  			}
   651  		case *ResourceChangeLogResourceChange_FieldSubPath:
   652  			switch tp.selector {
   653  			case ResourceChangeLogResourceChange_FieldPathSelectorPre:
   654  				preMask.AppendPath(tp.subPath.(common.ObjectState_FieldPath))
   655  			case ResourceChangeLogResourceChange_FieldPathSelectorPost:
   656  				postMask.AppendPath(tp.subPath.(common.ObjectState_FieldPath))
   657  			}
   658  		case *ResourceChangeLogResourceChange_FieldPathMap:
   659  			switch tp.selector {
   660  			case ResourceChangeLogResourceChange_FieldPathSelectorLabels:
   661  				labelsMapKeys = append(labelsMapKeys, tp.key)
   662  			}
   663  		}
   664  	}
   665  	if wholeLabelsAccepted == false && len(labelsMapKeys) > 0 && source.GetLabels() != nil {
   666  		copiedMap := map[string]string{}
   667  		sourceMap := source.GetLabels()
   668  		for _, key := range labelsMapKeys {
   669  			copiedMap[key] = sourceMap[key]
   670  		}
   671  		result.Labels = copiedMap
   672  	}
   673  	if wholePreAccepted == false && len(preMask.Paths) > 0 {
   674  		result.Pre = preMask.Project(source.GetPre())
   675  	}
   676  	if wholePostAccepted == false && len(postMask.Paths) > 0 {
   677  		result.Post = postMask.Project(source.GetPost())
   678  	}
   679  	return result
   680  }
   681  
   682  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   683  	return fieldMask.Project(source.(*ResourceChangeLog_ResourceChange))
   684  }
   685  
   686  func (fieldMask *ResourceChangeLog_ResourceChange_FieldMask) PathsCount() int {
   687  	if fieldMask == nil {
   688  		return 0
   689  	}
   690  	return len(fieldMask.Paths)
   691  }
   692  
   693  type ResourceChangeLog_TransactionInfo_FieldMask struct {
   694  	Paths []ResourceChangeLogTransactionInfo_FieldPath
   695  }
   696  
   697  func FullResourceChangeLog_TransactionInfo_FieldMask() *ResourceChangeLog_TransactionInfo_FieldMask {
   698  	res := &ResourceChangeLog_TransactionInfo_FieldMask{}
   699  	res.Paths = append(res.Paths, &ResourceChangeLogTransactionInfo_FieldTerminalPath{selector: ResourceChangeLogTransactionInfo_FieldPathSelectorIdentifier})
   700  	res.Paths = append(res.Paths, &ResourceChangeLogTransactionInfo_FieldTerminalPath{selector: ResourceChangeLogTransactionInfo_FieldPathSelectorTryCounter})
   701  	res.Paths = append(res.Paths, &ResourceChangeLogTransactionInfo_FieldTerminalPath{selector: ResourceChangeLogTransactionInfo_FieldPathSelectorState})
   702  	return res
   703  }
   704  
   705  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) String() string {
   706  	if fieldMask == nil {
   707  		return "<nil>"
   708  	}
   709  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   710  	for _, path := range fieldMask.Paths {
   711  		pathsStr = append(pathsStr, path.String())
   712  	}
   713  	return strings.Join(pathsStr, ", ")
   714  }
   715  
   716  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) IsFull() bool {
   717  	if fieldMask == nil {
   718  		return false
   719  	}
   720  	presentSelectors := make([]bool, 3)
   721  	for _, path := range fieldMask.Paths {
   722  		if asFinal, ok := path.(*ResourceChangeLogTransactionInfo_FieldTerminalPath); ok {
   723  			presentSelectors[int(asFinal.selector)] = true
   724  		}
   725  	}
   726  	for _, flag := range presentSelectors {
   727  		if !flag {
   728  			return false
   729  		}
   730  	}
   731  	return true
   732  }
   733  
   734  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) ProtoReflect() preflect.Message {
   735  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   736  		return ParseResourceChangeLogTransactionInfo_FieldPath(raw)
   737  	})
   738  }
   739  
   740  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) ProtoMessage() {}
   741  
   742  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Reset() {
   743  	if fieldMask != nil {
   744  		fieldMask.Paths = nil
   745  	}
   746  }
   747  
   748  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Subtract(other *ResourceChangeLog_TransactionInfo_FieldMask) *ResourceChangeLog_TransactionInfo_FieldMask {
   749  	result := &ResourceChangeLog_TransactionInfo_FieldMask{}
   750  	removedSelectors := make([]bool, 3)
   751  
   752  	for _, path := range other.GetPaths() {
   753  		switch tp := path.(type) {
   754  		case *ResourceChangeLogTransactionInfo_FieldTerminalPath:
   755  			removedSelectors[int(tp.selector)] = true
   756  		}
   757  	}
   758  	for _, path := range fieldMask.GetPaths() {
   759  		if !removedSelectors[int(path.Selector())] {
   760  			result.Paths = append(result.Paths, path)
   761  		}
   762  	}
   763  
   764  	if len(result.Paths) == 0 {
   765  		return nil
   766  	}
   767  	return result
   768  }
   769  
   770  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   771  	return fieldMask.Subtract(other.(*ResourceChangeLog_TransactionInfo_FieldMask))
   772  }
   773  
   774  // FilterInputFields generates copy of field paths with output_only field paths removed
   775  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) FilterInputFields() *ResourceChangeLog_TransactionInfo_FieldMask {
   776  	result := &ResourceChangeLog_TransactionInfo_FieldMask{}
   777  	result.Paths = append(result.Paths, fieldMask.Paths...)
   778  	return result
   779  }
   780  
   781  // ToFieldMask is used for proto conversions
   782  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   783  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   784  	for _, path := range fieldMask.Paths {
   785  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   786  	}
   787  	return protoFieldMask
   788  }
   789  
   790  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   791  	if fieldMask == nil {
   792  		return status.Error(codes.Internal, "target field mask is nil")
   793  	}
   794  	fieldMask.Paths = make([]ResourceChangeLogTransactionInfo_FieldPath, 0, len(protoFieldMask.Paths))
   795  	for _, strPath := range protoFieldMask.Paths {
   796  		path, err := ParseResourceChangeLogTransactionInfo_FieldPath(strPath)
   797  		if err != nil {
   798  			return err
   799  		}
   800  		fieldMask.Paths = append(fieldMask.Paths, path)
   801  	}
   802  	return nil
   803  }
   804  
   805  // implement methods required by customType
   806  func (fieldMask ResourceChangeLog_TransactionInfo_FieldMask) Marshal() ([]byte, error) {
   807  	protoFieldMask := fieldMask.ToProtoFieldMask()
   808  	return proto.Marshal(protoFieldMask)
   809  }
   810  
   811  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Unmarshal(data []byte) error {
   812  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   813  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   814  		return err
   815  	}
   816  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   817  		return err
   818  	}
   819  	return nil
   820  }
   821  
   822  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Size() int {
   823  	return proto.Size(fieldMask.ToProtoFieldMask())
   824  }
   825  
   826  func (fieldMask ResourceChangeLog_TransactionInfo_FieldMask) MarshalJSON() ([]byte, error) {
   827  	return json.Marshal(fieldMask.ToProtoFieldMask())
   828  }
   829  
   830  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) UnmarshalJSON(data []byte) error {
   831  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   832  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   833  		return err
   834  	}
   835  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   836  		return err
   837  	}
   838  	return nil
   839  }
   840  
   841  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) AppendPath(path ResourceChangeLogTransactionInfo_FieldPath) {
   842  	fieldMask.Paths = append(fieldMask.Paths, path)
   843  }
   844  
   845  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   846  	fieldMask.Paths = append(fieldMask.Paths, path.(ResourceChangeLogTransactionInfo_FieldPath))
   847  }
   848  
   849  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) GetPaths() []ResourceChangeLogTransactionInfo_FieldPath {
   850  	if fieldMask == nil {
   851  		return nil
   852  	}
   853  	return fieldMask.Paths
   854  }
   855  
   856  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   857  	if fieldMask == nil {
   858  		return nil
   859  	}
   860  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   861  	for _, path := range fieldMask.Paths {
   862  		rawPaths = append(rawPaths, path)
   863  	}
   864  	return rawPaths
   865  }
   866  
   867  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) SetFromCliFlag(raw string) error {
   868  	path, err := ParseResourceChangeLogTransactionInfo_FieldPath(raw)
   869  	if err != nil {
   870  		return err
   871  	}
   872  	fieldMask.Paths = append(fieldMask.Paths, path)
   873  	return nil
   874  }
   875  
   876  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Set(target, source *ResourceChangeLog_TransactionInfo) {
   877  	for _, path := range fieldMask.Paths {
   878  		val, _ := path.GetSingle(source)
   879  		// if val is nil, then field does not exist in source, skip
   880  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   881  		if val != nil {
   882  			path.WithIValue(val).SetTo(&target)
   883  		}
   884  	}
   885  }
   886  
   887  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   888  	fieldMask.Set(target.(*ResourceChangeLog_TransactionInfo), source.(*ResourceChangeLog_TransactionInfo))
   889  }
   890  
   891  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) Project(source *ResourceChangeLog_TransactionInfo) *ResourceChangeLog_TransactionInfo {
   892  	if source == nil {
   893  		return nil
   894  	}
   895  	if fieldMask == nil {
   896  		return source
   897  	}
   898  	result := &ResourceChangeLog_TransactionInfo{}
   899  
   900  	for _, p := range fieldMask.Paths {
   901  		switch tp := p.(type) {
   902  		case *ResourceChangeLogTransactionInfo_FieldTerminalPath:
   903  			switch tp.selector {
   904  			case ResourceChangeLogTransactionInfo_FieldPathSelectorIdentifier:
   905  				result.Identifier = source.Identifier
   906  			case ResourceChangeLogTransactionInfo_FieldPathSelectorTryCounter:
   907  				result.TryCounter = source.TryCounter
   908  			case ResourceChangeLogTransactionInfo_FieldPathSelectorState:
   909  				result.State = source.State
   910  			}
   911  		}
   912  	}
   913  	return result
   914  }
   915  
   916  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   917  	return fieldMask.Project(source.(*ResourceChangeLog_TransactionInfo))
   918  }
   919  
   920  func (fieldMask *ResourceChangeLog_TransactionInfo_FieldMask) PathsCount() int {
   921  	if fieldMask == nil {
   922  		return 0
   923  	}
   924  	return len(fieldMask.Paths)
   925  }