From a7bbb22c377f645981da6e2aa145c4f2525948c3 Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Mon, 14 Mar 2022 14:08:58 +0000 Subject: Revert "ensure unique ReferenceDataType instances" This reverts commit 994196c5354c02f40c223cf4fe3388aba09ea020. --- .../java/com/yahoo/documentmodel/NewDocumentType.java | 16 ---------------- .../com/yahoo/searchdefinition/DocumentModelBuilder.java | 13 +++++++++++-- .../references/documentmanager_refs_to_same_type.cfg | 8 +++++--- 3 files changed, 16 insertions(+), 21 deletions(-) (limited to 'config-model') 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" -- cgit v1.2.3