本文整理汇总了Golang中github.com/goadesign/goa/dslengine.ValidationErrors.Merge方法的典型用法代码示例。如果您正苦于以下问题:Golang ValidationErrors.Merge方法的具体用法?Golang ValidationErrors.Merge怎么用?Golang ValidationErrors.Merge使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/goadesign/goa/dslengine.ValidationErrors
的用法示例。
在下文中一共展示了ValidationErrors.Merge方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Validate
// Validate tests whether the resource definition is consistent: action names are valid and each action is
// valid.
func (r *ResourceDefinition) Validate(version *APIVersionDefinition) *dslengine.ValidationErrors {
verr := new(dslengine.ValidationErrors)
if r.Name == "" {
verr.Add(r, "Resource name cannot be empty")
}
r.validateActions(version, verr)
if r.BaseParams != nil {
r.validateBaseParams(verr)
}
if r.ParentName != "" {
r.validateParent(verr)
}
for _, resp := range r.Responses {
verr.Merge(resp.Validate())
}
if r.Params != nil {
verr.Merge(r.Params.Validate("resource parameters", r))
}
if !r.SupportsNoVersion() {
if err := dslengine.CanUse(r, Design); err != nil {
verr.Add(r, "Invalid API version in list")
}
}
return verr.AsError()
}
示例2: Validate
// Validate checks that the user type definition is consistent: it has a name and the attribute
// backing the type is valid.
func (u *UserTypeDefinition) Validate(ctx string, parent dslengine.Definition) *dslengine.ValidationErrors {
verr := new(dslengine.ValidationErrors)
if u.TypeName == "" {
verr.Add(parent, "%s - %s", ctx, "User type must have a name")
}
verr.Merge(u.AttributeDefinition.Validate(ctx, u))
return verr.AsError()
}
示例3: validateActions
func (r *ResourceDefinition) validateActions(version *APIVersionDefinition, verr *dslengine.ValidationErrors) {
found := false
for _, a := range r.Actions {
if a.Name == r.CanonicalActionName {
found = true
}
verr.Merge(a.Validate(version))
}
if r.CanonicalActionName != "" && !found {
verr.Add(r, `unknown canonical action "%s"`, r.CanonicalActionName)
}
}
示例4: Validate
// Validate tests whether the StorageGroup definition is consistent.
func (a *StorageGroupDefinition) Validate() *dslengine.ValidationErrors {
fmt.Println("Validating Group")
verr := new(dslengine.ValidationErrors)
if a.Name == "" {
verr.Add(a, "storage group name not defined")
}
a.IterateStores(func(store *RelationalStoreDefinition) error {
verr.Merge(store.Validate())
return nil
})
return verr.AsError()
}
示例5: ValidateParams
// ValidateParams checks the action parameters (make sure they have names, members and types).
func (a *ActionDefinition) ValidateParams() *dslengine.ValidationErrors {
verr := new(dslengine.ValidationErrors)
if a.Params == nil {
return nil
}
params, ok := a.Params.Type.(Object)
if !ok {
verr.Add(a, `"Params" field of action is not an object`)
}
var wcs []string
for _, r := range a.Routes {
rwcs := ExtractWildcards(r.FullPath())
for _, rwc := range rwcs {
found := false
for _, wc := range wcs {
if rwc == wc {
found = true
break
}
}
if !found {
wcs = append(wcs, rwc)
}
}
}
for n, p := range params {
if n == "" {
verr.Add(a, "action has parameter with no name")
} else if p == nil {
verr.Add(a, "definition of parameter %s cannot be nil", n)
} else if p.Type == nil {
verr.Add(a, "type of parameter %s cannot be nil", n)
}
if p.Type.Kind() == ObjectKind {
verr.Add(a, `parameter %s cannot be an object, only action payloads may be of type object`, n)
} else if p.Type.Kind() == HashKind {
verr.Add(a, `parameter %s cannot be a hash, only action payloads may be of type hash`, n)
}
ctx := fmt.Sprintf("parameter %s", n)
verr.Merge(p.Validate(ctx, a))
}
for _, resp := range a.Responses {
verr.Merge(resp.Validate())
}
return verr.AsError()
}
示例6: Validate
// Validate tests whether the attribute definition is consistent: required fields exist.
// Since attributes are unaware of their context, additional context information can be provided
// to be used in error messages.
// The parent definition context is automatically added to error messages.
func (a *AttributeDefinition) Validate(ctx string, parent dslengine.Definition) *dslengine.ValidationErrors {
if validated[a] {
return nil
}
validated[a] = true
verr := new(dslengine.ValidationErrors)
if a.Type == nil {
verr.Add(parent, "attribute type is nil")
return verr
}
if ctx != "" {
ctx += " - "
}
o := a.Type.ToObject()
if o != nil {
for _, n := range a.AllRequired() {
found := false
for an := range o {
if n == an {
found = true
break
}
}
if !found {
verr.Add(parent, `%srequired field "%s" does not exist`, ctx, n)
}
}
for n, att := range o {
ctx = fmt.Sprintf("field %s", n)
verr.Merge(att.Validate(ctx, a))
}
} else {
if a.Type.IsArray() {
elemType := a.Type.ToArray().ElemType
verr.Merge(elemType.Validate(ctx, a))
}
}
return verr.AsError()
}
示例7: validateOrigins
func (a *APIDefinition) validateOrigins(verr *dslengine.ValidationErrors) {
for _, origin := range a.Origins {
verr.Merge(origin.Validate())
}
}