diff --git a/src/Model/EnumValueGo.cs b/src/Model/EnumValueGo.cs
index 0e2ed2da4c..76a7a22ce2 100644
--- a/src/Model/EnumValueGo.cs
+++ b/src/Model/EnumValueGo.cs
@@ -18,7 +18,7 @@ public static string FormatName(EnumTypeGo parent, EnumValueGo value)
// TODO: ideally the core would set the Parent field to that of the EnumTypeGo
// to which this belongs, for now this is how we work around that.
var parentName = parent.Name.ToString();
- return $"{parentName.Substring(0, parentName.Length - 4)}{value.Name}";
+ return $"{parentName.Substring(0, parentName.Length - 4)}{value.MemberName}";
}
}
}
diff --git a/src/Model/ParameterGo.cs b/src/Model/ParameterGo.cs
index e71c062264..5f36939567 100644
--- a/src/Model/ParameterGo.cs
+++ b/src/Model/ParameterGo.cs
@@ -123,7 +123,7 @@ public string DefaultValueString
}
///
- /// Get Name for parameter for Go map.
+ /// Get Name for parameter for Go map.
/// If parameter is client parameter, then return client.
///
///
@@ -275,7 +275,13 @@ public string GetOptionalComparand()
return "nil";
}
- return $"{et.Name}None";
+ var typeName = et.Name.ToString();
+ if (typeName.EndsWith("Type"))
+ {
+ typeName = typeName.Substring(0, typeName.Length - 4);
+ }
+
+ return $"{typeName}None";
}
///
@@ -300,7 +306,7 @@ public static class ParameterGoExtensions
///
public static string Format(this ParameterGo parameter)
{
- return parameter.IsPassedByValue() ? "{0}" : "*{0}";
+ return parameter.IsPassedByValue() ? "{0}" : "*{0}";
}
///
@@ -338,7 +344,7 @@ public static string GetStringFormat(this ParameterGo parameter, string defaultF
// e.g. (*fooparam).Format(rfc339Format)
defaultFormat = $"({defaultFormat})";
}
-
+
if (parameter.ModelType.IsPrimaryType(KnownPrimaryType.DateTimeRfc1123))
{
return $"{defaultFormat}.In(gmt).Format(time.RFC1123)";
diff --git a/src/Templates/MarshallingXml.cshtml b/src/Templates/MarshallingXml.cshtml
index f1194f9946..7229c946ec 100644
--- a/src/Templates/MarshallingXml.cshtml
+++ b/src/Templates/MarshallingXml.cshtml
@@ -40,15 +40,20 @@
@(Model.Name.FixedValue.ToShortName())Array := []@(Model.GetInterfaceName()){}
for t, err := d.Token(); err == nil; t, err = d.Token() {
- tt, ok := t.(xml.StartElement)
- if !ok {
- continue
- }
- @(Model.Name.FixedValue.ToShortName()), err := unmarshal@(Model.GetInterfaceName())(d, tt)
+ ttStart, ok := t.(xml.StartElement)
+ if ok {
+ @(Model.Name.FixedValue.ToShortName()), err := unmarshal@(Model.GetInterfaceName())(d, ttStart)
if err == nil {
@(Model.Name.FixedValue.ToShortName())Array = append(@(Model.Name.FixedValue.ToShortName())Array, @(Model.Name.FixedValue.ToShortName()))
}
}
+
+ ttEnd, ok := t.(xml.EndElement)
+ if ok && start.End() == ttEnd {
+ break;
+ }
+ continue;
+ }
return @(Model.Name.FixedValue.ToShortName())Array, nil
}
diff --git a/src/TransformerGo.cs b/src/TransformerGo.cs
index 1e7229c441..2060f2349e 100644
--- a/src/TransformerGo.cs
+++ b/src/TransformerGo.cs
@@ -86,10 +86,17 @@ private void TransformEnumTypes(CodeModelGo cmg)
foreach (var et in cmg.EnumTypes)
{
var e = et as EnumTypeGo;
- var ev = new EnumValueGo();
- ev.Name = "None";
- ev.Description = $"{EnumValueGo.FormatName(e, ev)} represents an empty {e.Name}.";
+ var ev = new EnumValueGo
+ {
+ Name = "None"
+ };
+ ev.Description = $"represents an empty {e.Name}.";
e.Values.Add(ev);
+
+ foreach (var enumValue in et.Values)
+ {
+ enumValue.Name = EnumValueGo.FormatName((EnumTypeGo)et, (EnumValueGo)enumValue);
+ }
}
// And add any others with a defined name and value list (but not already located)
@@ -120,9 +127,14 @@ private void TransformEnumTypes(CodeModelGo cmg)
var enumValues = new List();
- var baseTypeEnumValue = new EnumValue
+ var typeName = $"{CodeNamerGo.Instance.GetTypeName(mt.PolymorphicDiscriminator)}";
+ if (typeName.EndsWith("Type"))
+ {
+ typeName = typeName.Substring(0, typeName.Length - 4);
+ }
+ var baseTypeEnumValue = new EnumValueGo
{
- Name = $"{CodeNamerGo.Instance.GetTypeName(mt.PolymorphicDiscriminator)}{CodeNamerGo.Instance.GetTypeName(mt.SerializedName)}",
+ Name = $"{typeName}{CodeNamerGo.Instance.GetTypeName(mt.SerializedName)}",
SerializedName = mt.SerializedName
};
@@ -130,9 +142,9 @@ private void TransformEnumTypes(CodeModelGo cmg)
foreach (var dt in mt.DerivedTypes)
{
- var ev = new EnumValue
+ var ev = new EnumValueGo
{
- Name = $"{CodeNamerGo.Instance.GetTypeName(mt.PolymorphicDiscriminator)}{CodeNamerGo.Instance.GetTypeName(dt.SerializedName)}",
+ Name = $"{typeName}{CodeNamerGo.Instance.GetTypeName(dt.SerializedName)}",
SerializedName = dt.SerializedName
};
enumValues.Add(ev);
@@ -152,7 +164,7 @@ private void TransformEnumTypes(CodeModelGo cmg)
}
else
{
- mt.DiscriminatorEnum = cmg.Add(New(new
+ mt.DiscriminatorEnum = cmg.Add(New(new
{
Name = enumWithSameName == null ? mt.PolymorphicDiscriminator : $"{mt.PolymorphicDiscriminator}{mt.GetInterfaceName()}",
Values = enumValues,
@@ -167,7 +179,7 @@ private static void AssureUniqueNames(CodeModelGo cmg)
// NOTE: this must be done after all enum types have been accounted for
foreach (var enumType in cmg.EnumTypes)
{
- enumType.SetName(CodeNamerGo.Instance.GetTypeName(enumType.Name.FixedValue));
+ enumType.SetName(CodeNamerGo.Instance.GetTypeName(enumType.Name));
foreach (var v in enumType.Values)
{
v.Name = CodeNamerGo.Instance.GetEnumMemberName(v.Name);
diff --git a/test/src/tests/generated/body-string/models.go b/test/src/tests/generated/body-string/models.go
index d0b89e5c0b..4571fdab04 100644
--- a/test/src/tests/generated/body-string/models.go
+++ b/test/src/tests/generated/body-string/models.go
@@ -25,23 +25,23 @@ func joinConst(s interface{}, sep string) string {
return strings.Join(ss, sep)
}
-// ColorsType enumerates the values for colors.
+// ColorsType enumerates the values for colors type.
type ColorsType string
const (
- // BlueColor ...
- BlueColor ColorsType = "blue_color"
- // GreenColor ...
- GreenColor ColorsType = "green-color"
- // None ColorsNone represents an empty ColorsType.
- None ColorsType = ""
- // Redcolor ...
- Redcolor ColorsType = "red color"
+ // ColorsBlueColor ...
+ ColorsBlueColor ColorsType = "blue_color"
+ // ColorsGreenColor ...
+ ColorsGreenColor ColorsType = "green-color"
+ // ColorsNone ColorsNone represents an empty ColorsType.
+ ColorsNone ColorsType = ""
+ // ColorsRedcolor ...
+ ColorsRedcolor ColorsType = "red color"
)
// PossibleColorsTypeValues returns an array of possible values for the ColorsType const type.
func PossibleColorsTypeValues() []ColorsType {
- return []ColorsType{BlueColor, GreenColor, None, Redcolor}
+ return []ColorsType{ColorsBlueColor, ColorsGreenColor, ColorsNone, ColorsRedcolor}
}
// Error ...
@@ -139,7 +139,7 @@ func (gmr GetMbcsResponse) Status() string {
// GetNotExpandableResponse ...
type GetNotExpandableResponse struct {
rawResponse *http.Response
- // Value - Possible values include: 'Redcolor', 'GreenColor', 'BlueColor', 'None'
+ // Value - Possible values include: 'ColorsRedcolor', 'ColorsGreenColor', 'ColorsBlueColor', 'ColorsNone'
Value ColorsType `json:"value,omitempty"`
}
@@ -225,7 +225,7 @@ func (gnr GetNullResponse) Status() string {
// GetReferencedResponse ...
type GetReferencedResponse struct {
rawResponse *http.Response
- // Value - Possible values include: 'Redcolor', 'GreenColor', 'BlueColor', 'None'
+ // Value - Possible values include: 'ColorsRedcolor', 'ColorsGreenColor', 'ColorsBlueColor', 'ColorsNone'
Value ColorsType `json:"value,omitempty"`
}