internal/openapi/generator/data/objectGenerationDelegator.go   A
last analyzed

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Test Coverage

Coverage 70%

Importance

Changes 0
Metric Value
cc 11
eloc 30
dl 0
loc 50
ccs 7
cts 10
cp 0.7
crap 14.267
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A data.newObjectGenerator 0 11 1
A data.*objectGenerationDelegator.SetSchemaGenerator 0 3 1
A data.*objectGenerationDelegator.isFreeForm 0 2 3
A data.*objectGenerationDelegator.GenerateDataBySchema 0 9 3
A data.*objectGenerationDelegator.isHashMap 0 2 3
1
package data
2
3
import (
4
	"context"
5
6
	"github.com/getkin/kin-openapi/openapi3"
7
)
8
9
type objectGenerationDelegator struct {
10
	freeFormGenerator schemaGenerator
11
	hashMapGenerator  schemaGenerator
12
	objectGenerator   schemaGenerator
13
}
14
15
func newObjectGenerator(lengthGenerator arrayLengthGenerator, keyGenerator keyGenerator) schemaGenerator {
16
	return &objectGenerationDelegator{
17
		freeFormGenerator: &freeFormGenerator{
18
			lengthGenerator: lengthGenerator,
19
			keyGenerator:    keyGenerator,
20
		},
21
		hashMapGenerator: &hashMapGenerator{
22
			lengthGenerator: lengthGenerator,
23
			keyGenerator:    keyGenerator,
24
		},
25
		objectGenerator: &objectGenerator{},
26
	}
27
}
28
29
func (delegator *objectGenerationDelegator) SetSchemaGenerator(schemaGenerator schemaGenerator) {
30
	delegator.hashMapGenerator.(recursiveGenerator).SetSchemaGenerator(schemaGenerator)
31
	delegator.objectGenerator.(recursiveGenerator).SetSchemaGenerator(schemaGenerator)
32
}
33
34
func (delegator *objectGenerationDelegator) GenerateDataBySchema(ctx context.Context, schema *openapi3.Schema) (Data, error) {
35 1
	if delegator.isHashMap(schema) {
36 1
		return delegator.hashMapGenerator.GenerateDataBySchema(ctx, schema)
37
	}
38 1
	if delegator.isFreeForm(schema) {
39 1
		return delegator.freeFormGenerator.GenerateDataBySchema(ctx, schema)
40
	}
41
42 1
	return delegator.objectGenerator.GenerateDataBySchema(ctx, schema)
43
}
44
45
func (delegator *objectGenerationDelegator) isHashMap(schema *openapi3.Schema) bool {
46 1
	return schema.AdditionalProperties != nil && schema.AdditionalProperties.Value != nil && schema.AdditionalProperties.Value.Type != ""
47
}
48
49
func (delegator *objectGenerationDelegator) isFreeForm(schema *openapi3.Schema) bool {
50 1
	return schema.AdditionalProperties != nil || schema.AdditionalPropertiesAllowed != nil && *schema.AdditionalPropertiesAllowed
51
}
52