diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-03-09 19:30:46 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-03-09 19:30:46 +0000 |
commit | 3ca903a8e464d74216bb08490af0bb5a1ff633a0 (patch) | |
tree | 54b3e5fb49cdbe8c1c36d40bd71fd20dbc66975f /config-model/src | |
parent | 484d935f900430ae871f21dbc7c8014971151094 (diff) |
sort to make generated config more predictable
Diffstat (limited to 'config-model/src')
5 files changed, 114 insertions, 102 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java index 9b4b3eba3a7..378fdb4e1df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java @@ -11,9 +11,11 @@ import com.yahoo.documentmodel.NewDocumentType; import com.yahoo.documentmodel.VespaDocumentType; import com.yahoo.searchdefinition.document.FieldSet; import com.yahoo.vespa.documentmodel.DocumentModel; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.IdentityHashMap; @@ -262,6 +264,13 @@ public class DocumentManager { } } + static private <T> List<T> sortedList(Collection<T> unsorted, Comparator<T> cmp) { + var list = new ArrayList<T>(); + list.addAll(unsorted); + list.sort(cmp); + return list; + } + private void docTypeBuild(NewDocumentType documentType, DocumentmanagerConfig.Builder builder, IdxMap indexMap) { DocumentmanagerConfig.Doctype.Builder db = new DocumentmanagerConfig.Doctype.Builder(); db. @@ -274,11 +283,14 @@ public class DocumentManager { db.inherits(b -> b.idx(indexMap.idxOf(inherited))); } docTypeBuildAnyType(documentType.getHeader(), db, indexMap); - for (DataType dt : documentType.getAllTypes().getTypes()) { + + for (DataType dt : sortedList(documentType.getAllTypes().getTypes(), + (a,b) -> a.getName().compareTo(b.getName()))) { docTypeBuildAnyType(dt, db, indexMap); } - for (AnnotationType annotation : documentType.getAnnotations()) { - docTypeBuildAnnotationType(annotation, db, indexMap); + for (AnnotationType ann : sortedList(documentType.getAnnotations(), + (a,b) -> a.getName().compareTo(b.getName()))) { + docTypeBuildAnnotationType(ann, db, indexMap); } builder.doctype(db); indexMap.setDone(documentType); diff --git a/config-model/src/test/derived/inheritance/documentmanager.cfg b/config-model/src/test/derived/inheritance/documentmanager.cfg index 4a25f8c3a64..321bf9979cd 100644 --- a/config-model/src/test/derived/inheritance/documentmanager.cfg +++ b/config-model/src/test/derived/inheritance/documentmanager.cfg @@ -4,41 +4,41 @@ doctype[0].name "document" doctype[0].idx 10000 doctype[0].contentstruct 10001 doctype[0].primitivetype[0].idx 10002 -doctype[0].primitivetype[0].name "byte" +doctype[0].primitivetype[0].name "bool" doctype[0].primitivetype[1].idx 10003 -doctype[0].primitivetype[1].name "int" +doctype[0].primitivetype[1].name "byte" doctype[0].primitivetype[2].idx 10004 -doctype[0].primitivetype[2].name "long" +doctype[0].primitivetype[2].name "double" doctype[0].primitivetype[3].idx 10005 -doctype[0].primitivetype[3].name "string" +doctype[0].primitivetype[3].name "float" doctype[0].primitivetype[4].idx 10006 -doctype[0].primitivetype[4].name "raw" -doctype[0].primitivetype[5].idx 10008 -doctype[0].primitivetype[5].name "float" -doctype[0].primitivetype[6].idx 10009 -doctype[0].primitivetype[6].name "double" -doctype[0].primitivetype[7].idx 10011 -doctype[0].primitivetype[7].name "uri" -doctype[0].primitivetype[8].idx 10012 -doctype[0].primitivetype[8].name "predicate" -doctype[0].primitivetype[9].idx 10013 -doctype[0].primitivetype[9].name "bool" +doctype[0].primitivetype[4].name "float16" +doctype[0].primitivetype[5].idx 10007 +doctype[0].primitivetype[5].name "int" +doctype[0].primitivetype[6].idx 10008 +doctype[0].primitivetype[6].name "long" +doctype[0].primitivetype[7].idx 10010 +doctype[0].primitivetype[7].name "predicate" +doctype[0].primitivetype[8].idx 10011 +doctype[0].primitivetype[8].name "raw" +doctype[0].primitivetype[9].idx 10012 +doctype[0].primitivetype[9].name "string" doctype[0].primitivetype[10].idx 10014 -doctype[0].primitivetype[10].name "float16" -doctype[0].wsettype[0].idx 10007 -doctype[0].wsettype[0].elementtype 10005 +doctype[0].primitivetype[10].name "uri" +doctype[0].wsettype[0].idx 10013 +doctype[0].wsettype[0].elementtype 10012 doctype[0].wsettype[0].createifnonexistent true doctype[0].wsettype[0].removeifzero true doctype[0].structtype[0].idx 10001 doctype[0].structtype[0].name "document.header" -doctype[0].structtype[1].idx 10010 +doctype[0].structtype[1].idx 10009 doctype[0].structtype[1].name "position" doctype[0].structtype[1].field[0].name "x" doctype[0].structtype[1].field[0].internalid 914677694 -doctype[0].structtype[1].field[0].type 10003 +doctype[0].structtype[1].field[0].type 10007 doctype[0].structtype[1].field[1].name "y" doctype[0].structtype[1].field[1].internalid 900009410 -doctype[0].structtype[1].field[1].type 10003 +doctype[0].structtype[1].field[1].type 10007 doctype[1].name "grandparent" doctype[1].idx 10015 doctype[1].inherits[0].idx 10000 @@ -49,10 +49,10 @@ doctype[1].structtype[0].idx 10016 doctype[1].structtype[0].name "grandparent.header" doctype[1].structtype[0].field[0].name "onlygrandparent" doctype[1].structtype[0].field[0].internalid 1456982690 -doctype[1].structtype[0].field[0].type 10003 +doctype[1].structtype[0].field[0].type 10007 doctype[1].structtype[0].field[1].name "overridden" doctype[1].structtype[0].field[1].internalid 1314355415 -doctype[1].structtype[0].field[1].type 10003 +doctype[1].structtype[0].field[1].type 10007 doctype[2].name "mother" doctype[2].idx 10017 doctype[2].inherits[0].idx 10015 @@ -65,10 +65,10 @@ doctype[2].structtype[0].idx 10018 doctype[2].structtype[0].name "mother.header" doctype[2].structtype[0].field[0].name "onlymother" doctype[2].structtype[0].field[0].internalid 1390999339 -doctype[2].structtype[0].field[0].type 10005 +doctype[2].structtype[0].field[0].type 10012 doctype[2].structtype[0].field[1].name "overridden" doctype[2].structtype[0].field[1].internalid 1314355415 -doctype[2].structtype[0].field[1].type 10003 +doctype[2].structtype[0].field[1].type 10007 doctype[3].name "father" doctype[3].idx 10019 doctype[3].inherits[0].idx 10015 @@ -81,10 +81,10 @@ doctype[3].structtype[0].idx 10020 doctype[3].structtype[0].name "father.header" doctype[3].structtype[0].field[0].name "onlyfather" doctype[3].structtype[0].field[0].internalid 1083094308 -doctype[3].structtype[0].field[0].type 10005 +doctype[3].structtype[0].field[0].type 10012 doctype[3].structtype[0].field[1].name "overridden" doctype[3].structtype[0].field[1].internalid 1314355415 -doctype[3].structtype[0].field[1].type 10003 +doctype[3].structtype[0].field[1].type 10007 doctype[4].name "child" doctype[4].idx 10021 doctype[4].inherits[0].idx 10000 @@ -100,7 +100,7 @@ doctype[4].structtype[0].idx 10022 doctype[4].structtype[0].name "child.header" doctype[4].structtype[0].field[0].name "onlychild" doctype[4].structtype[0].field[0].internalid 1737375598 -doctype[4].structtype[0].field[0].type 10005 +doctype[4].structtype[0].field[0].type 10012 doctype[4].structtype[0].field[1].name "overridden" doctype[4].structtype[0].field[1].internalid 1314355415 -doctype[4].structtype[0].field[1].type 10003 +doctype[4].structtype[0].field[1].type 10007 diff --git a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg index cc76fe939b0..f4398e59f0f 100644 --- a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg @@ -4,41 +4,41 @@ doctype[0].name "document" doctype[0].idx 10000 doctype[0].contentstruct 10001 doctype[0].primitivetype[0].idx 10002 -doctype[0].primitivetype[0].name "byte" +doctype[0].primitivetype[0].name "bool" doctype[0].primitivetype[1].idx 10003 -doctype[0].primitivetype[1].name "int" +doctype[0].primitivetype[1].name "byte" doctype[0].primitivetype[2].idx 10004 -doctype[0].primitivetype[2].name "long" +doctype[0].primitivetype[2].name "double" doctype[0].primitivetype[3].idx 10005 -doctype[0].primitivetype[3].name "string" +doctype[0].primitivetype[3].name "float" doctype[0].primitivetype[4].idx 10006 -doctype[0].primitivetype[4].name "raw" -doctype[0].primitivetype[5].idx 10008 -doctype[0].primitivetype[5].name "float" -doctype[0].primitivetype[6].idx 10009 -doctype[0].primitivetype[6].name "double" -doctype[0].primitivetype[7].idx 10011 -doctype[0].primitivetype[7].name "uri" -doctype[0].primitivetype[8].idx 10012 -doctype[0].primitivetype[8].name "predicate" -doctype[0].primitivetype[9].idx 10013 -doctype[0].primitivetype[9].name "bool" +doctype[0].primitivetype[4].name "float16" +doctype[0].primitivetype[5].idx 10007 +doctype[0].primitivetype[5].name "int" +doctype[0].primitivetype[6].idx 10008 +doctype[0].primitivetype[6].name "long" +doctype[0].primitivetype[7].idx 10010 +doctype[0].primitivetype[7].name "predicate" +doctype[0].primitivetype[8].idx 10011 +doctype[0].primitivetype[8].name "raw" +doctype[0].primitivetype[9].idx 10012 +doctype[0].primitivetype[9].name "string" doctype[0].primitivetype[10].idx 10014 -doctype[0].primitivetype[10].name "float16" -doctype[0].wsettype[0].idx 10007 -doctype[0].wsettype[0].elementtype 10005 +doctype[0].primitivetype[10].name "uri" +doctype[0].wsettype[0].idx 10013 +doctype[0].wsettype[0].elementtype 10012 doctype[0].wsettype[0].createifnonexistent true doctype[0].wsettype[0].removeifzero true doctype[0].structtype[0].idx 10001 doctype[0].structtype[0].name "document.header" -doctype[0].structtype[1].idx 10010 +doctype[0].structtype[1].idx 10009 doctype[0].structtype[1].name "position" doctype[0].structtype[1].field[0].name "x" doctype[0].structtype[1].field[0].internalid 914677694 -doctype[0].structtype[1].field[0].type 10003 +doctype[0].structtype[1].field[0].type 10007 doctype[0].structtype[1].field[1].name "y" doctype[0].structtype[1].field[1].internalid 900009410 -doctype[0].structtype[1].field[1].type 10003 +doctype[0].structtype[1].field[1].type 10007 doctype[1].name "grandparent" doctype[1].idx 10015 doctype[1].inherits[0].idx 10000 @@ -49,7 +49,7 @@ doctype[1].structtype[1].idx 10017 doctype[1].structtype[1].name "grandparent_struct" doctype[1].structtype[1].field[0].name "grandparent_field" doctype[1].structtype[1].field[0].internalid 18801796 -doctype[1].structtype[1].field[0].type 10005 +doctype[1].structtype[1].field[0].type 10012 doctype[2].name "parent" doctype[2].idx 10018 doctype[2].inherits[0].idx 10015 diff --git a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg index 3c7280094be..1363453017f 100644 --- a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg @@ -4,41 +4,41 @@ doctype[0].name "document" doctype[0].idx 10000 doctype[0].contentstruct 10001 doctype[0].primitivetype[0].idx 10002 -doctype[0].primitivetype[0].name "byte" +doctype[0].primitivetype[0].name "bool" doctype[0].primitivetype[1].idx 10003 -doctype[0].primitivetype[1].name "int" +doctype[0].primitivetype[1].name "byte" doctype[0].primitivetype[2].idx 10004 -doctype[0].primitivetype[2].name "long" +doctype[0].primitivetype[2].name "double" doctype[0].primitivetype[3].idx 10005 -doctype[0].primitivetype[3].name "string" +doctype[0].primitivetype[3].name "float" doctype[0].primitivetype[4].idx 10006 -doctype[0].primitivetype[4].name "raw" -doctype[0].primitivetype[5].idx 10008 -doctype[0].primitivetype[5].name "float" -doctype[0].primitivetype[6].idx 10009 -doctype[0].primitivetype[6].name "double" -doctype[0].primitivetype[7].idx 10011 -doctype[0].primitivetype[7].name "uri" -doctype[0].primitivetype[8].idx 10012 -doctype[0].primitivetype[8].name "predicate" -doctype[0].primitivetype[9].idx 10013 -doctype[0].primitivetype[9].name "bool" +doctype[0].primitivetype[4].name "float16" +doctype[0].primitivetype[5].idx 10007 +doctype[0].primitivetype[5].name "int" +doctype[0].primitivetype[6].idx 10008 +doctype[0].primitivetype[6].name "long" +doctype[0].primitivetype[7].idx 10010 +doctype[0].primitivetype[7].name "predicate" +doctype[0].primitivetype[8].idx 10011 +doctype[0].primitivetype[8].name "raw" +doctype[0].primitivetype[9].idx 10012 +doctype[0].primitivetype[9].name "string" doctype[0].primitivetype[10].idx 10014 -doctype[0].primitivetype[10].name "float16" -doctype[0].wsettype[0].idx 10007 -doctype[0].wsettype[0].elementtype 10005 +doctype[0].primitivetype[10].name "uri" +doctype[0].wsettype[0].idx 10013 +doctype[0].wsettype[0].elementtype 10012 doctype[0].wsettype[0].createifnonexistent true doctype[0].wsettype[0].removeifzero true doctype[0].structtype[0].idx 10001 doctype[0].structtype[0].name "document.header" -doctype[0].structtype[1].idx 10010 +doctype[0].structtype[1].idx 10009 doctype[0].structtype[1].name "position" doctype[0].structtype[1].field[0].name "x" doctype[0].structtype[1].field[0].internalid 914677694 -doctype[0].structtype[1].field[0].type 10003 +doctype[0].structtype[1].field[0].type 10007 doctype[0].structtype[1].field[1].name "y" doctype[0].structtype[1].field[1].internalid 900009410 -doctype[0].structtype[1].field[1].type 10003 +doctype[0].structtype[1].field[1].type 10007 doctype[1].name "parent" doctype[1].idx 10015 doctype[1].inherits[0].idx 10000 @@ -48,15 +48,15 @@ doctype[1].structtype[0].idx 10016 doctype[1].structtype[0].name "parent.header" doctype[1].structtype[0].field[0].name "weight_src" doctype[1].structtype[0].field[0].internalid 1225660233 -doctype[1].structtype[0].field[0].type 10008 +doctype[1].structtype[0].field[0].type 10005 doctype[1].structtype[0].field[1].name "weight" doctype[1].structtype[0].field[1].internalid 1001392207 -doctype[1].structtype[0].field[1].type 10008 +doctype[1].structtype[0].field[1].type 10005 doctype[1].structtype[1].idx 10017 doctype[1].structtype[1].name "parent_struct" doctype[1].structtype[1].field[0].name "parent_field" doctype[1].structtype[1].field[0].internalid 933533022 -doctype[1].structtype[1].field[0].type 10005 +doctype[1].structtype[1].field[0].type 10012 doctype[2].name "child" doctype[2].idx 10018 doctype[2].inherits[0].idx 10000 diff --git a/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg b/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg index a7a4c675311..ea56800ea1c 100644 --- a/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg +++ b/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg @@ -4,41 +4,41 @@ doctype[0].name "document" doctype[0].idx 10000 doctype[0].contentstruct 10001 doctype[0].primitivetype[0].idx 10002 -doctype[0].primitivetype[0].name "byte" +doctype[0].primitivetype[0].name "bool" doctype[0].primitivetype[1].idx 10003 -doctype[0].primitivetype[1].name "int" +doctype[0].primitivetype[1].name "byte" doctype[0].primitivetype[2].idx 10004 -doctype[0].primitivetype[2].name "long" +doctype[0].primitivetype[2].name "double" doctype[0].primitivetype[3].idx 10005 -doctype[0].primitivetype[3].name "string" +doctype[0].primitivetype[3].name "float" doctype[0].primitivetype[4].idx 10006 -doctype[0].primitivetype[4].name "raw" -doctype[0].primitivetype[5].idx 10008 -doctype[0].primitivetype[5].name "float" -doctype[0].primitivetype[6].idx 10009 -doctype[0].primitivetype[6].name "double" -doctype[0].primitivetype[7].idx 10011 -doctype[0].primitivetype[7].name "uri" -doctype[0].primitivetype[8].idx 10012 -doctype[0].primitivetype[8].name "predicate" -doctype[0].primitivetype[9].idx 10013 -doctype[0].primitivetype[9].name "bool" +doctype[0].primitivetype[4].name "float16" +doctype[0].primitivetype[5].idx 10007 +doctype[0].primitivetype[5].name "int" +doctype[0].primitivetype[6].idx 10008 +doctype[0].primitivetype[6].name "long" +doctype[0].primitivetype[7].idx 10010 +doctype[0].primitivetype[7].name "predicate" +doctype[0].primitivetype[8].idx 10011 +doctype[0].primitivetype[8].name "raw" +doctype[0].primitivetype[9].idx 10012 +doctype[0].primitivetype[9].name "string" doctype[0].primitivetype[10].idx 10014 -doctype[0].primitivetype[10].name "float16" -doctype[0].wsettype[0].idx 10007 -doctype[0].wsettype[0].elementtype 10005 +doctype[0].primitivetype[10].name "uri" +doctype[0].wsettype[0].idx 10013 +doctype[0].wsettype[0].elementtype 10012 doctype[0].wsettype[0].createifnonexistent true doctype[0].wsettype[0].removeifzero true doctype[0].structtype[0].idx 10001 doctype[0].structtype[0].name "document.header" -doctype[0].structtype[1].idx 10010 +doctype[0].structtype[1].idx 10009 doctype[0].structtype[1].name "position" doctype[0].structtype[1].field[0].name "x" doctype[0].structtype[1].field[0].internalid 914677694 -doctype[0].structtype[1].field[0].type 10003 +doctype[0].structtype[1].field[0].type 10007 doctype[0].structtype[1].field[1].name "y" doctype[0].structtype[1].field[1].internalid 900009410 -doctype[0].structtype[1].field[1].type 10003 +doctype[0].structtype[1].field[1].type 10007 doctype[1].name "book" doctype[1].idx 10015 doctype[1].inherits[0].idx 10000 @@ -60,10 +60,10 @@ doctype[2].structtype[0].idx 10018 doctype[2].structtype[0].name "music.header" doctype[2].structtype[0].field[0].name "intfield" doctype[2].structtype[0].field[0].internalid 435380425 -doctype[2].structtype[0].field[0].type 10003 +doctype[2].structtype[0].field[0].type 10007 doctype[2].structtype[0].field[1].name "stringfield" doctype[2].structtype[0].field[1].internalid 1182460484 -doctype[2].structtype[0].field[1].type 10005 +doctype[2].structtype[0].field[1].type 10012 doctype[2].structtype[0].field[2].name "longfield" doctype[2].structtype[0].field[2].internalid 1589309697 -doctype[2].structtype[0].field[2].type 10004 +doctype[2].structtype[0].field[2].type 10008 |