Skip to content

Commit 8d05a12

Browse files
committed
clean up
Signed-off-by: alex boten <[email protected]>
1 parent c14fcc3 commit 8d05a12

File tree

4 files changed

+72
-486
lines changed

4 files changed

+72
-486
lines changed

otelconf/config_common.go

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -324,18 +324,6 @@ func supportedHistogramAggregation(in ExporterDefaultHistogramAggregation) error
324324
return newErrInvalid(fmt.Sprintf("invalid histogram aggregation (expected one of %#v): %#v", enumValuesOTLPMetricDefaultHistogramAggregation, in))
325325
}
326326

327-
var enumValuesAttributeType = []any{
328-
nil,
329-
"string",
330-
"bool",
331-
"int",
332-
"double",
333-
"string_array",
334-
"bool_array",
335-
"int_array",
336-
"double_array",
337-
}
338-
339327
// MarshalUnmarshaler combines marshal and unmarshal operations.
340328
type MarshalUnmarshaler interface {
341329
Marshal(v any) ([]byte, error)
@@ -398,16 +386,3 @@ func setConfigDefaults(raw map[string]any, plain *OpenTelemetryConfiguration, co
398386

399387
return nil
400388
}
401-
402-
// validateStringField validates a string field is present and correct type.
403-
func validateStringField(raw map[string]any, fieldName string) (string, error) {
404-
v, ok := raw[fieldName]
405-
if !ok {
406-
return "", fmt.Errorf("cannot unmarshal field %s in NameStringValuePair required", fieldName)
407-
}
408-
str, ok := v.(string)
409-
if !ok {
410-
return "", fmt.Errorf("cannot unmarshal field %s in NameStringValuePair must be string", fieldName)
411-
}
412-
return str, nil
413-
}

otelconf/config_json.go

Lines changed: 16 additions & 213 deletions
Original file line numberDiff line numberDiff line change
@@ -199,28 +199,6 @@ func (j *AttributeType) MarshalJSON() ([]byte, error) {
199199
return json.Marshal(j.Value)
200200
}
201201

202-
// UnmarshalJSON implements json.Unmarshaler.
203-
func (j *AttributeType) UnmarshalJSON(b []byte) error {
204-
var v struct {
205-
Value any
206-
}
207-
if err := json.Unmarshal(b, &v.Value); err != nil {
208-
return err
209-
}
210-
var ok bool
211-
for _, expected := range enumValuesAttributeType {
212-
if reflect.DeepEqual(v.Value, expected) {
213-
ok = true
214-
break
215-
}
216-
}
217-
if !ok {
218-
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesAttributeType, v.Value)
219-
}
220-
*j = AttributeType(v)
221-
return nil
222-
}
223-
224202
// UnmarshalJSON implements json.Unmarshaler.
225203
func (j *TextMapPropagator) UnmarshalJSON(b []byte) error {
226204
type Plain TextMapPropagator
@@ -340,81 +318,11 @@ func (j *BatchSpanProcessor) UnmarshalJSON(b []byte) error {
340318
return nil
341319
}
342320

343-
// UnmarshalJSON implements json.Unmarshaler.
344-
func (j *ExperimentalPeerInstrumentationServiceMappingElem) UnmarshalJSON(b []byte) error {
345-
var raw map[string]any
346-
if err := json.Unmarshal(b, &raw); err != nil {
347-
return err
348-
}
349-
if _, ok := raw["peer"]; raw != nil && !ok {
350-
return errors.New("field peer in ExperimentalPeerInstrumentationServiceMappingElem: required")
351-
}
352-
if _, ok := raw["service"]; raw != nil && !ok {
353-
return errors.New("field service in ExperimentalPeerInstrumentationServiceMappingElem: required")
354-
}
355-
type Plain ExperimentalPeerInstrumentationServiceMappingElem
356-
var plain Plain
357-
if err := json.Unmarshal(b, &plain); err != nil {
358-
return err
359-
}
360-
*j = ExperimentalPeerInstrumentationServiceMappingElem(plain)
361-
return nil
362-
}
363-
364-
// UnmarshalJSON implements json.Unmarshaler.
365-
func (j *NameStringValuePair) UnmarshalJSON(b []byte) error {
366-
var raw map[string]any
367-
if err := json.Unmarshal(b, &raw); err != nil {
368-
return err
369-
}
370-
371-
name, err := validateStringField(raw, "name")
372-
if err != nil {
373-
return err
374-
}
375-
376-
value, err := validateStringField(raw, "value")
377-
if err != nil {
378-
return err
379-
}
380-
381-
*j = NameStringValuePair{
382-
Name: name,
383-
Value: &value,
384-
}
385-
return nil
386-
}
387-
388-
var enumValuesOTLPMetricDefaultHistogramAggregation = []any{
389-
"explicit_bucket_histogram",
390-
"base2_exponential_bucket_histogram",
391-
}
392-
393-
// UnmarshalJSON implements json.Unmarshaler.
394-
func (j *ExporterDefaultHistogramAggregation) UnmarshalJSON(b []byte) error {
395-
var v string
396-
if err := json.Unmarshal(b, &v); err != nil {
397-
return err
398-
}
399-
var ok bool
400-
for _, expected := range enumValuesOTLPMetricDefaultHistogramAggregation {
401-
if reflect.DeepEqual(v, expected) {
402-
ok = true
403-
break
404-
}
405-
}
406-
if !ok {
407-
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesOTLPMetricDefaultHistogramAggregation, v)
408-
}
409-
*j = ExporterDefaultHistogramAggregation(v)
410-
return nil
411-
}
412-
413321
// UnmarshalJSON implements json.Unmarshaler.
414322
func (j *OpenTelemetryConfiguration) UnmarshalJSON(b []byte) error {
415323
var raw map[string]any
416324
if err := json.Unmarshal(b, &raw); err != nil {
417-
return err
325+
return errors.Join(newErrUnmarshal(j), err)
418326
}
419327
if _, ok := raw["file_format"]; raw != nil && !ok {
420328
return errors.New("field file_format in OpenTelemetryConfiguration: required")
@@ -425,96 +333,96 @@ func (j *OpenTelemetryConfiguration) UnmarshalJSON(b []byte) error {
425333
if v, ok := raw["logger_provider"]; ok && v != nil {
426334
marshaled, err := json.Marshal(v)
427335
if err != nil {
428-
return err
336+
return errors.Join(newErrUnmarshal(j), err)
429337
}
430338
var lp LoggerProviderJson
431339
if err := json.Unmarshal(marshaled, &lp); err != nil {
432-
return err
340+
return errors.Join(newErrUnmarshal(j), err)
433341
}
434342
plain.LoggerProvider = &lp
435343
}
436344

437345
if v, ok := raw["meter_provider"]; ok && v != nil {
438346
marshaled, err := json.Marshal(v)
439347
if err != nil {
440-
return err
348+
return errors.Join(newErrUnmarshal(j), err)
441349
}
442350

443351
var mp MeterProviderJson
444352
if err := json.Unmarshal(marshaled, &mp); err != nil {
445-
return err
353+
return errors.Join(newErrUnmarshal(j), err)
446354
}
447355
plain.MeterProvider = &mp
448356
}
449357

450358
if v, ok := raw["tracer_provider"]; ok && v != nil {
451359
marshaled, err := json.Marshal(v)
452360
if err != nil {
453-
return err
361+
return errors.Join(newErrUnmarshal(j), err)
454362
}
455363

456364
var tp TracerProviderJson
457365
if err := json.Unmarshal(marshaled, &tp); err != nil {
458-
return err
366+
return errors.Join(newErrUnmarshal(j), err)
459367
}
460368
plain.TracerProvider = &tp
461369
}
462370

463371
if v, ok := raw["propagator"]; ok && v != nil {
464372
marshaled, err := json.Marshal(v)
465373
if err != nil {
466-
return err
374+
return errors.Join(newErrUnmarshal(j), err)
467375
}
468376

469377
var p PropagatorJson
470378
if err := json.Unmarshal(marshaled, &p); err != nil {
471-
return err
379+
return errors.Join(newErrUnmarshal(j), err)
472380
}
473381
plain.Propagator = &p
474382
}
475383

476384
if v, ok := raw["resource"]; ok && v != nil {
477385
marshaled, err := json.Marshal(v)
478386
if err != nil {
479-
return err
387+
return errors.Join(newErrUnmarshal(j), err)
480388
}
481389

482390
var r ResourceJson
483391
if err := json.Unmarshal(marshaled, &r); err != nil {
484-
return err
392+
return errors.Join(newErrUnmarshal(j), err)
485393
}
486394
plain.Resource = &r
487395
}
488396

489397
if v, ok := raw["instrumentation/development"]; ok && v != nil {
490398
marshaled, err := json.Marshal(v)
491399
if err != nil {
492-
return err
400+
return errors.Join(newErrUnmarshal(j), err)
493401
}
494402

495403
var i InstrumentationJson
496404
if err := json.Unmarshal(marshaled, &i); err != nil {
497-
return err
405+
return errors.Join(newErrUnmarshal(j), err)
498406
}
499407
plain.InstrumentationDevelopment = &i
500408
}
501409

502410
if v, ok := raw["attribute_limits"]; ok && v != nil {
503411
marshaled, err := json.Marshal(v)
504412
if err != nil {
505-
return err
413+
return errors.Join(newErrUnmarshal(j), err)
506414
}
507415

508416
var a AttributeLimits
509417
if err := json.Unmarshal(marshaled, &a); err != nil {
510-
return err
418+
return errors.Join(newErrUnmarshal(j), err)
511419
}
512420
plain.AttributeLimits = &a
513421
}
514422

515423
plainConfig := (*OpenTelemetryConfiguration)(&plain)
516424
if err := setConfigDefaults(raw, plainConfig, jsonCodec{}); err != nil {
517-
return err
425+
return errors.Join(newErrUnmarshal(j), err)
518426
}
519427

520428
plain.FileFormat = fmt.Sprintf("%v", raw["file_format"])
@@ -563,24 +471,6 @@ func (j *CardinalityLimits) UnmarshalJSON(value []byte) error {
563471
return nil
564472
}
565473

566-
// UnmarshalJSON implements json.Unmarshaler.
567-
func (j *PullMetricReader) UnmarshalJSON(b []byte) error {
568-
var raw map[string]any
569-
if err := json.Unmarshal(b, &raw); err != nil {
570-
return err
571-
}
572-
if _, ok := raw["exporter"]; raw != nil && !ok {
573-
return errors.New("field exporter in PullMetricReader: required")
574-
}
575-
type Plain PullMetricReader
576-
var plain Plain
577-
if err := json.Unmarshal(b, &plain); err != nil {
578-
return err
579-
}
580-
*j = PullMetricReader(plain)
581-
return nil
582-
}
583-
584474
// UnmarshalJSON implements json.Unmarshaler.
585475
func (j *SpanLimits) UnmarshalJSON(value []byte) error {
586476
type Plain SpanLimits
@@ -619,24 +509,6 @@ func (j *OTLPHttpMetricExporter) UnmarshalJSON(b []byte) error {
619509
return nil
620510
}
621511

622-
// UnmarshalJSON implements json.Unmarshaler.
623-
func (j *SimpleLogRecordProcessor) UnmarshalJSON(b []byte) error {
624-
var raw map[string]any
625-
if err := json.Unmarshal(b, &raw); err != nil {
626-
return err
627-
}
628-
if _, ok := raw["exporter"]; raw != nil && !ok {
629-
return errors.New("field exporter in SimpleLogRecordProcessor: required")
630-
}
631-
type Plain SimpleLogRecordProcessor
632-
var plain Plain
633-
if err := json.Unmarshal(b, &plain); err != nil {
634-
return err
635-
}
636-
*j = SimpleLogRecordProcessor(plain)
637-
return nil
638-
}
639-
640512
// UnmarshalJSON implements json.Unmarshaler.
641513
func (j *OTLPGrpcMetricExporter) UnmarshalJSON(b []byte) error {
642514
type Plain OTLPGrpcMetricExporter
@@ -661,54 +533,6 @@ func (j *OTLPGrpcMetricExporter) UnmarshalJSON(b []byte) error {
661533
return nil
662534
}
663535

664-
// UnmarshalJSON implements json.Unmarshaler.
665-
func (j *SimpleSpanProcessor) UnmarshalJSON(b []byte) error {
666-
var raw map[string]any
667-
if err := json.Unmarshal(b, &raw); err != nil {
668-
return err
669-
}
670-
if _, ok := raw["exporter"]; raw != nil && !ok {
671-
return errors.New("field exporter in SimpleSpanProcessor: required")
672-
}
673-
type Plain SimpleSpanProcessor
674-
var plain Plain
675-
if err := json.Unmarshal(b, &plain); err != nil {
676-
return err
677-
}
678-
*j = SimpleSpanProcessor(plain)
679-
return nil
680-
}
681-
682-
var enumValuesViewSelectorInstrumentType = []any{
683-
"counter",
684-
"gauge",
685-
"histogram",
686-
"observable_counter",
687-
"observable_gauge",
688-
"observable_up_down_counter",
689-
"up_down_counter",
690-
}
691-
692-
// UnmarshalJSON implements json.Unmarshaler.
693-
func (j *InstrumentType) UnmarshalJSON(b []byte) error {
694-
var v string
695-
if err := json.Unmarshal(b, &v); err != nil {
696-
return err
697-
}
698-
var ok bool
699-
for _, expected := range enumValuesViewSelectorInstrumentType {
700-
if reflect.DeepEqual(v, expected) {
701-
ok = true
702-
break
703-
}
704-
}
705-
if !ok {
706-
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesViewSelectorInstrumentType, v)
707-
}
708-
*j = InstrumentType(v)
709-
return nil
710-
}
711-
712536
// UnmarshalJSON implements json.Unmarshaler.
713537
func (j *OTLPHttpExporter) UnmarshalJSON(b []byte) error {
714538
type Plain OTLPHttpExporter
@@ -733,27 +557,6 @@ func (j *OTLPHttpExporter) UnmarshalJSON(b []byte) error {
733557
return nil
734558
}
735559

736-
// UnmarshalJSON implements json.Unmarshaler.
737-
func (j *ZipkinSpanExporter) UnmarshalJSON(b []byte) error {
738-
var raw map[string]any
739-
if err := json.Unmarshal(b, &raw); err != nil {
740-
return err
741-
}
742-
if _, ok := raw["endpoint"]; raw != nil && !ok {
743-
return errors.New("field endpoint in ZipkinSpanExporter: required")
744-
}
745-
type Plain ZipkinSpanExporter
746-
var plain Plain
747-
if err := json.Unmarshal(b, &plain); err != nil {
748-
return err
749-
}
750-
if plain.Timeout != nil && 0 > *plain.Timeout {
751-
return fmt.Errorf("field %s: must be >= %v", "timeout", 0)
752-
}
753-
*j = ZipkinSpanExporter(plain)
754-
return nil
755-
}
756-
757560
// UnmarshalJSON implements json.Unmarshaler.
758561
func (j *OTLPGrpcExporter) UnmarshalJSON(b []byte) error {
759562
type Plain OTLPGrpcExporter

0 commit comments

Comments
 (0)