summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-14 14:08:58 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-14 14:08:58 +0000
commita7bbb22c377f645981da6e2aa145c4f2525948c3 (patch)
treeaf490471e05c1b1ff6752179dadf4655ad10f7a3 /config-model
parent5e0381311287094dc2f47310fe246b17d46071e9 (diff)
Revert "ensure unique ReferenceDataType instances"
This reverts commit 994196c5354c02f40c223cf4fe3388aba09ea020.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java16
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java13
-rw-r--r--config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg8
3 files changed, 16 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
index 4ff54d7ff1c..d98869e9dd3 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
@@ -4,10 +4,8 @@ package com.yahoo.documentmodel;
import com.yahoo.document.DataType;
import com.yahoo.document.Document;
import com.yahoo.document.Field;
-import com.yahoo.document.ReferenceDataType;
import com.yahoo.document.StructDataType;
import com.yahoo.document.StructuredDataType;
-import com.yahoo.document.TemporaryStructuredDataType;
import com.yahoo.document.annotation.AnnotationType;
import com.yahoo.document.annotation.AnnotationTypeRegistry;
import com.yahoo.document.datatypes.FieldValue;
@@ -385,18 +383,4 @@ public final class NewDocumentType extends StructuredDataType implements DataTyp
}
- private ReferenceDataType refToThis = null;
-
- @SuppressWarnings("deprecation")
- public ReferenceDataType getReferenceDataType() {
- if (refToThis == null) {
- // super ugly, the APIs for this are horribly inconsistent
- var tmptmp = TemporaryStructuredDataType.create(getName());
- var tmp = ReferenceDataType.createWithInferredId(tmptmp);
- tmp.setTargetType((StructuredDataType) this);
- refToThis = tmp;
- }
- return refToThis;
- }
-
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
index 2d9c81085fe..4a449dc898f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
@@ -292,8 +292,17 @@ public class DocumentModelBuilder {
else if (type instanceof ReferenceDataType) {
ReferenceDataType t = (ReferenceDataType) type;
var tt = t.getTargetType();
- var doc = getDocumentType(docs, tt.getId());
- type = doc.getReferenceDataType();
+ if (tt instanceof TemporaryStructuredDataType) {
+ DataType targetType = resolveTemporariesRecurse(tt, repo, docs, replacements);
+ t.setTargetType((StructuredDataType) targetType);
+ } else if (tt instanceof DocumentType) {
+ DataType targetType = resolveTemporariesRecurse(tt, repo, docs, replacements);
+ // super ugly, the APIs for this are horribly inconsistent
+ var tmptmp = TemporaryStructuredDataType.create(tt.getName());
+ var tmp = new ReferenceDataType(tmptmp, t.getId());
+ tmp.setTargetType((StructuredDataType) targetType);
+ type = tmp;
+ }
}
if (type != original) {
replacements.add(new TypeReplacement(original, type));
diff --git a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
index ef1bb4c5ad4..876ed00d0c4 100644
--- a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
+++ b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg
@@ -47,6 +47,8 @@ doctype[1].fieldsets{[document]}.fields[0] "campaign_ref"
doctype[1].fieldsets{[document]}.fields[1] "other_campaign_ref"
doctype[1].documentref[0].idx 10017
doctype[1].documentref[0].targettype 10018
+doctype[1].documentref[1].idx 10019
+doctype[1].documentref[1].targettype 10018
doctype[1].structtype[0].idx 10016
doctype[1].structtype[0].name "ad.header"
doctype[1].structtype[0].field[0].name "campaign_ref"
@@ -54,10 +56,10 @@ doctype[1].structtype[0].field[0].internalid 23963250
doctype[1].structtype[0].field[0].type 10017
doctype[1].structtype[0].field[1].name "other_campaign_ref"
doctype[1].structtype[0].field[1].internalid 874751172
-doctype[1].structtype[0].field[1].type 10017
+doctype[1].structtype[0].field[1].type 10019
doctype[2].name "campaign"
doctype[2].idx 10018
doctype[2].inherits[0].idx 10000
-doctype[2].contentstruct 10019
-doctype[2].structtype[0].idx 10019
+doctype[2].contentstruct 10020
+doctype[2].structtype[0].idx 10020
doctype[2].structtype[0].name "campaign.header"