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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1/role_binding.proto
     3  // DO NOT EDIT!!!
     4  
     5  package role_binding
     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  	condition "github.com/cloudwan/edgelq-sdk/iam/resources/v1/condition"
    23  	organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    24  	project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project"
    25  	role "github.com/cloudwan/edgelq-sdk/iam/resources/v1/role"
    26  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    27  	meta "github.com/cloudwan/goten-sdk/types/meta"
    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  	_ = &condition.Condition{}
    47  	_ = &organization.Organization{}
    48  	_ = &project.Project{}
    49  	_ = &role.Role{}
    50  	_ = &meta_service.Service{}
    51  	_ = &meta.Meta{}
    52  )
    53  
    54  type RoleBinding_FieldMask struct {
    55  	Paths []RoleBinding_FieldPath
    56  }
    57  
    58  func FullRoleBinding_FieldMask() *RoleBinding_FieldMask {
    59  	res := &RoleBinding_FieldMask{}
    60  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorName})
    61  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMetadata})
    62  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorRole})
    63  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMember})
    64  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorScopeParams})
    65  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorExecutableConditions})
    66  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorOwnedObjects})
    67  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorMemberType})
    68  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorCategory})
    69  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorAncestryPath})
    70  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorParentByOrg})
    71  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorSpecGeneration})
    72  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorHasOwnedObjects})
    73  	res.Paths = append(res.Paths, &RoleBinding_FieldTerminalPath{selector: RoleBinding_FieldPathSelectorDisableForChildScopes})
    74  	return res
    75  }
    76  
    77  func (fieldMask *RoleBinding_FieldMask) String() string {
    78  	if fieldMask == nil {
    79  		return "<nil>"
    80  	}
    81  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    82  	for _, path := range fieldMask.Paths {
    83  		pathsStr = append(pathsStr, path.String())
    84  	}
    85  	return strings.Join(pathsStr, ", ")
    86  }
    87  
    88  func (fieldMask *RoleBinding_FieldMask) IsFull() bool {
    89  	if fieldMask == nil {
    90  		return false
    91  	}
    92  	presentSelectors := make([]bool, 14)
    93  	for _, path := range fieldMask.Paths {
    94  		if asFinal, ok := path.(*RoleBinding_FieldTerminalPath); ok {
    95  			presentSelectors[int(asFinal.selector)] = true
    96  		}
    97  	}
    98  	for _, flag := range presentSelectors {
    99  		if !flag {
   100  			return false
   101  		}
   102  	}
   103  	return true
   104  }
   105  
   106  func (fieldMask *RoleBinding_FieldMask) ProtoReflect() preflect.Message {
   107  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   108  		return ParseRoleBinding_FieldPath(raw)
   109  	})
   110  }
   111  
   112  func (fieldMask *RoleBinding_FieldMask) ProtoMessage() {}
   113  
   114  func (fieldMask *RoleBinding_FieldMask) Reset() {
   115  	if fieldMask != nil {
   116  		fieldMask.Paths = nil
   117  	}
   118  }
   119  
   120  func (fieldMask *RoleBinding_FieldMask) Subtract(other *RoleBinding_FieldMask) *RoleBinding_FieldMask {
   121  	result := &RoleBinding_FieldMask{}
   122  	removedSelectors := make([]bool, 14)
   123  	otherSubMasks := map[RoleBinding_FieldPathSelector]gotenobject.FieldMask{
   124  		RoleBinding_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   125  		RoleBinding_FieldPathSelectorScopeParams:          &role.ScopeParam_FieldMask{},
   126  		RoleBinding_FieldPathSelectorExecutableConditions: &condition.ExecutableCondition_FieldMask{},
   127  		RoleBinding_FieldPathSelectorAncestryPath:         &RoleBinding_Parent_FieldMask{},
   128  	}
   129  	mySubMasks := map[RoleBinding_FieldPathSelector]gotenobject.FieldMask{
   130  		RoleBinding_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   131  		RoleBinding_FieldPathSelectorScopeParams:          &role.ScopeParam_FieldMask{},
   132  		RoleBinding_FieldPathSelectorExecutableConditions: &condition.ExecutableCondition_FieldMask{},
   133  		RoleBinding_FieldPathSelectorAncestryPath:         &RoleBinding_Parent_FieldMask{},
   134  	}
   135  
   136  	for _, path := range other.GetPaths() {
   137  		switch tp := path.(type) {
   138  		case *RoleBinding_FieldTerminalPath:
   139  			removedSelectors[int(tp.selector)] = true
   140  		case *RoleBinding_FieldSubPath:
   141  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   142  		}
   143  	}
   144  	for _, path := range fieldMask.GetPaths() {
   145  		if !removedSelectors[int(path.Selector())] {
   146  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   147  				if tp, ok := path.(*RoleBinding_FieldTerminalPath); ok {
   148  					switch tp.selector {
   149  					case RoleBinding_FieldPathSelectorMetadata:
   150  						mySubMasks[RoleBinding_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   151  					case RoleBinding_FieldPathSelectorScopeParams:
   152  						mySubMasks[RoleBinding_FieldPathSelectorScopeParams] = role.FullScopeParam_FieldMask()
   153  					case RoleBinding_FieldPathSelectorExecutableConditions:
   154  						mySubMasks[RoleBinding_FieldPathSelectorExecutableConditions] = condition.FullExecutableCondition_FieldMask()
   155  					case RoleBinding_FieldPathSelectorAncestryPath:
   156  						mySubMasks[RoleBinding_FieldPathSelectorAncestryPath] = FullRoleBinding_Parent_FieldMask()
   157  					}
   158  				} else if tp, ok := path.(*RoleBinding_FieldSubPath); ok {
   159  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   160  				}
   161  			} else {
   162  				result.Paths = append(result.Paths, path)
   163  			}
   164  		}
   165  	}
   166  	for selector, mySubMask := range mySubMasks {
   167  		if mySubMask.PathsCount() > 0 {
   168  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   169  				result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: selector, subPath: allowedPath})
   170  			}
   171  		}
   172  	}
   173  
   174  	if len(result.Paths) == 0 {
   175  		return nil
   176  	}
   177  	return result
   178  }
   179  
   180  func (fieldMask *RoleBinding_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   181  	return fieldMask.Subtract(other.(*RoleBinding_FieldMask))
   182  }
   183  
   184  // FilterInputFields generates copy of field paths with output_only field paths removed
   185  func (fieldMask *RoleBinding_FieldMask) FilterInputFields() *RoleBinding_FieldMask {
   186  	result := &RoleBinding_FieldMask{}
   187  	for _, path := range fieldMask.Paths {
   188  		switch path.Selector() {
   189  		case RoleBinding_FieldPathSelectorOwnedObjects:
   190  		case RoleBinding_FieldPathSelectorMemberType:
   191  		case RoleBinding_FieldPathSelectorCategory:
   192  		case RoleBinding_FieldPathSelectorSpecGeneration:
   193  		case RoleBinding_FieldPathSelectorHasOwnedObjects:
   194  		case RoleBinding_FieldPathSelectorDisableForChildScopes:
   195  		case RoleBinding_FieldPathSelectorMetadata:
   196  			if _, ok := path.(*RoleBinding_FieldTerminalPath); ok {
   197  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   198  					result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: path.Selector(), subPath: subpath})
   199  				}
   200  			} else if sub, ok := path.(*RoleBinding_FieldSubPath); ok {
   201  				selectedMask := &meta.Meta_FieldMask{
   202  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   203  				}
   204  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   205  					result.Paths = append(result.Paths, &RoleBinding_FieldSubPath{selector: RoleBinding_FieldPathSelectorMetadata, subPath: allowedPath})
   206  				}
   207  			}
   208  		default:
   209  			result.Paths = append(result.Paths, path)
   210  		}
   211  	}
   212  	return result
   213  }
   214  
   215  // ToFieldMask is used for proto conversions
   216  func (fieldMask *RoleBinding_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   217  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   218  	for _, path := range fieldMask.Paths {
   219  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   220  	}
   221  	return protoFieldMask
   222  }
   223  
   224  func (fieldMask *RoleBinding_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   225  	if fieldMask == nil {
   226  		return status.Error(codes.Internal, "target field mask is nil")
   227  	}
   228  	fieldMask.Paths = make([]RoleBinding_FieldPath, 0, len(protoFieldMask.Paths))
   229  	for _, strPath := range protoFieldMask.Paths {
   230  		path, err := ParseRoleBinding_FieldPath(strPath)
   231  		if err != nil {
   232  			return err
   233  		}
   234  		fieldMask.Paths = append(fieldMask.Paths, path)
   235  	}
   236  	return nil
   237  }
   238  
   239  // implement methods required by customType
   240  func (fieldMask RoleBinding_FieldMask) Marshal() ([]byte, error) {
   241  	protoFieldMask := fieldMask.ToProtoFieldMask()
   242  	return proto.Marshal(protoFieldMask)
   243  }
   244  
   245  func (fieldMask *RoleBinding_FieldMask) Unmarshal(data []byte) error {
   246  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   247  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   248  		return err
   249  	}
   250  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   251  		return err
   252  	}
   253  	return nil
   254  }
   255  
   256  func (fieldMask *RoleBinding_FieldMask) Size() int {
   257  	return proto.Size(fieldMask.ToProtoFieldMask())
   258  }
   259  
   260  func (fieldMask RoleBinding_FieldMask) MarshalJSON() ([]byte, error) {
   261  	return json.Marshal(fieldMask.ToProtoFieldMask())
   262  }
   263  
   264  func (fieldMask *RoleBinding_FieldMask) UnmarshalJSON(data []byte) error {
   265  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   266  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   267  		return err
   268  	}
   269  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   270  		return err
   271  	}
   272  	return nil
   273  }
   274  
   275  func (fieldMask *RoleBinding_FieldMask) AppendPath(path RoleBinding_FieldPath) {
   276  	fieldMask.Paths = append(fieldMask.Paths, path)
   277  }
   278  
   279  func (fieldMask *RoleBinding_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   280  	fieldMask.Paths = append(fieldMask.Paths, path.(RoleBinding_FieldPath))
   281  }
   282  
   283  func (fieldMask *RoleBinding_FieldMask) GetPaths() []RoleBinding_FieldPath {
   284  	if fieldMask == nil {
   285  		return nil
   286  	}
   287  	return fieldMask.Paths
   288  }
   289  
   290  func (fieldMask *RoleBinding_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   291  	if fieldMask == nil {
   292  		return nil
   293  	}
   294  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   295  	for _, path := range fieldMask.Paths {
   296  		rawPaths = append(rawPaths, path)
   297  	}
   298  	return rawPaths
   299  }
   300  
   301  func (fieldMask *RoleBinding_FieldMask) SetFromCliFlag(raw string) error {
   302  	path, err := ParseRoleBinding_FieldPath(raw)
   303  	if err != nil {
   304  		return err
   305  	}
   306  	fieldMask.Paths = append(fieldMask.Paths, path)
   307  	return nil
   308  }
   309  
   310  func (fieldMask *RoleBinding_FieldMask) Set(target, source *RoleBinding) {
   311  	for _, path := range fieldMask.Paths {
   312  		val, _ := path.GetSingle(source)
   313  		// if val is nil, then field does not exist in source, skip
   314  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   315  		if val != nil {
   316  			path.WithIValue(val).SetTo(&target)
   317  		}
   318  	}
   319  }
   320  
   321  func (fieldMask *RoleBinding_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   322  	fieldMask.Set(target.(*RoleBinding), source.(*RoleBinding))
   323  }
   324  
   325  func (fieldMask *RoleBinding_FieldMask) Project(source *RoleBinding) *RoleBinding {
   326  	if source == nil {
   327  		return nil
   328  	}
   329  	if fieldMask == nil {
   330  		return source
   331  	}
   332  	result := &RoleBinding{}
   333  	metadataMask := &meta.Meta_FieldMask{}
   334  	wholeMetadataAccepted := false
   335  	scopeParamsMask := &role.ScopeParam_FieldMask{}
   336  	wholeScopeParamsAccepted := false
   337  	executableConditionsMask := &condition.ExecutableCondition_FieldMask{}
   338  	wholeExecutableConditionsAccepted := false
   339  	ancestryPathMask := &RoleBinding_Parent_FieldMask{}
   340  	wholeAncestryPathAccepted := false
   341  
   342  	for _, p := range fieldMask.Paths {
   343  		switch tp := p.(type) {
   344  		case *RoleBinding_FieldTerminalPath:
   345  			switch tp.selector {
   346  			case RoleBinding_FieldPathSelectorName:
   347  				result.Name = source.Name
   348  			case RoleBinding_FieldPathSelectorMetadata:
   349  				result.Metadata = source.Metadata
   350  				wholeMetadataAccepted = true
   351  			case RoleBinding_FieldPathSelectorRole:
   352  				result.Role = source.Role
   353  			case RoleBinding_FieldPathSelectorMember:
   354  				result.Member = source.Member
   355  			case RoleBinding_FieldPathSelectorScopeParams:
   356  				result.ScopeParams = source.ScopeParams
   357  				wholeScopeParamsAccepted = true
   358  			case RoleBinding_FieldPathSelectorExecutableConditions:
   359  				result.ExecutableConditions = source.ExecutableConditions
   360  				wholeExecutableConditionsAccepted = true
   361  			case RoleBinding_FieldPathSelectorOwnedObjects:
   362  				result.OwnedObjects = source.OwnedObjects
   363  			case RoleBinding_FieldPathSelectorMemberType:
   364  				result.MemberType = source.MemberType
   365  			case RoleBinding_FieldPathSelectorCategory:
   366  				result.Category = source.Category
   367  			case RoleBinding_FieldPathSelectorAncestryPath:
   368  				result.AncestryPath = source.AncestryPath
   369  				wholeAncestryPathAccepted = true
   370  			case RoleBinding_FieldPathSelectorParentByOrg:
   371  				result.ParentByOrg = source.ParentByOrg
   372  			case RoleBinding_FieldPathSelectorSpecGeneration:
   373  				result.SpecGeneration = source.SpecGeneration
   374  			case RoleBinding_FieldPathSelectorHasOwnedObjects:
   375  				result.HasOwnedObjects = source.HasOwnedObjects
   376  			case RoleBinding_FieldPathSelectorDisableForChildScopes:
   377  				result.DisableForChildScopes = source.DisableForChildScopes
   378  			}
   379  		case *RoleBinding_FieldSubPath:
   380  			switch tp.selector {
   381  			case RoleBinding_FieldPathSelectorMetadata:
   382  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   383  			case RoleBinding_FieldPathSelectorScopeParams:
   384  				scopeParamsMask.AppendPath(tp.subPath.(role.ScopeParam_FieldPath))
   385  			case RoleBinding_FieldPathSelectorExecutableConditions:
   386  				executableConditionsMask.AppendPath(tp.subPath.(condition.ExecutableCondition_FieldPath))
   387  			case RoleBinding_FieldPathSelectorAncestryPath:
   388  				ancestryPathMask.AppendPath(tp.subPath.(RoleBindingParent_FieldPath))
   389  			}
   390  		}
   391  	}
   392  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   393  		result.Metadata = metadataMask.Project(source.GetMetadata())
   394  	}
   395  	if wholeScopeParamsAccepted == false && len(scopeParamsMask.Paths) > 0 {
   396  		for _, sourceItem := range source.GetScopeParams() {
   397  			result.ScopeParams = append(result.ScopeParams, scopeParamsMask.Project(sourceItem))
   398  		}
   399  	}
   400  	if wholeExecutableConditionsAccepted == false && len(executableConditionsMask.Paths) > 0 {
   401  		for _, sourceItem := range source.GetExecutableConditions() {
   402  			result.ExecutableConditions = append(result.ExecutableConditions, executableConditionsMask.Project(sourceItem))
   403  		}
   404  	}
   405  	if wholeAncestryPathAccepted == false && len(ancestryPathMask.Paths) > 0 {
   406  		for _, sourceItem := range source.GetAncestryPath() {
   407  			result.AncestryPath = append(result.AncestryPath, ancestryPathMask.Project(sourceItem))
   408  		}
   409  	}
   410  	return result
   411  }
   412  
   413  func (fieldMask *RoleBinding_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   414  	return fieldMask.Project(source.(*RoleBinding))
   415  }
   416  
   417  func (fieldMask *RoleBinding_FieldMask) PathsCount() int {
   418  	if fieldMask == nil {
   419  		return 0
   420  	}
   421  	return len(fieldMask.Paths)
   422  }
   423  
   424  type RoleBinding_Parent_FieldMask struct {
   425  	Paths []RoleBindingParent_FieldPath
   426  }
   427  
   428  func FullRoleBinding_Parent_FieldMask() *RoleBinding_Parent_FieldMask {
   429  	res := &RoleBinding_Parent_FieldMask{}
   430  	res.Paths = append(res.Paths, &RoleBindingParent_FieldTerminalPath{selector: RoleBindingParent_FieldPathSelectorParent})
   431  	res.Paths = append(res.Paths, &RoleBindingParent_FieldTerminalPath{selector: RoleBindingParent_FieldPathSelectorMember})
   432  	return res
   433  }
   434  
   435  func (fieldMask *RoleBinding_Parent_FieldMask) String() string {
   436  	if fieldMask == nil {
   437  		return "<nil>"
   438  	}
   439  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   440  	for _, path := range fieldMask.Paths {
   441  		pathsStr = append(pathsStr, path.String())
   442  	}
   443  	return strings.Join(pathsStr, ", ")
   444  }
   445  
   446  func (fieldMask *RoleBinding_Parent_FieldMask) IsFull() bool {
   447  	if fieldMask == nil {
   448  		return false
   449  	}
   450  	presentSelectors := make([]bool, 2)
   451  	for _, path := range fieldMask.Paths {
   452  		if asFinal, ok := path.(*RoleBindingParent_FieldTerminalPath); ok {
   453  			presentSelectors[int(asFinal.selector)] = true
   454  		}
   455  	}
   456  	for _, flag := range presentSelectors {
   457  		if !flag {
   458  			return false
   459  		}
   460  	}
   461  	return true
   462  }
   463  
   464  func (fieldMask *RoleBinding_Parent_FieldMask) ProtoReflect() preflect.Message {
   465  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   466  		return ParseRoleBindingParent_FieldPath(raw)
   467  	})
   468  }
   469  
   470  func (fieldMask *RoleBinding_Parent_FieldMask) ProtoMessage() {}
   471  
   472  func (fieldMask *RoleBinding_Parent_FieldMask) Reset() {
   473  	if fieldMask != nil {
   474  		fieldMask.Paths = nil
   475  	}
   476  }
   477  
   478  func (fieldMask *RoleBinding_Parent_FieldMask) Subtract(other *RoleBinding_Parent_FieldMask) *RoleBinding_Parent_FieldMask {
   479  	result := &RoleBinding_Parent_FieldMask{}
   480  	removedSelectors := make([]bool, 2)
   481  
   482  	for _, path := range other.GetPaths() {
   483  		switch tp := path.(type) {
   484  		case *RoleBindingParent_FieldTerminalPath:
   485  			removedSelectors[int(tp.selector)] = true
   486  		}
   487  	}
   488  	for _, path := range fieldMask.GetPaths() {
   489  		if !removedSelectors[int(path.Selector())] {
   490  			result.Paths = append(result.Paths, path)
   491  		}
   492  	}
   493  
   494  	if len(result.Paths) == 0 {
   495  		return nil
   496  	}
   497  	return result
   498  }
   499  
   500  func (fieldMask *RoleBinding_Parent_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   501  	return fieldMask.Subtract(other.(*RoleBinding_Parent_FieldMask))
   502  }
   503  
   504  // FilterInputFields generates copy of field paths with output_only field paths removed
   505  func (fieldMask *RoleBinding_Parent_FieldMask) FilterInputFields() *RoleBinding_Parent_FieldMask {
   506  	result := &RoleBinding_Parent_FieldMask{}
   507  	result.Paths = append(result.Paths, fieldMask.Paths...)
   508  	return result
   509  }
   510  
   511  // ToFieldMask is used for proto conversions
   512  func (fieldMask *RoleBinding_Parent_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   513  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   514  	for _, path := range fieldMask.Paths {
   515  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   516  	}
   517  	return protoFieldMask
   518  }
   519  
   520  func (fieldMask *RoleBinding_Parent_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   521  	if fieldMask == nil {
   522  		return status.Error(codes.Internal, "target field mask is nil")
   523  	}
   524  	fieldMask.Paths = make([]RoleBindingParent_FieldPath, 0, len(protoFieldMask.Paths))
   525  	for _, strPath := range protoFieldMask.Paths {
   526  		path, err := ParseRoleBindingParent_FieldPath(strPath)
   527  		if err != nil {
   528  			return err
   529  		}
   530  		fieldMask.Paths = append(fieldMask.Paths, path)
   531  	}
   532  	return nil
   533  }
   534  
   535  // implement methods required by customType
   536  func (fieldMask RoleBinding_Parent_FieldMask) Marshal() ([]byte, error) {
   537  	protoFieldMask := fieldMask.ToProtoFieldMask()
   538  	return proto.Marshal(protoFieldMask)
   539  }
   540  
   541  func (fieldMask *RoleBinding_Parent_FieldMask) Unmarshal(data []byte) error {
   542  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   543  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   544  		return err
   545  	}
   546  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   547  		return err
   548  	}
   549  	return nil
   550  }
   551  
   552  func (fieldMask *RoleBinding_Parent_FieldMask) Size() int {
   553  	return proto.Size(fieldMask.ToProtoFieldMask())
   554  }
   555  
   556  func (fieldMask RoleBinding_Parent_FieldMask) MarshalJSON() ([]byte, error) {
   557  	return json.Marshal(fieldMask.ToProtoFieldMask())
   558  }
   559  
   560  func (fieldMask *RoleBinding_Parent_FieldMask) UnmarshalJSON(data []byte) error {
   561  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   562  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   563  		return err
   564  	}
   565  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   566  		return err
   567  	}
   568  	return nil
   569  }
   570  
   571  func (fieldMask *RoleBinding_Parent_FieldMask) AppendPath(path RoleBindingParent_FieldPath) {
   572  	fieldMask.Paths = append(fieldMask.Paths, path)
   573  }
   574  
   575  func (fieldMask *RoleBinding_Parent_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   576  	fieldMask.Paths = append(fieldMask.Paths, path.(RoleBindingParent_FieldPath))
   577  }
   578  
   579  func (fieldMask *RoleBinding_Parent_FieldMask) GetPaths() []RoleBindingParent_FieldPath {
   580  	if fieldMask == nil {
   581  		return nil
   582  	}
   583  	return fieldMask.Paths
   584  }
   585  
   586  func (fieldMask *RoleBinding_Parent_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   587  	if fieldMask == nil {
   588  		return nil
   589  	}
   590  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   591  	for _, path := range fieldMask.Paths {
   592  		rawPaths = append(rawPaths, path)
   593  	}
   594  	return rawPaths
   595  }
   596  
   597  func (fieldMask *RoleBinding_Parent_FieldMask) SetFromCliFlag(raw string) error {
   598  	path, err := ParseRoleBindingParent_FieldPath(raw)
   599  	if err != nil {
   600  		return err
   601  	}
   602  	fieldMask.Paths = append(fieldMask.Paths, path)
   603  	return nil
   604  }
   605  
   606  func (fieldMask *RoleBinding_Parent_FieldMask) Set(target, source *RoleBinding_Parent) {
   607  	for _, path := range fieldMask.Paths {
   608  		val, _ := path.GetSingle(source)
   609  		// if val is nil, then field does not exist in source, skip
   610  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   611  		if val != nil {
   612  			path.WithIValue(val).SetTo(&target)
   613  		}
   614  	}
   615  }
   616  
   617  func (fieldMask *RoleBinding_Parent_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   618  	fieldMask.Set(target.(*RoleBinding_Parent), source.(*RoleBinding_Parent))
   619  }
   620  
   621  func (fieldMask *RoleBinding_Parent_FieldMask) Project(source *RoleBinding_Parent) *RoleBinding_Parent {
   622  	if source == nil {
   623  		return nil
   624  	}
   625  	if fieldMask == nil {
   626  		return source
   627  	}
   628  	result := &RoleBinding_Parent{}
   629  
   630  	for _, p := range fieldMask.Paths {
   631  		switch tp := p.(type) {
   632  		case *RoleBindingParent_FieldTerminalPath:
   633  			switch tp.selector {
   634  			case RoleBindingParent_FieldPathSelectorParent:
   635  				result.Parent = source.Parent
   636  			case RoleBindingParent_FieldPathSelectorMember:
   637  				result.Member = source.Member
   638  			}
   639  		}
   640  	}
   641  	return result
   642  }
   643  
   644  func (fieldMask *RoleBinding_Parent_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   645  	return fieldMask.Project(source.(*RoleBinding_Parent))
   646  }
   647  
   648  func (fieldMask *RoleBinding_Parent_FieldMask) PathsCount() int {
   649  	if fieldMask == nil {
   650  		return 0
   651  	}
   652  	return len(fieldMask.Paths)
   653  }