[VOL-2938]Failure seen when parsing adapter config

Change-Id: Ie044eb110c36fc4b7597457fa6b1f6c94cd1baff
diff --git a/pkg/model/utils.go b/pkg/model/utils.go
index 15ef51f..682b8d1 100644
--- a/pkg/model/utils.go
+++ b/pkg/model/utils.go
@@ -16,23 +16,68 @@
 package model
 
 import (
+	"errors"
 	"github.com/jhump/protoreflect/dynamic"
 )
 
-func GetEnumValue(val *dynamic.Message, name string) string {
-	return val.FindFieldDescriptorByName(name).GetEnumType().
-		FindValueByNumber(val.GetFieldByName(name).(int32)).GetName()
-}
-
-func SetEnumValue(msg *dynamic.Message, name string, value string) {
-	eValue := msg.FindFieldDescriptorByName(name).GetEnumType().FindValueByName(value)
-	msg.SetFieldByName(name, eValue.GetNumber())
-}
-
-func GetEnumString(msg *dynamic.Message, name string, value int32) string {
-	eValue := msg.FindFieldDescriptorByName(name).GetEnumType().FindValueByNumber(value)
-	if eValue == nil {
-		panic("eValue is nil")
+func GetEnumValue(val *dynamic.Message, name string) (string, error) {
+	fd := val.FindFieldDescriptorByName(name)
+	if fd == nil {
+		return "", errors.New("fieldDescriptor is nil for " + name)
 	}
-	return eValue.GetName()
+
+	enumType := fd.GetEnumType()
+	if enumType == nil {
+		return "", errors.New("enumType is nil for " + name)
+	}
+
+	field, ok := val.GetFieldByName(name).(int32)
+	if !ok {
+		return "", errors.New("Enum integer value not found for " + name)
+	}
+
+	eValue := enumType.FindValueByNumber(field)
+	if eValue == nil {
+		return "", errors.New("Value not found for " + name)
+	}
+
+	return eValue.GetName(), nil
+}
+
+func SetEnumValue(msg *dynamic.Message, name string, value string) error {
+	fd := msg.FindFieldDescriptorByName(name)
+	if fd == nil {
+		return errors.New("fieldDescriptor is nil for " + name)
+	}
+
+	enumType := fd.GetEnumType()
+	if enumType == nil {
+		return errors.New("enumType is nil for " + name)
+	}
+
+	eValue := enumType.FindValueByName(value)
+	if eValue == nil {
+		return errors.New("Value not found for " + name)
+	}
+
+	msg.SetFieldByName(name, eValue.GetNumber())
+	return nil
+}
+
+func GetEnumString(msg *dynamic.Message, name string, value int32) (string, error) {
+	fd := msg.FindFieldDescriptorByName(name)
+	if fd == nil {
+		return "", errors.New("fieldDescriptor is nil for " + name)
+	}
+
+	enumType := fd.GetEnumType()
+	if enumType == nil {
+		return "", errors.New("enumType is nil for " + name)
+	}
+
+	eValue := enumType.FindValueByNumber(value)
+	if eValue == nil {
+		return "", errors.New("Value not found for " + name)
+	}
+	return eValue.GetName(), nil
 }