From 3b12728fd9cd4505a3089ff5036d5edda6f7756a Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:34:24 +0100 Subject: [PATCH 1/7] refactor: rename Source to InverseName --- common/parser/parser.go | 2 +- common/types/association.go | 2 +- generate/java/java_class_tpl.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/parser/parser.go b/common/parser/parser.go index b10cc33..238d8c3 100644 --- a/common/parser/parser.go +++ b/common/parser/parser.go @@ -477,7 +477,7 @@ func buildAssociation(doc *xmlquery.Node, rel *xmlquery.Node, role types.Associa Multiplicity: rel.SelectElement("../type").SelectAttr("multiplicity"), Package: getPackagePath(targetClassElement, doc), Deprecated: rel.SelectElement("../../tags/tag[@name='DEPRECATED']") != nil, - Source: getAssociationSource(rel, role, isParent), + InverseName: getAssociationSource(rel, role, isParent), } } diff --git a/common/types/association.go b/common/types/association.go index d73999b..823693b 100644 --- a/common/types/association.go +++ b/common/types/association.go @@ -3,7 +3,7 @@ package types type Association struct { Name string Target string - Source string + InverseName string Package string Deprecated bool Multiplicity string diff --git a/generate/java/java_class_tpl.go b/generate/java/java_class_tpl.go index f3d9804..ffaf986 100644 --- a/generate/java/java_class_tpl.go +++ b/generate/java/java_class_tpl.go @@ -51,7 +51,7 @@ public {{- if .Abstract }} abstract {{- end }} class {{ .Name }} {{ if .Extends @Getter public enum Relasjonsnavn implements FintRelation { {{- range $i, $rel := .Relations }} - {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveSource $rel.Source }}){{ if ne $i $c }},{{ else }};{{ end -}} + {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveSource $rel.InverseName }}){{ if ne $i $c }},{{ else }};{{ end -}} {{ end }} private final String name; From e17428c1a18536766f5185d494bac5ced0ff66b9 Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:35:34 +0100 Subject: [PATCH 2/7] refactor: rename resolveSource to resolveInverseName --- generate/generator.go | 6 +++--- generate/java/java_class_tpl.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/generate/generator.go b/generate/generator.go index d096577..7474a8b 100644 --- a/generate/generator.go +++ b/generate/generator.go @@ -84,11 +84,11 @@ var funcMap = template.FuncMap{ return multiplicity } }, - "resolveSource": func(source string) string { - if source == "" { + "resolveInverseName": func(inverseName string) string { + if inverseName == "" { return "null" } - return strconv.Quote(source) + return strconv.Quote(inverseName) }, "modelRename": func(s string) string { if s == "FintMainObject" { diff --git a/generate/java/java_class_tpl.go b/generate/java/java_class_tpl.go index ffaf986..72656c8 100644 --- a/generate/java/java_class_tpl.go +++ b/generate/java/java_class_tpl.go @@ -51,7 +51,7 @@ public {{- if .Abstract }} abstract {{- end }} class {{ .Name }} {{ if .Extends @Getter public enum Relasjonsnavn implements FintRelation { {{- range $i, $rel := .Relations }} - {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveSource $rel.InverseName }}){{ if ne $i $c }},{{ else }};{{ end -}} + {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveInverseName $rel.InverseName }}){{ if ne $i $c }},{{ else }};{{ end -}} {{ end }} private final String name; From 5314557823d531c06560f1db4e56a9ff26aa4b80 Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:36:02 +0100 Subject: [PATCH 3/7] feat: add IsSource field to Association struct --- common/types/association.go | 1 + 1 file changed, 1 insertion(+) diff --git a/common/types/association.go b/common/types/association.go index 823693b..3e2dbf6 100644 --- a/common/types/association.go +++ b/common/types/association.go @@ -7,4 +7,5 @@ type Association struct { Package string Deprecated bool Multiplicity string + IsSource bool } From 03aec7e21bdf52320c15f4e8bd4111bb872c98da Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:37:09 +0100 Subject: [PATCH 4/7] refactor: rename getAssociationSource function to getAssociationInverseName --- common/parser/parser.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/parser/parser.go b/common/parser/parser.go index 238d8c3..bcb17a9 100644 --- a/common/parser/parser.go +++ b/common/parser/parser.go @@ -477,11 +477,11 @@ func buildAssociation(doc *xmlquery.Node, rel *xmlquery.Node, role types.Associa Multiplicity: rel.SelectElement("../type").SelectAttr("multiplicity"), Package: getPackagePath(targetClassElement, doc), Deprecated: rel.SelectElement("../../tags/tag[@name='DEPRECATED']") != nil, - InverseName: getAssociationSource(rel, role, isParent), + InverseName: getAssociationInverseName(rel, role, isParent), } } -func getAssociationSource(rel *xmlquery.Node, role types.AssociationRole, isParent bool) string { +func getAssociationInverseName(rel *xmlquery.Node, role types.AssociationRole, isParent bool) string { direction := rel.SelectElement("../../properties").SelectAttr("direction") if direction != "Bi-Directional" || isParent { From 71bd7c282224eab82b008e1de6a84825bb38fe5b Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:40:24 +0100 Subject: [PATCH 5/7] feat: set isSource in parser.go --- common/parser/parser.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/common/parser/parser.go b/common/parser/parser.go index bcb17a9..717ff11 100644 --- a/common/parser/parser.go +++ b/common/parser/parser.go @@ -460,14 +460,22 @@ func getAssociations(doc *xmlquery.Node, c *xmlquery.Node) []types.Association { continue } - assoc := buildAssociation(doc, relationElement, q.Role, isParent) + connector := relationElement.Parent.Parent + isSource := isStructuralSource(connector, classId) + + assoc := buildAssociation(doc, relationElement, q.Role, isParent, isSource) assocs = append(assocs, assoc) } } return assocs } -func buildAssociation(doc *xmlquery.Node, rel *xmlquery.Node, role types.AssociationRole, isParent bool) types.Association { +func isStructuralSource(connector *xmlquery.Node, classId string) bool { + structuralSourceID := connector.SelectElement("source").SelectAttr("idref") + return structuralSourceID == classId +} + +func buildAssociation(doc *xmlquery.Node, rel *xmlquery.Node, role types.AssociationRole, isParent bool, isSource bool) types.Association { targetId := rel.Parent.SelectAttr("idref") targetClassElement := findClassElementByID(doc, targetId) @@ -478,6 +486,7 @@ func buildAssociation(doc *xmlquery.Node, rel *xmlquery.Node, role types.Associa Package: getPackagePath(targetClassElement, doc), Deprecated: rel.SelectElement("../../tags/tag[@name='DEPRECATED']") != nil, InverseName: getAssociationInverseName(rel, role, isParent), + IsSource: isSource, } } From 63f29514cfb3facb30ae40968c50aacab59f1c28 Mon Sep 17 00:00:00 2001 From: Hknots Date: Fri, 16 Jan 2026 14:46:21 +0100 Subject: [PATCH 6/7] feat: add isSource field to java class template --- generate/generator.go | 6 ++++++ generate/java/java_class_tpl.go | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/generate/generator.go b/generate/generator.go index 7474a8b..6854343 100644 --- a/generate/generator.go +++ b/generate/generator.go @@ -90,6 +90,12 @@ var funcMap = template.FuncMap{ } return strconv.Quote(inverseName) }, + "resolveSource": func(inverseName string, isSource bool) string { + if inverseName == "" { + return "null" + } + return strconv.FormatBool(isSource) + }, "modelRename": func(s string) string { if s == "FintMainObject" { return "FintModelObject" diff --git a/generate/java/java_class_tpl.go b/generate/java/java_class_tpl.go index 72656c8..09f007f 100644 --- a/generate/java/java_class_tpl.go +++ b/generate/java/java_class_tpl.go @@ -51,19 +51,21 @@ public {{- if .Abstract }} abstract {{- end }} class {{ .Name }} {{ if .Extends @Getter public enum Relasjonsnavn implements FintRelation { {{- range $i, $rel := .Relations }} - {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveInverseName $rel.InverseName }}){{ if ne $i $c }},{{ else }};{{ end -}} + {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveInverseName $rel.InverseName }}, {{ resolveSource $rel.InverseName $rel.IsSource }}){{ if ne $i $c }},{{ else }};{{ end -}} {{ end }} private final String name; private final String packageName; private final FintMultiplicity multiplicity; private final String inverseName; + private final Boolean isSource; - private Relasjonsnavn(String name, String packageName, FintMultiplicity multiplicity, String inverseName) { + private Relasjonsnavn(String name, String packageName, FintMultiplicity multiplicity, String inverseName, Boolean isSource) { this.name = name; this.packageName = packageName; this.multiplicity = multiplicity; this.inverseName = inverseName; + this.isSource = isSource; } } {{ end -}} From 0081ef1f5ec9670d6d8f56ace166a8cb42b33cd3 Mon Sep 17 00:00:00 2001 From: Ole Anders Eidjord <26850+oleanders@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:34:20 +0100 Subject: [PATCH 7/7] swap parameter order in enum constructor --- generate/java/java_class_tpl.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate/java/java_class_tpl.go b/generate/java/java_class_tpl.go index 09f007f..327b122 100644 --- a/generate/java/java_class_tpl.go +++ b/generate/java/java_class_tpl.go @@ -51,7 +51,7 @@ public {{- if .Abstract }} abstract {{- end }} class {{ .Name }} {{ if .Extends @Getter public enum Relasjonsnavn implements FintRelation { {{- range $i, $rel := .Relations }} - {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveInverseName $rel.InverseName }}, {{ resolveSource $rel.InverseName $rel.IsSource }}){{ if ne $i $c }},{{ else }};{{ end -}} + {{ upperCase $rel.Name }}("{{ $rel.Name }}", "{{ $rel.Package }}.{{ $rel.Target }}", {{ resolveMultiplicity $rel.Multiplicity }}, {{ resolveSource $rel.InverseName $rel.IsSource }}, {{ resolveInverseName $rel.InverseName }}){{ if ne $i $c }},{{ else }};{{ end -}} {{ end }} private final String name; @@ -60,7 +60,7 @@ public {{- if .Abstract }} abstract {{- end }} class {{ .Name }} {{ if .Extends private final String inverseName; private final Boolean isSource; - private Relasjonsnavn(String name, String packageName, FintMultiplicity multiplicity, String inverseName, Boolean isSource) { + private Relasjonsnavn(String name, String packageName, FintMultiplicity multiplicity, Boolean isSource, String inverseName) { this.name = name; this.packageName = packageName; this.multiplicity = multiplicity;