summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-02-02 20:47:38 +0100
committerGitHub <noreply@github.com>2020-02-02 20:47:38 +0100
commit2d9e0965bd2fb10cbf5ffd47fa55a98aea5710b3 (patch)
tree2051e781b2a94083341681d74bbb5fa4a7e3a51e /container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
parent99f3a7193090cfcd6b5fdbbe612f53d892f9d86b (diff)
Revert "Allow extension of implicitly ref'ed query profile types"
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java68
1 files changed, 19 insertions, 49 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
index e3696916c53..07c9e4475ec 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
@@ -6,7 +6,6 @@ import com.google.common.collect.ImmutableMap;
import com.yahoo.component.ComponentId;
import com.yahoo.component.provider.FreezableSimpleComponent;
import com.yahoo.processing.request.CompoundName;
-import com.yahoo.search.query.profile.OverridableQueryProfile;
import com.yahoo.search.query.profile.QueryProfile;
import java.util.ArrayList;
@@ -24,8 +23,6 @@ import static com.yahoo.text.Lowercase.toLowerCase;
*/
public class QueryProfileType extends FreezableSimpleComponent {
- private static final String simpleClassName = QueryProfileType.class.getSimpleName();
-
private final CompoundName componentIdAsCompoundName;
/** The fields of this query profile type */
private Map<String, FieldDescription> fields;
@@ -220,38 +217,25 @@ public class QueryProfileType extends FreezableSimpleComponent {
/** Returns the type of the given query profile type declared as a field in this */
public QueryProfileType getType(String localName) {
- FieldDescription fieldDescription = getField(localName);
- if (fieldDescription == null) return null;
+ FieldDescription fieldDescription=getField(localName);
+ if (fieldDescription ==null) return null;
if ( ! (fieldDescription.getType() instanceof QueryProfileFieldType)) return null;
return ((QueryProfileFieldType) fieldDescription.getType()).getQueryProfileType();
}
- /** Returns the field type of the given name under this, of null if none */
- public FieldType getFieldType(CompoundName name) {
- FieldDescription field = getField(name.first());
- if (field == null) return null;
-
- FieldType fieldType = field.getType();
- if (name.size() == 1) return fieldType;
-
- if ( ! (fieldType instanceof QueryProfileFieldType)) return null;
-
- return ((QueryProfileFieldType)fieldType).getQueryProfileType().getFieldType(name.rest());
- }
-
/**
* Returns the description of the field with the given name in this type or an inherited type
* (depth first left to right search). Returns null if the field is not defined in this or an inherited profile.
*/
public FieldDescription getField(String name) {
- FieldDescription field = fields.get(name);
- if ( field != null ) return field;
+ FieldDescription field=fields.get(name);
+ if ( field!=null ) return field;
if ( isFrozen() ) return null; // Inherited are collapsed into this
for (QueryProfileType inheritedType : this.inherited() ) {
- field = inheritedType.getField(name);
- if (field != null) return field;
+ field=inheritedType.getField(name);
+ if (field!=null) return field;
}
return null;
@@ -292,7 +276,7 @@ public class QueryProfileType extends FreezableSimpleComponent {
// Add (/to) a query profile type containing the rest of the name.
// (we do not need the field description settings for intermediate query profile types
// as the leaf entry will enforce them)
- QueryProfileType type = extendOrCreateQueryProfileType(name.first(), registry);
+ QueryProfileType type = getOrCreateQueryProfileType(name.first(), registry);
type.addField(fieldDescription.withName(name.rest()), registry);
}
else {
@@ -304,40 +288,27 @@ public class QueryProfileType extends FreezableSimpleComponent {
addAlias(alias, fieldDescription.getName());
}
- private QueryProfileType extendOrCreateQueryProfileType(String name, QueryProfileTypeRegistry registry) {
- QueryProfileType type = null;
+ private QueryProfileType getOrCreateQueryProfileType(String name, QueryProfileTypeRegistry registry) {
FieldDescription fieldDescription = getField(name);
if (fieldDescription != null) {
- if ( ! (fieldDescription.getType() instanceof QueryProfileFieldType))
+ if ( ! ( fieldDescription.getType() instanceof QueryProfileFieldType))
throw new IllegalArgumentException("Cannot use name '" + name + "' as a prefix because it is " +
"already a " + fieldDescription.getType());
QueryProfileFieldType fieldType = (QueryProfileFieldType) fieldDescription.getType();
- type = fieldType.getQueryProfileType();
- }
-
- if (type == null) {
- type = registry.getComponent(name);
- if (type != null) { // found in registry but not already added in this type: extend it
- type = new QueryProfileType(ComponentId.createAnonymousComponentId(type.getIdString()),
- new HashMap<>(),
- List.of(type));
+ QueryProfileType type = fieldType.getQueryProfileType();
+ if (type == null) { // an as-yet untyped reference; add type
+ type = new QueryProfileType(name);
+ registry.register(type.getId(), type);
+ fields.put(name, fieldDescription.withType(new QueryProfileFieldType(type)));
}
- }
-
- if (type == null) { // create it
- type = new QueryProfileType(ComponentId.createAnonymousComponentId(name));
- }
-
- if (fieldDescription == null) {
- fieldDescription = new FieldDescription(name, new QueryProfileFieldType(type));
+ return type;
}
else {
- fieldDescription = fieldDescription.withType(new QueryProfileFieldType(type));
+ QueryProfileType type = new QueryProfileType(name);
+ registry.register(type.getId(), type);
+ fields.put(name, new FieldDescription(name, new QueryProfileFieldType(type)));
+ return type;
}
-
- registry.register(type);
- fields.put(name, fieldDescription);
- return type;
}
private void addAlias(String alias, String field) {
@@ -391,7 +362,6 @@ public class QueryProfileType extends FreezableSimpleComponent {
return other.getId().equals(this.getId());
}
- @Override
public String toString() {
return "query profile type '" + getId() + "'";
}