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

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