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

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