Skip to content

Commit d658094

Browse files
committed
use ai suggestions
1 parent 6613fa6 commit d658094

3 files changed

Lines changed: 25 additions & 3 deletions

File tree

pkg/apic/servicebuilder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ func (b *serviceBodyBuilder) Build() (ServiceBody, error) {
300300
return b.serviceBody, b.err
301301
}
302302

303-
specParser := NewSpecResourceParser(b.serviceBody.SpecDefinition, b.serviceBody.ResourceType)
303+
specParser := newParser(b.serviceBody.SpecDefinition, b.serviceBody.ResourceType)
304304
err := specParser.Parse()
305305
if err != nil {
306306
return b.serviceBody, fmt.Errorf("failed to parse service specification for '%s': %s", b.serviceBody.APIName, err)

pkg/apic/servicebuilder_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ func TestServiceBodyBuilderWithLargeSpec(t *testing.T) {
263263
assert.NotNil(t, sb)
264264
assert.NotEqual(t, sb.originalSpecHash, sb.specHash)
265265

266-
t.Cleanup(func() { NewSpecResourceParser = newSpecResourceParser() })
266+
t.Cleanup(resetSpecParserFactoryForTest)
267267

268268
// The original hash is computed before stripping, so it must differ from the final spec hash.
269269
NewSpecResourceParserFactory(WithTagsToStrip([]string{"pet", "store", "user"}))
@@ -309,3 +309,10 @@ func TestServiceBodyBuilderWithLargeSpec(t *testing.T) {
309309
assert.NotNil(t, sb)
310310
assert.Equal(t, sb.originalSpecHash, sb.specHash)
311311
}
312+
313+
func resetSpecParserFactoryForTest() {
314+
specParserFactoryMu.Lock()
315+
defer specParserFactoryMu.Unlock()
316+
317+
NewSpecResourceParser = newSpecResourceParser()
318+
}

pkg/apic/specparser.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"errors"
77
"fmt"
88
"strings"
9+
"sync"
910

1011
management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
1112
"github.com/Axway/agent-sdk/pkg/util"
@@ -74,7 +75,10 @@ type SpecResourceParser struct {
7475
type newSpecParserFunc func(resourceSpec []byte, resourceSpecType string) SpecResourceParser
7576
type specParserOpt func(*SpecResourceParser)
7677

77-
var NewSpecResourceParser newSpecParserFunc = newSpecResourceParser()
78+
var (
79+
specParserFactoryMu sync.RWMutex
80+
NewSpecResourceParser newSpecParserFunc = newSpecResourceParser()
81+
)
7882

7983
func WithTagsToStrip(tags []string) specParserOpt {
8084
return func(sp *SpecResourceParser) {
@@ -83,9 +87,20 @@ func WithTagsToStrip(tags []string) specParserOpt {
8387
}
8488

8589
func NewSpecResourceParserFactory(opts ...specParserOpt) {
90+
specParserFactoryMu.Lock()
91+
defer specParserFactoryMu.Unlock()
92+
8693
NewSpecResourceParser = newSpecResourceParser(opts...)
8794
}
8895

96+
func newParser(resourceSpec []byte, resourceSpecType string) SpecResourceParser {
97+
specParserFactoryMu.RLock()
98+
parserConstructor := NewSpecResourceParser
99+
specParserFactoryMu.RUnlock()
100+
101+
return parserConstructor(resourceSpec, resourceSpecType)
102+
}
103+
89104
func newSpecResourceParser(opts ...specParserOpt) newSpecParserFunc {
90105
return func(resourceSpec []byte, resourceSpecType string) SpecResourceParser {
91106
hash, _ := util.ComputeHash(resourceSpec)

0 commit comments

Comments
 (0)