summaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-09 19:30:46 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-09 19:30:46 +0000
commit3ca903a8e464d74216bb08490af0bb5a1ff633a0 (patch)
tree54b3e5fb49cdbe8c1c36d40bd71fd20dbc66975f /config-model/src
parent484d935f900430ae871f21dbc7c8014971151094 (diff)
sort to make generated config more predictable
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java18
-rw-r--r--config-model/src/test/derived/inheritance/documentmanager.cfg58
-rw-r--r--config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg44
-rw-r--r--config-model/src/test/derived/inheritfromparent/documentmanager.cfg48
-rw-r--r--config-model/src/test/examples/fieldoftypedocument-doctypes.cfg48
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