Skip to content

Commit 2e539ed

Browse files
committed
revert original approach
1 parent 787fc8f commit 2e539ed

File tree

3 files changed

+5
-42
lines changed

3 files changed

+5
-42
lines changed

.github/docs/openapi3.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1524,7 +1524,7 @@ type Schema struct {
15241524
MinProps uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"`
15251525
MaxProps *uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"`
15261526
AdditionalProperties AdditionalProperties `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
1527-
Discriminator any `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
1527+
Discriminator *Discriminator `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
15281528
}
15291529
Schema is specified by OpenAPI/Swagger 3.0 standard. See
15301530
https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object

openapi3/discriminator_test.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package openapi3
22

33
import (
4-
"encoding/json"
54
"testing"
65

76
"github.com/stretchr/testify/require"
@@ -53,15 +52,5 @@ func TestParsingDiscriminator(t *testing.T) {
5352
err = doc.Validate(loader.Context)
5453
require.NoError(t, err)
5554

56-
discriminatorMap, ok := doc.Components.Schemas["MyResponseType"].Value.Discriminator.(map[string]interface{})
57-
require.True(t, ok)
58-
59-
marshaledDiscriminator, err := json.Marshal(discriminatorMap)
60-
require.NoError(t, err)
61-
62-
var discriminator *Discriminator
63-
err = json.Unmarshal(marshaledDiscriminator, &discriminator)
64-
require.NoError(t, err)
65-
66-
require.Len(t, discriminator.Mapping, 2)
55+
require.Len(t, doc.Components.Schemas["MyResponseType"].Value.Discriminator.Mapping, 2)
6756
}

openapi3/schema.go

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ type Schema struct {
129129
MinProps uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"`
130130
MaxProps *uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"`
131131
AdditionalProperties AdditionalProperties `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
132-
Discriminator any `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
132+
Discriminator *Discriminator `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
133133
}
134134

135135
type Types []string
@@ -1298,33 +1298,7 @@ func (schema *Schema) visitXOFOperations(settings *schemaValidationSettings, val
12981298
if v := schema.OneOf; len(v) > 0 {
12991299
var discriminatorRef string
13001300
if schema.Discriminator != nil {
1301-
var discriminator *Discriminator
1302-
if descriminatorValuemap, okcheck := schema.Discriminator.(map[string]any); okcheck {
1303-
marshaledDiscriminator, err := json.Marshal(descriminatorValuemap)
1304-
if err != nil {
1305-
return &SchemaError{
1306-
Schema: schema,
1307-
SchemaField: "discriminator",
1308-
Reason: fmt.Sprintf("unable to marshal the discriminator field in schema: %v", err),
1309-
}, false
1310-
}
1311-
1312-
if err := json.Unmarshal(marshaledDiscriminator, &discriminator); err != nil {
1313-
return &SchemaError{
1314-
Schema: schema,
1315-
SchemaField: "discriminator",
1316-
Reason: fmt.Sprintf("unable to unmarshall the discriminator field in schema: %v", err),
1317-
}, false
1318-
}
1319-
} else {
1320-
return &SchemaError{
1321-
Schema: schema,
1322-
SchemaField: "discriminator",
1323-
Reason: fmt.Sprintf("discriminator is expected to be an object, but received an unknown type"),
1324-
}, false
1325-
}
1326-
1327-
pn := discriminator.PropertyName
1301+
pn := schema.Discriminator.PropertyName
13281302
if valuemap, okcheck := value.(map[string]any); okcheck {
13291303
discriminatorVal, okcheck := valuemap[pn]
13301304
if !okcheck {
@@ -1345,7 +1319,7 @@ func (schema *Schema) visitXOFOperations(settings *schemaValidationSettings, val
13451319
}, false
13461320
}
13471321

1348-
if discriminatorRef, okcheck = discriminator.Mapping[discriminatorValString]; len(discriminator.Mapping) > 0 && !okcheck {
1322+
if discriminatorRef, okcheck = schema.Discriminator.Mapping[discriminatorValString]; len(schema.Discriminator.Mapping) > 0 && !okcheck {
13491323
return &SchemaError{
13501324
Value: discriminatorVal,
13511325
Schema: schema,

0 commit comments

Comments
 (0)