aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-openapi/spec/expander.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-08-28 17:49:28 +0200
committerGravatar Yong Tang <yong.tang.github@outlook.com> 2017-08-28 08:49:28 -0700
commit7e63bdbee8340d3ce2d2488f93d0fb1d4d16a201 (patch)
tree2734029ca19d1a21794ffc65299c0d57254f5352 /vendor/github.com/go-openapi/spec/expander.go
parent558f4bea41e0493dd4b0e6d0f73b0220a39d1e67 (diff)
downloadcoredns-7e63bdbee8340d3ce2d2488f93d0fb1d4d16a201.tar.gz
coredns-7e63bdbee8340d3ce2d2488f93d0fb1d4d16a201.tar.zst
coredns-7e63bdbee8340d3ce2d2488f93d0fb1d4d16a201.zip
dep ensure -update (#1001)
* dep ensure -update Run "dep ensure -update` to update all dependencies. No code changes; just the dependencies. * dep prune * add new venderod
Diffstat (limited to 'vendor/github.com/go-openapi/spec/expander.go')
-rw-r--r--vendor/github.com/go-openapi/spec/expander.go134
1 files changed, 87 insertions, 47 deletions
diff --git a/vendor/github.com/go-openapi/spec/expander.go b/vendor/github.com/go-openapi/spec/expander.go
index c694bbcb3..b4429a21c 100644
--- a/vendor/github.com/go-openapi/spec/expander.go
+++ b/vendor/github.com/go-openapi/spec/expander.go
@@ -36,8 +36,9 @@ var (
// ExpandOptions provides options for expand.
type ExpandOptions struct {
- RelativeBase string
- SkipSchemas bool
+ RelativeBase string
+ SkipSchemas bool
+ ContinueOnError bool
}
// ResolutionCache a cache for resolving urls
@@ -510,7 +511,8 @@ func (r *schemaLoader) reset() {
// ExpandSpec expands the references in a swagger spec
func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
resolver, err := defaultSchemaLoader(spec, nil, options, nil)
- if err != nil {
+ // Just in case this ever returns an error.
+ if shouldStopOnError(err, resolver.options) {
return err
}
@@ -518,7 +520,7 @@ func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
for key, definition := range spec.Definitions {
var def *Schema
var err error
- if def, err = expandSchema(definition, []string{"#/definitions/" + key}, resolver); err != nil {
+ if def, err = expandSchema(definition, []string{"#/definitions/" + key}, resolver); shouldStopOnError(err, resolver.options) {
return err
}
resolver.reset()
@@ -527,14 +529,14 @@ func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
}
for key, parameter := range spec.Parameters {
- if err := expandParameter(&parameter, resolver); err != nil {
+ if err := expandParameter(&parameter, resolver); shouldStopOnError(err, resolver.options) {
return err
}
spec.Parameters[key] = parameter
}
for key, response := range spec.Responses {
- if err := expandResponse(&response, resolver); err != nil {
+ if err := expandResponse(&response, resolver); shouldStopOnError(err, resolver.options) {
return err
}
spec.Responses[key] = response
@@ -542,7 +544,7 @@ func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
if spec.Paths != nil {
for key, path := range spec.Paths.Paths {
- if err := expandPathItem(&path, resolver); err != nil {
+ if err := expandPathItem(&path, resolver); shouldStopOnError(err, resolver.options) {
return err
}
spec.Paths.Paths[key] = path
@@ -552,6 +554,18 @@ func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
return nil
}
+func shouldStopOnError(err error, opts *ExpandOptions) bool {
+ if err != nil && !opts.ContinueOnError {
+ return true
+ }
+
+ if err != nil {
+ log.Println(err)
+ }
+
+ return false
+}
+
// ExpandSchema expands the refs in the schema object
func ExpandSchema(schema *Schema, root interface{}, cache ResolutionCache) error {
return ExpandSchemaWithBasePath(schema, root, cache, nil)
@@ -639,7 +653,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
return &target, nil
}
- if err := resolver.Resolve(&target.Ref, &t); err != nil {
+ if err := resolver.Resolve(&target.Ref, &t); shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -648,86 +662,108 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
return &target, nil
}
parentRefs = append(parentRefs, target.Ref.String())
- target = *t
+ if t != nil {
+ target = *t
+ }
}
t, err := expandItems(target, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target = *t
+ if t != nil {
+ target = *t
+ }
for i := range target.AllOf {
t, err := expandSchema(target.AllOf[i], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target.AllOf[i] = *t
+ if t != nil {
+ target.AllOf[i] = *t
+ }
}
for i := range target.AnyOf {
t, err := expandSchema(target.AnyOf[i], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
target.AnyOf[i] = *t
}
for i := range target.OneOf {
t, err := expandSchema(target.OneOf[i], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target.OneOf[i] = *t
+ if t != nil {
+ target.OneOf[i] = *t
+ }
}
if target.Not != nil {
t, err := expandSchema(*target.Not, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- *target.Not = *t
+ if t != nil {
+ *target.Not = *t
+ }
}
for k := range target.Properties {
t, err := expandSchema(target.Properties[k], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target.Properties[k] = *t
+ if t != nil {
+ target.Properties[k] = *t
+ }
}
if target.AdditionalProperties != nil && target.AdditionalProperties.Schema != nil {
t, err := expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- *target.AdditionalProperties.Schema = *t
+ if t != nil {
+ *target.AdditionalProperties.Schema = *t
+ }
}
for k := range target.PatternProperties {
t, err := expandSchema(target.PatternProperties[k], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target.PatternProperties[k] = *t
+ if t != nil {
+ target.PatternProperties[k] = *t
+ }
}
for k := range target.Dependencies {
if target.Dependencies[k].Schema != nil {
t, err := expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- *target.Dependencies[k].Schema = *t
+ if t != nil {
+ *target.Dependencies[k].Schema = *t
+ }
}
}
if target.AdditionalItems != nil && target.AdditionalItems.Schema != nil {
t, err := expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- *target.AdditionalItems.Schema = *t
+ if t != nil {
+ *target.AdditionalItems.Schema = *t
+ }
}
for k := range target.Definitions {
t, err := expandSchema(target.Definitions[k], parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return &target, err
}
- target.Definitions[k] = *t
+ if t != nil {
+ target.Definitions[k] = *t
+ }
}
return &target, nil
}
@@ -736,6 +772,7 @@ func expandPathItem(pathItem *PathItem, resolver *schemaLoader) error {
if pathItem == nil {
return nil
}
+
if pathItem.Ref.String() != "" {
if err := resolver.Resolve(&pathItem.Ref, &pathItem); err != nil {
return err
@@ -745,29 +782,29 @@ func expandPathItem(pathItem *PathItem, resolver *schemaLoader) error {
}
for idx := range pathItem.Parameters {
- if err := expandParameter(&(pathItem.Parameters[idx]), resolver); err != nil {
+ if err := expandParameter(&(pathItem.Parameters[idx]), resolver); shouldStopOnError(err, resolver.options) {
return err
}
}
- if err := expandOperation(pathItem.Get, resolver); err != nil {
+ if err := expandOperation(pathItem.Get, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Head, resolver); err != nil {
+ if err := expandOperation(pathItem.Head, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Options, resolver); err != nil {
+ if err := expandOperation(pathItem.Options, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Put, resolver); err != nil {
+ if err := expandOperation(pathItem.Put, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Post, resolver); err != nil {
+ if err := expandOperation(pathItem.Post, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Patch, resolver); err != nil {
+ if err := expandOperation(pathItem.Patch, resolver); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Delete, resolver); err != nil {
+ if err := expandOperation(pathItem.Delete, resolver); shouldStopOnError(err, resolver.options) {
return err
}
return nil
@@ -777,8 +814,9 @@ func expandOperation(op *Operation, resolver *schemaLoader) error {
if op == nil {
return nil
}
+
for i, param := range op.Parameters {
- if err := expandParameter(&param, resolver); err != nil {
+ if err := expandParameter(&param, resolver); shouldStopOnError(err, resolver.options) {
return err
}
op.Parameters[i] = param
@@ -786,11 +824,11 @@ func expandOperation(op *Operation, resolver *schemaLoader) error {
if op.Responses != nil {
responses := op.Responses
- if err := expandResponse(responses.Default, resolver); err != nil {
+ if err := expandResponse(responses.Default, resolver); shouldStopOnError(err, resolver.options) {
return err
}
for code, response := range responses.StatusCodeResponses {
- if err := expandResponse(&response, resolver); err != nil {
+ if err := expandResponse(&response, resolver); shouldStopOnError(err, resolver.options) {
return err
}
responses.StatusCodeResponses[code] = response
@@ -805,9 +843,10 @@ func expandResponse(response *Response, resolver *schemaLoader) error {
}
var parentRefs []string
+
if response.Ref.String() != "" {
parentRefs = append(parentRefs, response.Ref.String())
- if err := resolver.Resolve(&response.Ref, response); err != nil {
+ if err := resolver.Resolve(&response.Ref, response); shouldStopOnError(err, resolver.options) {
return err
}
resolver.reset()
@@ -817,11 +856,11 @@ func expandResponse(response *Response, resolver *schemaLoader) error {
if !resolver.options.SkipSchemas && response.Schema != nil {
parentRefs = append(parentRefs, response.Schema.Ref.String())
debugLog("response ref: %s", response.Schema.Ref)
- if err := resolver.Resolve(&response.Schema.Ref, &response.Schema); err != nil {
+ if err := resolver.Resolve(&response.Schema.Ref, &response.Schema); shouldStopOnError(err, resolver.options) {
return err
}
s, err := expandSchema(*response.Schema, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return err
}
resolver.reset()
@@ -836,9 +875,10 @@ func expandParameter(parameter *Parameter, resolver *schemaLoader) error {
}
var parentRefs []string
+
if parameter.Ref.String() != "" {
parentRefs = append(parentRefs, parameter.Ref.String())
- if err := resolver.Resolve(&parameter.Ref, parameter); err != nil {
+ if err := resolver.Resolve(&parameter.Ref, parameter); shouldStopOnError(err, resolver.options) {
return err
}
resolver.reset()
@@ -846,11 +886,11 @@ func expandParameter(parameter *Parameter, resolver *schemaLoader) error {
}
if !resolver.options.SkipSchemas && parameter.Schema != nil {
parentRefs = append(parentRefs, parameter.Schema.Ref.String())
- if err := resolver.Resolve(&parameter.Schema.Ref, &parameter.Schema); err != nil {
+ if err := resolver.Resolve(&parameter.Schema.Ref, &parameter.Schema); shouldStopOnError(err, resolver.options) {
return err
}
s, err := expandSchema(*parameter.Schema, parentRefs, resolver)
- if err != nil {
+ if shouldStopOnError(err, resolver.options) {
return err
}
resolver.reset()